实施数据完整性
关系数据完整性规则包括三部分内容:实体完整性规则、参照完整性规则和用户自定义完性规则。
(1)实体完整性规则。
实体完整性规定主键取值不能重复主属性不能为空值 (NULL),即构成主键的字段都不能为NULL。
说明:空值是数据库中的一个特殊值,表示“不知道”“不确定”的意思,不等于数值 0 也不等于空串。
(2) 参照完整性规则。
参照完整性规定外键的取值必须等于被参照表的主键的某个值,或者取空值。说明:当外键为主属性,即构成主键的字段时,不允许取空值。否则,就违反了实体完整性规则。
(3)用户自定义完整性规则。
用户自定义完整性指根据具体的语义要求,使字段取值满足某种条件或函数要求
1 六种约束
主键约束 primary key 表级 primary key(pk_1,pk_2),foreign key
外键约束 foreign key 表级 格式: foreign key(外键) references 父表名(被参照的字段名)
唯一约束 unique
非空约束 not null 列级
默认约束 default 列级
检查约束 check
分成两种
(1) 列级 : NOT NULL, DEFAULT
(2) 表级 : primary key(pk_1,pk_2) ,foreign key
2 创建表时添加主键约束,外键约束,唯一约束,和检查约束,语法格式
alter table 表名 ADD [CONSTRAINT 约束名]
PRIMARY KEY(字段名) | FOREIGN KEY(字段名) REFERENCES 父表名(字段名) | UNIQUE(字段名) | CHECK(表达式);
3 创建一个带自增列做主键的 表 AUTO_INCREMENT
4 删除约束
删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY;
主键约束名用dshow create table 表名
删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
删除唯一约束
ALTER TABLE 表名 DROP key 列名;
注: 创建唯一约束时,约束名默认为约束名
删除检查约束
ALTER TABLE 表名 DROP CHECK 约束名;
添加或删除非空约束和默认约束用 ALTER TABLE ... MODIFY
ALTER TABLE 表名 MODIFY 字段名 数据类型;
5.删除约束(博主自己又总结了一下)
先删外键,再删主键;
(1)删外键:ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
注:外键约束名通过SHOW CREATE TABLE 表名 查;
(2)删主键:ALTER TABLE 表名DROP KEY 列名;
(3)删唯一约束:ALTER TABLE 表名 DROP KEY 列名;
注:创建唯一约束时,约束名默认为列名
(4)删除检查约束:ALTER TABLE 表名 DROP CHECK 约束名;
注:检查约束名通过SHOW CREATE TABLE 表名 查;
(5)删除默认值:ALTER TABLE 表名 MDODIFY 字段 字段类型;
(6)删除非空约束:ALTER TABLE 表名 MODIFY 字段 字段类型;