一. 创建数据表
1. 创建数据表的语法规则如下:
使用CREATE TABLE创建表时,必须指定以下信息:
- 要创建的表的名称,不区分大小写,不可以使用SQL语言中的关键字;
- 数据表中的每一个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。
note: 比如再创建一个User,则会提示错误,因为表名是不区分大小写的。
2. 使用主键约束
主键,又称为主码,是表中的一列或多列的组合。主键约束(Primary Key Consraint)要求主键列的数据唯一,并且不允许为空。主键能够唯一标识表中的一条数据,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键分为两种类型:单字段主键和多字段联合主键。
(1)单字段主键
可以使用两种方法来创建这种主键:
法一:在定义类的同时指定主键,语法规则如下:
字段名 数据类型 PRIMARY KEY [默认值]
法二:在定义完所有列之后指定主键,语法规则如下:
[CONSTRANT <约束名>] PRIMARY KEY [字段名]
(2)多字段联合主键
语法规则:PRIMARY KEY [字段1,字段2,...,字段n]
note: 不可以在创建列的时候就指定多个primary key。会提示错误:
3. 使用外键约束
外键用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或者多个外键。
外键:首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键的主要作用是保证数据引用的完整性。定义外键后,不允许删除在另一个表中具有关联关系的行。外键的作用是保持数据的一致性、完整性。
主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表;
从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。
创建外键的语法规则如下:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [,字段名2,...] REFERENCES <主表名> 主键列1 [,主键列2,...]
“外键名”为定义的外键约束的名称,一个表中不能有相同名称的外键;“字段名”表示子表需要添加外键约束的字段列;“主表名”即被子表外键所依赖的表的名称;“主键列”表示主表中定义的主键列,或者列组合。
举例1:如果外键是主键
假设有table1和table2
举例2:如果外键不是主键
举例3:references后面的一定要是主键,否则要报错
说明:因为table1中的age并不是主键;
举例4:有两个外键
Note: 还是上面的table1,table2,table3.因为table2和table3都存在外键,和table1关联。倘若直接删除table1的话,就会报错,提示说“Cannot delete or update a parent row: a foreign key constraint fails”。因此,要想删除table1,就必须撤除和它主键间的关联,即消除table2和table3中的外键(依赖table1部分)。或者直接删除table2和table3后,直接删除table1就可以了。
4. 使用非空约束
非空约束指的是字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。
非空约束的语法规则如下:
字段名 数据类型 not null
5. 使用唯一性约束
唯一性约束要求该列唯一,允许为空,但是只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。
唯一性约束的语法规则如下:
(1)在定义完列之后直接指定唯一约束
字段名 数据类型 unique
(2)在定义完所有列之后指定唯一约束
[CONSTRAINT <约束名>] unique (<字段名>)
6. 使用默认约束
默认约束指定某列的默认值。
语法规则如下:
字段名 数据类型 DEFAUTL 默认值
7. 设置表的属性值自动增加
在数据库应用中,经常希望在每次插入新纪录时,系统自动生成字段的主键值。可以通过为表主键添加AUTO_INCREMENT关键字来实现。默认的,在MySql中AUTO_INCREMENT的初始值为1,每新增加一条记录,字段值就自动加1.一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCREMENT约束的字段可以是任何整数类型(TNYINT、SMALLINT等)。
语法规则如下:
字段名 数据类型 AUTO_INCREMENT
note:必须保证自增长的列是主键,否则要报错。
二. 查看数据表结构
可以通过DESCRIBE和SHOW CREATE TABLE语句。
1. 查看表基本结构语句DESCRIBE
2. 查看表详细结构语句SHOW CREATE TABLE
加上G是为了显示结果更加直观。
三. 修改数据表
1. 修改表名
ALTER TABLE <旧表名> RENAME [TO] <新表名>
2. 修改字段的数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
上面的字段名指的是需要修改的字段,数据类型指的是修改后字段的数据类型。
3. 修改字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
4. 添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];
方括号是可选参数。“FIRST”表示将新添加的字段设置为表的第一个字段;“AFTER"是将新添加的字段添加到指定的”已存在字段名“的后面。如果这两个参数没有说明,默认是放在数据表的最后列。
5. 删除字段
ALTER TABLE <表名> DROP <字段名>;
6. 修改字段的排列位置
ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;
比如:
想把b的类型修改了,且放在表的第一行:
7. 修改表的存储引擎
ALTER TABEL <表名> ENGINE <更改后的存储引擎名>
8. 删除表的外键约束
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>
这样,就可以删除user表了。因为person中的外键约束已经取消拉。
四. 删除数据表
1. 删除没有被关联的表
DROP TABLE [IF EXISTS]表1,表2,...表n;
2. 删除被其他表关联的主表
数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败。原因是直接删除,将破坏表的参照完整性。如果必须要删除,可以先删除与它关联的子表,在删除父表。但是,如果想要保留子表,只是需要单独删除父表,只需要将关联的表的外键的约束条件取消,然后就可以删除父表了。正如前面所将的那样。
补充:
1.MySql表创建好后添加外键:
注意:外键名不能重复
参考文献
《Mysql5.7从入门到精通》