标签:专业 dex stun expand modify 其它 key exist inf
分类:六大约束
NOT NULL:非空,用于保证该字段的值不能为空,比如姓名、学号等。
DEFAULT:默认,用于保证该字段有默认的值。
PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空。比如学号、员工编号等。
UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空。比如座位号等。
CHECK:检查约束 【mysql中不支持】。比如年龄,性别。
添加约束的时机:
创建表的时候。
修改表的时候。
注意 :在表中数据添加之前。
约束的添加分类:
列级约束:六大约束语法上都支持,但外键约束没有效果。
表级约束:除了非空和默认 ,其它的都支持。
例子:
CREATE TABLE 表名 ( 字段名 字段类型 列级约束, 字段名 字段类型 , 表级约束 )
创建表时添加约束:
添加列级约束:
语法:直接在字段名和类型后面追加 约束类型即可。只支持:默认 、非空 、 主键 、 唯一。
添加表级约束:
语法:在各个字段的最下面,[ constraint 约束名 ] 约束类型(字段名)。
举个栗子:
#通用的写法 CREATE TABLE IF NOT EXISTS stuinfo( id INT PRIMARY KEY, stuname VARCHAR(20) NOT NULL, gender CHAR(1), age INT DEFAULT 18, seat INT UNIQUE, majorid INT, CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) )
主键 和 唯一的大对比:
保证唯一性 | 是否允许为空 | 一个表中可以有多少个 | 是否允许组合 | |
---|---|---|---|---|
主键 | 可以 | 不允许 | 最多一个 | 可以,但不推荐 |
唯一 | 可以 | 允许(只允许一个为空) | 可以多个 | 可以,但不推荐 |
外键:
要求在从表设置外键关系。
从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求。
主表的关联列必须是一个 key (一般是 主键 或 唯一 )。
插入数据时,先插入主表,再插入从表。
删除数据时,先删除从表,再删除主表。
修改表时添加约束:
添加列级约束:
ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 新约束;
添加表级约束:
ALTER TABLE 表名 ADD [ CONSTRAINT 约束名 ] 约束类型(字段名) [ 外键的引用 ];
添加非空约束: ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
添加默认约束: ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
添加主键: #列级约束 ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
#表级约束 ALTER TABLE stuinfo ADD PRIMARY KEY(id); 添加唯一: #列级约束 ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;
#表级约束 ALTER TABLE stuinfo ADD UNIQUE(seat);
添加外键: ALTER TABLE stuinfo ADD FOREIGN KEY(majorid) REFERENCES major(id);
修改表时删除元素
删除非空约束:
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;
删除默认约束:
ALTER TABLE stuinfo MODIFY COLUMN age INT;
删除主键:
ALTER TABLE stuinfo DROP PRIMARY KEY;
删除唯一:
ALTER TABLE stuinfo DROP INDEX seat;
删除外键:
ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;
标签:专业 dex stun expand modify 其它 key exist inf
原文地址:https://www.cnblogs.com/lililixuefei/p/13269500.html