ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

数据MySQL基础入门

数据MySQL基础入门

一、数据库的基本操作

1、查看当前所有存在的数据库

SHOW DATABASES;

2、创建数据库

CREATE DATABASE 【数据库名】;

CREATE DATABASE test;

3、查看数据库定义

SHOW CREATE DATABASE 【数据库名】;

SHOW CREATE DATABASE test;

4、删除数据库

DROP DATABASE 【数据库名】;

DROP DATABASE test;

二、数据表的基本操作

选择数据库

USE 【数据库名】;

USE test;

(一)创建数据表操作

1、创建数据表

CREATE TABLE <表名> 

 ( 

  字段名1,数据类型 [列级别约束条件] [默认值], 

  字段名2,数据类型 [列级别约束条件] [默认值],

  …… 

  [表级别约束条件]

 );

创建如下表格tb_emp1

字段名称数据类型备注
idint(11)员工编号
namevarchar(25)员工名称
deptIdint(11)所在部门编号
salaryfloat工资
create table tb_emp1
(id INT(11),name VARCHAR(25),deptId INT(11),salary FLOAT
);

2、显示当前数据库下的所有表

SHOW TABLES;

3、主键约束

主键,又称主码,是表中一列或多列的组合。主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空。

主键分为两种类型:单字段主键和多字段联合主键。

(1)单字段主键

主键由一个字段组成,SQL语句格式分为以下两种情况。

①在定义列的同时指定主键,语法规则如下:

字段名 数据类型 PRIMARY KEY [默认值]

定义数据表tb_emp 2,其主键为id,SQL语句如下:

CREATE TABLE tb_emp2
(id int(11) PRIMARY KEY,name VARCHAR(25),deptId int(11),salary FLOAT
);

②在定义完所有列之后指定主键。

[CONSTRAINT <约束名>] PRIMARY KEY [字段名]

定义数据表tb_emp 3,其主键为id,SQL语句如下:

create table tb_emp3
(id int(11),name VARCHAR(25),deptId int(11),salary float,PRIMARY KEY(id)
);

上述两个例子执行后的结果是一样的,都会在id字段上设置主键约束。

(2)多字段联合主键

主键由多个字段联合组成,语法规则如下:

PRIMARY KEY [字段1, 字段2,. . ., 字段n]

定义数据表tb_emp4,假设表中间没有主键id,为了唯一确定一个员工,可以把name、deptId联合起来作为主键,SQL语句如下:

create table tb_emp4
(name VARCHAR(25),deptId int(11),salary FLOAT,PRIMARY KEY(name,deptId)
);

4、外键约束

外键用来在两个表的数据之间建立连接,可以是一列或者多列。一个表可以有一个或多个外键。一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。

定义外键后,不允许删除在另一个表中具有关联关系的行。

主表(父表):相关联字段中主键所在的那个表即是主表。

从表(子表):相关联字段中外键所在的那个表即是从表。

例如,部门表tb_dept的主键是id,在员工表tb_emp5中有一个键deptId与这个id关联。

创建外键的语法规则如下:

