1)约束(Constraint)
1.1、什么是约束?
在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性
1.2、常见的约束有哪些?
非空约束(not null):约束的字段不能为NULL(只有列级约束)
唯一约束(unique):约束的字段不能重复,可以为NULL(有列级、表级约束)
主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK)(同上)
外键约束(foreign key):。。。(简称FK) (同上)
检查约束(check):!!Oracle数据库有check约束,但MySQL目前不支持该约束
1.3、主键约束的一些特性
-
主键相关的术语
主键约束:primary key
主键字段:id添加primary key后,id叫做主键字段
主键值:id字段中的每一个值都是主键值 -
主键的作用
-表的设计三范式中有要求,第一范式要求任何一张表都应该有主键
-作用:主键值是这一行记录在这张表当中的唯一标识。(和身份证号码一样) -
主键分类
根据主键字段的字段数量划分:
单一主键(常用)
复合主键(多个字段联合起来添加成一个主键约束,不推荐)
根据主键性质划分
自然主键:主键值最好就是一个业务没有任何关系的自然数。(推荐)
业务主键:主键值和系统的业务挂钩(不推荐)。 因为以后的业务一旦发生改变,主键值可能也需要发生变化,但可能因为主键值重复而导致无法改变 -
一张表的主键约束只能有一个
-
MySQL提供主键值自增
格式:
id int primary key auto_increment,
id字段自动维护一个自增的数字,从1开始
1.4外键约束的一些特性 -
外键约束的相关术语
外键约束:foreign key
外键字段:田间有外键约束的字段
外键值:外键字段中的每一个值 -
外键值可以为NULL
-
外键字段引用其他表的某个字段的时候,被引用的字段至少有unique约束(防止该字段出现重复值)
-
为什么使用外键约束?
如果只使用一张表来储存所有的数据,会出现冗杂。因此这些数据分为多张表来储存。 -
表顺序要求:
删测数据时,先删除子表(外键约束),再删除父表
添加数据时,先添加父表,在添加子表
创建表时,先创建父表,再创建子表
删除表时,先删除子表,在删除父表
eg:
create table t_class(
cno int,
cname varchar(255),
primary key(cno) //表级约束
);
create table t_student(
sno int primary key, //行级约束
sname varchar(255),
classno int ,
foreign key(classno) references t_class(cno) //添加外键
);