mySQL约束

  1. 约束

对数据进行限定,保证数据正确性、有效性、完整性
分类:
1. 主键约束 primary key
2. 非空约束 not null
3. 唯一性 unique
4. 外键约束 foreign key

4.1 非空约束

添加方式:
1. 在创建表时添加约束

create table student(
		id int,
		name varchar(20) not null -- name 为非空
);

删除非空约束:
alter table student modify name varchar(20);
2. 在创建表之后添加非空约束
alter table student modify name varchar(20) not null

4.2 唯一约束

create table people(
		id int,
		phone varchar(20) unique -- 添加唯一约束(两个null不算重复)
);

唯一约束不能通过以下语句删除:
alter table people modify phone varchar(20);
通过下列语句删除
alter table people drop index phone; 唯一约束也叫唯一索引
在创建表之后添加唯一约束
alter table people modify phone varchar(20) unique;

4.3 主键约束

1. 非空且唯一
2. 一张表只能有一个字段是主键
3. 表中记录的唯一标识码

创建表时添加主键

create table student(
		id int primary key,
		name varchar(20) not null
);

删除主键,不能通过下列语句删除:
alter table student modify id int;
正确的方式
alter table student drop primary key;
在创建表之后添加主键
alter table student modify id int primary key;
自动增长:(一般和主键连在一起使用)

create table student(
		id int primary key auto_increment,
		name varchar(20) not null
);

insert into student values(null,"ccc"); 给null自动增长,也可以手动委派,自动增长基于上一条
删除自动增长
alter table student modify id int;
添加:
alter table student modify id int auto_increment;

4.4 外键约束

让表与表中的数据产生关联
在创建表时可以添加
语法:
外键列 ,
constraint 外键名称 foreign key (外键列名称) references 主表名称(主列表名称) 级联操作

create table employee(
		id int primary key auto_increment,
		name varchar(20),
		dep_id int,  -- 外键对应主表的主键
		constraint emp_dept_fk foreign key (dep_id) references department(id) 
);

【constraint 外键名称】 可以省略
删除外键:
alter table employee drop foreign key emp_dept_fk;
在创建表之后添加外键:

alter table employee add constraint emp_dept_fk foreign key (dep_id) references department(id);

级联操作:
添加外键时设置级联:
在添加外键的语法最后:
1. 级联更新
on update cascade
2. 级联删除
on delete cascade 外键链接链接的数据被删除,主表中的数据也被删除

alter table employee add constraint emp_dept_fk foreign key (dep_id) references department(id) on update cascade on delete cascade

4.5 多表关系

1. 一对一关系 
2. 一对多的关系
3. 多对多的关系
借助中间表,至少包含两个字段,这两个字段作为外键,分别指向两个表的主键(联合主键)
create table tab_fav(
		rid int,
		uid int,
		date datetime,
		primary key(rid,uid), -- 创建复合主键,联合主键(两个不能重复)
		foreign key (rid) references tab_route(rid),
		foreign key (uid) references tab_user(uid) 
);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值