唯一值约束 (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
指定参照动作, 主表记录做修改, 删除, 从表引用的列会做相应修改, 或不修改, 拒绝修改 或 设为默认值
注意: 引用表的列必须为主键, 且在删除引用表时 必须删除引用从属关系 或 删除当前表.
来源: http://www.bubuko.com/infodetail-3059524.html