Mysql中的SQL约束Constraint有哪几种
作者:加油当当
这篇文章主要介绍了Mysql中的SQL约束Constraint有哪几种,约束是为了使表中的数据有效,常见的约束有非空约束、唯一性约束、主键约束、外键约束、检查约束,需要的朋友可以参考下
常用约束
- 非空约束(not null):约束的字段不能为NULL;只有列级约束,没有表级约束(也就是说,只能约束某个字段值不为空);
- 唯一约束(unique):约束的字段不能重复;既有列级约束,也有表级约束;
- 主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK);既有列级约束,也有表级约束;
- 外键约束(foreign key):...(简称FK);
- 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束;
not null
只有列级约束,没有表级约束(也就是说,只能约束某个字段值不为空);
create table t_student( student_name varchar(25) not null, )
unique
既有列级约束,也有表级约束; unique约束修饰的字段具有唯一性,不能重复。 但可以是NULL,NULL不是值,所以多个NULL不是重复
列级约束
create table t_user( id int, username varchar(255) unique );
多个字段联合起来添加1个约束unique 【表级约束】
create table t_user( id int, usercode varchar(255), username varchar(255), unique(usercode,username) );
主键约束
primary key:既有列级约束,也有表级约束; 主键相关的术语?
主键约束 : primary key
主键字段 : id字段添加primary key之后,id叫做主键字段
主键值 : id字段中的每一个值都是主键值。
主键特点:不能为NULL,也不能重复 一张表的主键约束只能有一个; 有表级约束也有列级约束
表级约束
create table t_user( id int, username varchar(255), primary key(id) );
列级约束
create table t_student() student_id int(10) primary key, student_name varchar(20) not null, sex char(2) default 'm', birthday date, email varchar(30) , classes_id int(3) )
主键值自增
drop table if exists t_user; create table t_user( id int primary key auto_increment, username varchar(255) );
外键约束
关于外键约束的相关术语:
- 外键约束: foreign key
- 外键字段:添加有外键约束的字段
- 外键值:外键字段中的每一个值。
外键可以为NULL;
如果表中某个字段为外键字段,则该字段的值必须来源参照表的主键;
外键主要是维护表之间的关系的,主要是为了保证参照完整性,如果表中的某个字段为外键字段,那么该字段的值必须来源于参照的表的主键。
顺序要求:
- 删除数据的时候,先删除子表,再删除父表。
- 添加数据的时候,先添加父表,在添加子表。
- 创建表的时候,先创建父表,再创建子表。
- 删除表的时候,先删除子表,在删除父表。
create table t_class( cno int, cname varchar(255), primary key(cno) ); create table t_student( sno int, sname varchar(255), classno int, primary key(sno), foreign key(classno) references t_class(cno) );
- 级联更新与级联删除 父表中的数据更改,子表中的数据也会跟着变动。
- 父表中的数据删除,子表中的数据也会删除。
到此这篇关于Mysql中的SQL约束Constraint有哪几种的文章就介绍到这了,更多相关Mysql的Constraint约束内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!