- 概念
约束:对表中数据进行限定,确保表中数据的正确性、有效性和完整性。
- 分类
- 主键约束(PRIMARY KEY)
值非空且唯一
一张表只能有一个字段为主键
删除主键约束:
ALTER TABLE 表名 DROP PRIMARY KEY;
添加主键约束:
ALTER TABLE 表名 MODIFY 字段名 数据类型 PRIMARY KEY;
*自动增长(AUTO_INCREMENT):一般配合主键使用
ALTER TABLE 表名 MODIFY id INT;
LTER TABLE 表名 MODIFY id INT AUTO_INCREMENT;
- 非空约束(NOT NULL)
值不能为空
删除非空约束:
ALTER TABLE 表名 MODIFY 字段名 数据类型 ;
添加非空约束:
ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;
- 唯一约束(UNIQUE)
值必须是唯一的
删除唯一约束:
ALTER TABLE 表名 DROP INDEX 字段名 ;
添加唯一约束:
ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;
- 外键约束(FORGINE KEY)
让表之间产生关系,保证数据的正确性;
减少数据库中的冗余数据;
删除外键约束:
ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名 ;
添加外键约束:
ALTER TABLE 表名 ADD CONSTRAINT 外键约束名 FOREIGN KEY (外键字段名) REFERENCES 约束父表名(父表相关字段名[一般选择主键]);
*级联操作:
当外键约束时 我们希望对父表关联字段的操作能更新至关联表的外键字段,我们选择添加关联字段。实际开发过程中需谨慎使用,该操作极大影响数据库的性能和安全。
ALTER TABLE 表名 ADD CONSTRAINT 外键约束名 FOREIGN KEY (外键字段名) REFERENCES 约束父表名(父表相关字段名[一般选择主键]) 操作关键字;
操作关键字:ON UPDATE CASCADE --级联更新
ON DELETE CASCADE --级联删除
- 创建表单时添加各类约束代码demo
CREATE TABLE employee(
id INT PRIMARY KEY AUTO_INCREMENT, --设置id字段为主键且其值自动累加
name VARCHER(20) NOT NULL,
telephone INT(11) UNIQUE,
dep_id INT, --外键,注意别忘了逗号
CONSTRAINT emp_dep_fk FOREIGN KEY (dep_id) REFERENCES department(id) --department为另一部门数据表,其主键为id
);