[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [ ,字段名2,…] REFERENCES <主表名> 主键列1 [ ,主键列2,…]

“外键名”为定义的外键约束的名称,一个表中不能有相同名称的外键;

“字段名”表示子表需要添加外键约束的字段列;

“主表名”即被子表外键所依赖的表的名称;

“主键列”表示主表中定义的主键列,或者列组合。

定义数据表tb_emp5,并在tb_emp5表上创建外键约束。创建一个部门表tb_dept1。

表结构如表所示。

字段名称数据类型备注
idINT(11)部门编号

name

VARCHAR(22)部门名称
locationVARCHAR(50)部门位置

SQL语句如下:

create table tb_dept1
(id int(11) PRIMARY KEY,name varchar(22) not null,location varchar(50)
);

定义数据表tb_emp5,让它的键deptId作为外键关联到tb_dept1的主键id,SQL语句为:

create table tb_emp5
(id int(11) PRIMARY KEY,name VARCHAR(25),deptId int(11),salary FLOAT,constraint fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
);

以上语句执行成功之后,在表tb_emp5上添加了名称为fk_emp_dept1的外键约束,外键名称为deptId,其依赖于表tb_dept1的主键id。

5、非空约束

非空约束(Not Null Constraint)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。非空约束的语法规则如下:

字段名 数据类型 not null

定义数据表tb_emp6,指定员工的名称不能为空,SQL语句如下:

create table tb_emp6
(id int(11) PRIMARY KEY,name VARCHAR(25) NOT NULL,deptId int(11),salary FLOAT
);

执行后,在tb_emp6中创建了一个name字段,其插入值不能为空(NOT NULL)。

6、唯一性约束

唯一性约束(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。

唯一性约束的语法规则如下:

(1)在定义完列之后直接指定唯一约束,语法规则如下:

字段名 数据类型 UNIQUE

定义数据表tb_dept2,指定部门的名称唯一,SQL语句如下:

create table tb_dept2
(id int(11) PRIMARY KEY,name VARCHAR(25) UNIQUE,location VARCHAR(50)
);

(2)在定义完所有列之后指定唯一约束,语法规则如下:

[CONSTRAINT <约束名>] UNIQUE(<字段名>)

定义数据表tb_dept3,指定部门的名称唯一,SQL语句如下:

create table tb_dept3
(id int(11) PRIMARY KEY,name VARCHAR(25),location VARCHAR(50),CONSTRAINT STH UNIQUE(name)
);

UNIQUE和PRIMARY KEY的区别:一个表中可以有多个字段声明为UNIQUE,但只能有一个PRIMARY KEY声明;声明为PRIMAY KEY的列不允许有空值,但是声明为UNIQUE的字段允许空值(NULL)的存在。

7、默认约束

默认约束(Default Constraint)指定某列的默认值。如男性同学较多,性别就可以默认为‘男’。如果插入一条新的记录时没有为这个字段赋值,那么系统会自动为这个字段赋值为‘男’。默认约束的语法规则如下:

字段名 数据类型 DEFAULT 默认值

定义数据表tb_emp7,指定员工的部门编号默认为1111,SQL语句如下:

create table tb_emp7
(id int(11) PRIMARY KEY,name VARCHAR(25) NOT NULL,deptId int(11) DEFAULT 1111,salary FLOAT
);

以上语句执行成功之后,表tb_emp7上的字段deptId拥有了一个默认的值1111,新插入的记录如果没有指定部门编号,则默认都为1111。

8、设置表的属性值自动增加

在数据库应用中,经常希望在每次插入新记录时,系统自动生成字段的主键值。可以通过为表主键添加AUTO_INCREMENT关键字来实现。默认的,在MySQL中AUTO_INCREMENT的初始值是1,每新增一条记录,字段值自动加1。一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLIN、INT、BIGINT等)。设置表的属性值自动增加的语法规则如下:

字段名 数据类型 AUTO_INCREMENT

定义数据表tb_emp8,指定员工的编号自动递增,SQL语句如下:

create table tb_emp8
(id int(11) PRIMARY KEY AUTO_INCREMENT,name VARCHAR(25) NOT NULL,deptId int(11),salary FLOAT
);

上述例子执行后,会创建名称为tb_emp8的数据表。表tb_emp8中的id字段的值在添加记录的时候会自动增加,在插入记录的时候,默认的自增字段id的值从1开始,每次添加一条新记录,该值自动加1。

(二)查看表结构

1、查看表基本结构语句

DESCRIBE/DESC语句可以查看表的字段信息,其中包括字段名、字段数据类型、是否为主键、是否有默认值等。语法规则如下:

DESCRIBE 表名;

另外还可以简写:

DESC 表名;

那我们用命令查看创建的tb_dept1和tb_emp1的表结构。

查看tb_dept1表结构,SQL语句如下:

DESC tb_dept1;

那各个字段,都有什么含义呢?

● NULL:表示该列是否可以存储NULL值。

● Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。

● Default:表示该列是否有默认值,有的话指定值是多少。

● Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

2、查看表详细结构语句

SHOW CREATE TABLE语句可以用来显示创建表时的CREATE TABLE语句,语法格式如下:

SHOW CREATE TABLE <表名\G>;

加上参数‘\G’之后,可使显示结果更加直观,易于查看。

查看表tb_emp1的详细信息,SQL语句如下:

SHOW CREATE TABLE tb_emp1;

通过以上两个命令,就可以查看表结构的详细信息,方便我们去检查或确认创建的表是否符合要求。

(三)修改数据表

1、修改表名

通过ALTER TABLE语句来实现表名的修改的,具体的语法规则如下:

ALTER TABLE <旧表名> RENAME [TO] <新表名>;

其中,TO为可选参数,使用与否均不影响结果。

将数据表tb_dept3改名为tb_deptment3。

ALTER TABLE tb_dept3 RENAME tb_deptment3;

2、修改字段的数据类型

修改字段的数据类型,就是把字段的数据类型转换成另一种数据类型。语法规则如下:

ALTER TABLE <表名> MODIFY <字段名> <数据类型>

“表名”指要修改数据类型的字段所在表的名称,

“字段名”指需要修改的字段,

“数据类型”指修改后字段的新数据类型。

将数据表tb_dept1中name字段的数据类型由VARCHAR(22)修改成VARCHAR(30)。

ALTER TABLE tb_dept1 MODIFY name VARCHAR(30);

3、修改字段名

修改表字段名的语法规则如下:

ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

“旧字段名”指修改前的字段名;

“新字段名”指修改后的字段名;

“新数据类型”指修改后的数据类型,如果不需要修改字段的数据类型,将新数据类型设置成与原来一样即可,但数据类型不能为空。

将数据表tb_dept1中的字段 location 改为loc,数据类型保持不变。SQL语句如下:

ALTER TABLE tb_dept1 CHANGE location loc VARCHAR(50);

4、添加字段

有时候可能在已经存在的表中添加新字段。一个完整字段包括字段名、数据类型、完整性约束。添加字段的语法格式如下:

ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在字段名];

