Mysql五大约束

约束

1.主键约束(primary key)
2.唯一约束(unique)
3.非空约束(not null)
4.默认约束(default)
5.外键约束(foreign key)

主键约束(PRIMARY KEY)

关键字:PRIMARY KEY
主键是一个表中能标识唯一行的标志,主键修饰列,列内的数据不能重复,拥有唯一性且不能为空。

自增列AUTO_INCREMENT特点
  1. 只有整型数据才可以设置为自增列;
  2. 只有主键才能设置为自增列;
  3. 自动增长,新增数据时可以不赋值;
  4. 初始值默认为1,增量为1;
用法

主键约束:

CREATE TABLE demo(
id INT PRIMARY KEY, 
name VARCHAR(50)
);

主键约束且设置自增:

CREATE TABLE demo(
id INT PRIMARY KEY AUTO_INCREMENT, 
name VARCHAR(50)
);

唯一约束(UNIQUE)

关键字:UNIQUE
唯一约束修饰的列,数据唯一,不能重复。与主键类似,没有主键级别高,一个表中可以有多个用唯一约束修饰的列,并且唯一约束的列允许为空。

用法:
//添加表
CREATE TABLE demo(
id INT PRIMARY KEY AUTO_INCREMENT,    --主键自增
name VARCHAR(50) UNIQUE  --唯一约束
);

//添加元素,验证可以为空
insert into demo(name)values('张飞'),('项羽'),(null);
insert into demo(name)values(null);

在这里插入图片描述

非空约束(NOT NULL)

关键字:NOT NULL
NOT NULL约束的列,不能为空,必须要填字段。

用法
CREATE TABLE demo(
id INT PRIMARY KEY AUTO_INCREMENT,  
name VARCHAR(50) UNIQUE , 
startDate DATE NOT NULL   --非空约束
);

默认约束(DEFAULT)

关键字:DEFAULT
默认约束修饰的列,如果不给值,会使用自己设置的默认值。

用法
//添加表
CREATE TABLE demo(
id INT PRIMARY KEY AUTO_INCREMENT,  
name VARCHAR(50) UNIQUE , 
startDate DATE NOT NULL ,
sex CHAR(2) DEFAULT '男'
);

//添加元素
insert into demo(name,startDate,sex)values('貂蝉','20210104','女');   
insert into demo(name,startDate)values('张飞','20210104');  

在这里插入图片描述

外键约束(FOREIGN KEY)

关键字:FOREIGN KEY
外键约束用来在两个表的数据之间建立关联。表与表之间存在关系,这种关系我们就称为外键关系。

表关系有三种:

  1. 一对一
  2. 一对多
  3. 多对多
一对一关联

存在两张表A,B,分别添加主键,在其中任意一张表中设置外键关联另外一张表的主键,而外键添加到当前表的主键上,即两张表的主键进行关联,相互制约。

例如:丈夫表与妻子表

//妻子表
CREATE TABLE wife(
wid INT PRIMARY KEY ,  
wname VARCHAR(10) NOT NULL 
);
//丈夫表
CREATE TABLE husband(
hid INT PRIMARY KEY ,
hname VARCHAR(10) NOT NULL,
FOREIGN KEY(hid)REFERENCES wife(wid) --外键约束
);
一对多

一对多关系中,一方的表称为主表,多方的表成为从表。

例如:部门表和员工表(部门表为主表,员工表为从表,在员工表的创建外键与部门表关联)

#创建部门表
CREATE TABLE dept(
did INT PRIMARY KEY, #部门号
dname VARCHAR(10) NOT NULL#部门名
);

#创建员工表
CREATE TABLE emp(
eid INT PREPARE KEY,  #员工号
did INT,  #部门号
ename VARCHAR(10),   #员工名
FOREIGN KEY(did) REFERENCES dept(did)
);
多对多

两张表A,B想要实现多对多关系,需要借助一张中间表C,在C中设置两个外键,分别关联A,B表的主键。

例如:学生与课程(学生表,课程表,选课表)

#学生表
CREATE TABLE stu(
sid INT PRIMARY KEY,
sname VARCHAR(10)
);

#课程表
CREATE TABLE course(
cid INT PRIMARY KEY,
cname VARCHAR(10)
);

#选课表
CREATE TABLE stu_conn_course(
sid INT,
cid INT,
FOREIGN KEY(sid) REFERENCES stu(sid),
FOREIGN KEY(cid) REFERENCES course(cid)
);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值