MySQL入门:约束

2018-12-06  本文已影响10人  我的袜子都是洞

约束

约束是给表中的数据添加的强制执行的校验规则,被增、删、改的数据必须符合约束条件,查询到的数据才是合理的。

关系型数据库中有5个完整性约束:

非空约束:NOT NULL

值不能为空,列级约束,约束条件写在列的后面,仅对某列有效


非空约束

唯一性约束:UNIQUE

值不能重复,(可以有多个NULLNULL不是值),列级约束、表级约束。
写在列的后面,可以给某一列添加唯一性约束。

唯一性列级约束

也可以写在表的后面,给多列一起做唯一性约束。

唯一性表级约束

说明:idname组合唯一性约束

给组合的约束键起名:

组合的**约束键**起名

主键约束:PRIMARY KEY

值非空且唯一,能够唯一标识该条记录,是列级约束或表级约束。一张表中只能有一个主键。


主键约束

表级约束写法:


表级约束写法

外键约束:FOREIGN KEY

值是另一张表的主键,若有值一定是主键的值。主键表称为主表,使用主键做外键的表成为从表。首先定义主表,然后定义从表。使用外键表必须是innodb引擎。
定义主表:

主表

定义从表:


从表

检查约束:CHECK

MySQL不支持检查约束

自增长

AUTO_INCREMENT,一般用于主键,需要列为数值类型。

默认值

DEAFULT '默认值',设置字段默认值。

索引

一张表对应3个文件:

删除对应文件关系:

删除命令 对应文件
DROP 删除frm,myd,myi
TRUNCATE 删除myi,myd删除了日志信息
DELETE 删除myd在myi文件中保留着索引记录

修改约束

ALTER语句修改约束
添加新列并设置主键:ALTER TABLE 表名 ADD 列名 INT PRIMARY KEY;
删除主键:ALTER TABLE 表名 DROP PRIMARY KEY;
已有列添加主键:ALTER TABLE 表名 ADD PRIMARY KEY(列名);
添加外键:ALTER TABLE 从表名 ADD CONSTRAINT 从表外键名 FOREIGN KEY(从表外键列名) REFERENCES 主表名(主表主键列名);
删除外键:ALTER TABLE 从表名 DROP FOREIGN KEY 外键名 ;

唯一性约束的添加和删除
添加:ALTER TABLE ADD CONSTRAINT 定义的约束名 UNIQUE (列名);
删除:DROP INDEX 定义的约束名 ON 表名
修改:ALTER TABLE 表名 MODIFY 列名 列类型;

默认值的添加和删除
添加:ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 默认值;
删除:ALTER TABLE 表名 ALTER COLUMN 列名 DROP DEFAULT;

上一篇下一篇

猜你喜欢

热点阅读