Mysql约束
约束用于确保数据库的数据满足特定的商业规则
在Mysql中,约束包括:not null 、unique、primary key 、foreign key 和check五种
-
primary key (主键)的使用(主键列不可以重复)
create table student(id int primary key#表示id列是主键
`name` varchar(32),email varchar(32);
)
insert into student values(1,'mark','mark@qq.com')
insert into student values(2,'smith','smith@qq.com')
insert into student values(1,'tom','tom@qq.com') #会报错,id为1的列已被设置为主键(不允许重复)主键的使用细节
-
主键是不能重复的,并且不能为空(null)
-
一张表里面只有一个主键,但是可以是复合主键(可以把id和name看做一个主键)
create table student(id int ,
`name`varchar(32) primary key ,#检测会出现错误(只能有一个主键)
primary key (id,`name`))#这一行使用了复合主键的方式,只有id和name同时相同才是违反了主键 -
主键的指定方式有两种:
-
字段名 primary key
-
在表定义最后一行写primary key(列名)
-
使用Desc表名,可以看到primary key(主键)的情况
-
unique的使用
-
unique是不能重复的,但是unique是可以为空(null)
-
一张表里面可以有多个unique值(也就是可以创建多个null值)
SELECT *FROM school01;
# 修改school表中的address字段的属性值为unique
# unique值得使用:unique不能重复,但是其值可以为空,、;
#如果没有指定not null,则Unique字段可以有多个null
#一张表里面有多个uniquez字段
ALTER TABLE school01 MODIFY address VARCHAR(32) UNIQUE;
INSERT INTO school01 VALUES(11,'张三','云南省','180087612...');
INSERT INTO school01 VALUES(21,'李四','四川省','170057612...');
INSERT INTO school01 VALUES(31,'张三','广东省','150084612...');
INSERT INTO school01 VALUES(41,'王二','湖南省','160086612...');
DESC school01;
-