约束类型
NOT NULL 非空约束: 用于保证字段不能为空
DEFAULT 默认约束: 用于保证字段有默认值
PRIMARY KEY 主键: 用于保证字段值具有唯一性,且不能为空
UNIQUE 唯一: 用于保证字段值具有唯一性, 可以为空
FOREIGN KEY 外键: 用于限制两个表的关系
创建表时添加约束
create table stu(
id INT PRIMARY KEY AUTO_INCREMENT, # 主键约束
s_name VARCHAR(20) NOT NULL, # 非空约束
age TINYINT(3) DEFAULT 18, # 默认约束
phone CHAR(11) UNIQUE # 唯一约束
)
修改表是添加约束
ALTER TABLE stu ADD COLUMN id_card CHAR(18) UNIQUE; # 添加唯一约束
ALTER TABLE stu MODIFY COLUMN age TINYINT DEFAULT 20; # 修改默认值约束
ALTER TABLE stu ADD COLUMN address VARCHAR(100) NOT NULL; # 添加非空约束
ALTER TABLE stu MODIFY COLUMN id INT PRIMARY KEY; # 添加主键约束
ALTER TABLE stu ADD CONSTRAINT [uq_name] UNIQUE(s_sn); # 添加唯一约束 uq_name 约束名称
ALTER TABLE stu ADD CONSTRAINT [pk_name] PRIMARY KEY(id); # 添加主键约束 pk_name 约束名称
ALTER TABLE stu ADD CONSTRAINT [fk_name] FOREIGN KEY(c_id) REFERENCES class(c_id); # 添加外键约束 fk_name外键约束名称 可省略
删除约束
ALTER TABLE stu DROP PRIMARY KEY; # 删除主键
ALTER TABLE stu DROP INDEX [column]; # 删除唯一约束 column 唯一约束所在的列
ALTER TABLE stu DROP INDEX [index_name]; # 删除唯一约束 index_name 唯一约束名称
ALTER TABLE stu DROP INDEX [index_name]; # 删除外键约束 index_name 外键约束名称
ALTER TABLE stu DROP INDEX [column]; # 删除外键约束 column 外键约束所在列
ALTER TABLE stu MODIFY column VARCHAR(30) NULL; # 删除非空约束