mysql约束
约束:
1.什么是约束,为什么要使用约束
1.约束对应的英语单词:constraint
2. 约束实际上就是表中数据的限制条件
3. 表在设计的时候加入约束的目的是为了保证表中记录的完整和有效
2.约束包括那些
非空约束 not null
唯一性约束 unique
主键约束 primary key 简称PK
外键约束 foreign key 简称FK
unique 设为唯一性约束的列中不能出现相同数据
PK 主键约束的术语:
1.主键约束
2.主键字段
3.主键值
主键约束,主键字段,主键值的关系:
表中的某个字段添加主键约束之后,该字段被称为主键字段,
主键字段中,出现的每一个数据都被称为主键值
作用:给某个字段添加主键约束之后,该字段不能重复,也不能为空
效果和not null unique约束相同,本质不同,主键字段除了用上述功能之外,
还会默认添加索引“index”
一张表应该有主键字段,若没有,表示这张表是无效的,“主键值”是当前行数据的唯一标识,“主键值”是当前行数据的身份证号
即使表中的两行记录相关数据相同,但由于主键值不同,则认为这是两行完全不同的数据
给一个字段添加主键约束,被称为单一主键,
列级约束
create table t_user(
id int (10) primary key,
name varchar(20)
)
表级约束
create table t_user(
id int,
name varchar(20),
primary key(id)
给多个字段联合添加一个主键约束,被称为复合主键
表级约束
drop table if exists t_user
create table t_user (
id int(10),
name varchar(20),
constraint t_user_id_name_pk primary key(id,name) //起名
)
无论是单一主键还是复合主键,一张表主键约束只能有一个
主键根据性质分类:
-自然主键
主键值若是一个自然数,这个自然数和当前表的业务没有任何关系
-业务主键
主键值和当前表中业务紧密相关,当业务数据发生改变时,主键值会受到影响,
所以业务主键使用较少,通常使用自然主键
FK
外键的术语
-外键约束
-外键字段
-外键值
单一外键 复合外键
一张表中可以有多个外键字段
外键值可以为NULL
外键作用,与两张表中起连接作用,一张表中的字段被另一张表中的某一字段所引用,此时引入外键,被引用的字段必须具有unique约束。
有了外键引用后,引用外键的表是子表,被引用的是父表
只有表级约束
drop table if exists t_student;
drop table if exists t_class;
create table t_class(
con int(3) primary key,
cname varchar(128) not null unique,
);
create table t_student(
sno int (3) primary key,
sname varchar(32) not null,
classno int(3) ,
foreign key(classno) references t_class (cno)
);
一对多;再多的一方加外键
级联更新与删除:
父表中的数据更新时,级联更新子表中的数据,谨慎使用
级联删除:on delete cascade
级联更新: on update cascade
在添加外键约束时写入级联删除或更新
删除约束:
alter table t_class drop foreign key 外键名 on delete cascade9
添加约束:
alter table t_class add foreign key(id) references t_class(id)