数据库表约束
1:约束保证数据的完整性与一致性
2:约束粉尾表级约束和列级约束
3:约束类型
not null
primary key
unique key
default
foreign key
4:创建外键约束的要求
父表和字表必须使用相同的存储引擎
数据表的存储引擎只能是InnoDB
外键列和参照列必须具有相同的数据类型,数字长度与符号位必须相同,字符长度可以不同
s外键列与参照列必须创建索引,如果外键列不存在索引,mysql自动创建
eg:
create table provinces(
id smallint unsigned primary key auto_increment,
pname varchar(16) not null
)engine=InnoDB default character set utf8;
create table users(
id smallint unsigned primary key auto_increment,
username varchar(20) not null,
pid smallint unsigned not null,
foreign key(pid) references provinces(id)
)engine=InnoDB default character set utf8;
外键操作的参照操作
1:CASCADE从父表删除或更新且自动删除或更新字表总的行
2:SET NULL从父表删除或更新行并设置字表中的外键列为NULL,如果使用改选项必须保证字表列没有指定为not null
3:RESTRICT拒绝对父表的删除或更新操作
4:NO ACTION标准的SQL关键字,与RESTRICT相同
create table users1(
id smallint unsigned primary key auto_increment,
username varchar(20) not null,
pid smallint unsigned not null,
foreign key(pid) references provinces(id) on delete CASCADE
)engine=InnoDB default character set utf8;
来源:oschina
链接:https://my.oschina.net/u/1397994/blog/646964