唯一值约束(unique):
一张表 可以有多个列 添加唯一值约束,只能允许一列为空值。
复合唯一性约束unique(sid, kid):
创建 constraint uc_sk unique(sid, kid)
删除 alter table t1 drop index uc_sk
主键约束(primary key):
一张表只能有一列设置为主键,主键唯一 且不能为空,innoDB引擎主键即索引。(唯一值约束 + 非空约束)
当选用innodb存储引擎时,会在主键设置索引,记录存放顺序--索引。
自增主键(auto_increment not null primary key):
添加新纪录时,主键默认为上条记录的 主键值加一。
复合主键 primary key(sid, kid):
check约束 适用于微软的(sql Server)
外键约束:
被引用表的列 必须是 主键、唯一的、不为空,且表的存储引擎 为 innodb
参照动作:cascade(相应操作),restrict(拒绝操作),set null(设为空),no action(不修改),set default(默认值)。
从表语句:
create table score ( sid int not null, mark int, constraint score_fk foreign key(sid) references student(sid) on delete cascade on update cascade )engine=innodb
指定参照动作,主表记录做修改、删除,从表引用的列会做相应修改、或不修改、拒绝修改 或 设为默认值
注意:引用表的列必须为主键,且在删除引用表时 必须删除引用从属关系 或 删除当前表。
创建表 if not exists
CREATE TABLE IF NOT EXISTS `score`( sid int )engine=innodb