新字段名为需要添加的字段的名称;

“FIRST”、AFTER”为可选参数,不使用这两个参数时,默认新增字段为表的最后一列。FIRST是将新添加的字段设置为表的第一个字段;AFTER是将新添加的字段添加到指定的“已存在字段名”的后面。

(1)添加无完整性约束条件的字段

在数据表tb_dept1中添加一个没有完整性约束的INT类型的字段managerId(部门经理编号),SQL语句如下:

ALTER TABLE tb_dept1 ADD managerID INT(10);
(2)添加有完整性约束条件的字段

在数据表tb_dept1中添加一个不能为空的VARCHAR(12)类型的字段column1,SQL语句如下:

ALTER TABLE tb_dept1 ADD column1 VARCHAR(12) not null;
(3)在表的第一列添加一个字段

在数据表tb_dept1中添加一个INT(11)类型的字段column2,SQL语句如下:

ALTER TABLE tb_dept1 ADD column2 INT(11) FIRST;
(4)在表的指定列之后添加一个字段

在数据表tb_dept1中name列后添加一个INT(11)类型的字段column3,SQL语句如下:

ALTER TABLE tb_dept1 ADD column3 INT(11) AFTER name;

5、删除字段

删除字段是将数据表中的某个字段从表中移除,语法格式如下:

ALTER TABLE <表名> DROP <字段名>;

“字段名”指需要从表中删除的字段的名称。

删除数据表tb_dept1表中的column2字段。SQL语句如下:

ALTER TABLE tb_dept1 DROP column2;

6、修改字段的排列位置

可以通过ALTER TABLE来改变表中字段的相对位置。语法格式如下:

ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;

“字段1”指要修改位置的字段;

“数据类型”指“字段1”的数据类型;

“FIRST”为可选参数,指将“字段1”修改为表的第一个字段;

“AFTER字段2”指将“字段1”插入到“字段2”后面。

(1)修改字段为表的第一个字段

将数据表tb_deptl中的column1字段修改为表的第一个字段,SQL语句如下:

ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) FIRST;
(2)修改字段到表的指定列之后

将数据表tb_dept1中的column1字段插入到loc字段后面,SQL语句如下:

ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) AFTER location;

7、更改表的存储引擎

存储引擎是MySQL中的数据存储在文件或者内存中时采用的不同技术实现。可以根据自己的需要,选择不同的引擎,甚至可以为每一张表选择不同的存储引擎。

MySQL中主要的存储引擎有MyISAM、InnoDB、MEMORY(HEAP)、BDB、FEDERATED等。可以使用“SHOW ENGINES;”语句查看系统支持的存储引擎。

更改表的存储引擎的语法格式如下:

ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;

将数据表tb_deptment3的存储引擎修改为MyISAM。修改前,我们通过命令查看表当前的存储引擎。命令及结果如下:

SHOW CREATE TABLE tb_deptment3\G;

当前存储引擎为InnoDB,接下来修改存储引擎类型,输入如下SQL语句并执行:

ALTER TABLE tb_deptment3 ENGINE=MyISAM;

8、删除表的外键约束

外键一旦删除&#x

返回列表