常用约束
- 非空约束(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
关于外键约束的相关术语:
- 外键约束: 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)
);
级联更新与级联删除
- 父表中的数据更改,子表中的数据也会跟着变动。
- 父表中的数据删除,子表中的数据也会删除。