Mysql 约束【总结】

约束:约束是创建表时给字段添加的限制条件。

1、非空约束:not null,字段不能为null

create table t1(id int,age int not null);
insert into t1 values(1,18);//成功
insert into t1 values(2,null);//失败

2、唯一约束:unique,字段值不能重复

create table t2(id int,age int unique);
insert into t2 values(1,18);//成功
insert into t2 values(2,18);//失败

3、主键约束:primary key,字段的值唯一且非空

创建表时添加主键约束:

create table t3(id int primary key,age int);

创建表之后添加主键约束:

create table t3(id int,age int);
alert table t3 add primary key(id);

删除主键约束:因为一个表中只有一个主键,所以删除时不用指定主键是哪一个。

alter table t3 drop primary key;

4、自增:auto_increment

数值只增不减,从历史最大值的基础上+1,字段值赋值为null的时候自动+1,使用delete全表删除数据时,自增数值不变,使用truncate自增清零。

5、默认约束:default,给字段添加默认值,当插入数据不给该字段赋值时,默认值生效。

create table t4(id int,age int defalut 10);
insert into t4 values(1,20);
insert into t4 values(2,null);
insert into t4 (id) values(3);//默认值生效

6、检查约束:check(该约束为Mysql8.0的新特性,之前版本语法通过但是不生效)

create table t5(id int,age int check(age > 10));
insert into t5 values(1,5);

插入数据报错:
在这里插入图片描述
7、外键约束:

外键约束的作用:为了保证两个表之间的关系正确建立

  1. 插入数据时外键可以为null,可以重复但是不能是另一张表不存在的数据;
  2. 被依赖的表不能被先删除;
  3. 被依赖的数据不能先删除;

语法:constraint XXX foreign key(外键字段名) references 主表名(主表字段名)

该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用,如果不指定CONSTRAINT XXX,MYSQL会自动生成一个名字。

如何使用外键:

1)创建部门表:

create table dept(id int primary key auto_increment,name varchar(10));

2)创建员工表:

create table emp(id int primary key auto_increment,name varchar(10),deptid int,constraint fk_dept foreign key(deptid) references dept(id));

3)插入数据:

insert into dept values(null,'神仙'),(null,'妖怪');
insert into emp values(null,'悟空',1);
insert into emp values(null,'八戒',1);
insert into emp values(null,'赛亚人',3);//失败 外键约束
drop table dept;//失败 外键约束
delete from dept where id=1;//失败 外键约束
delete from dept where id=2;/成功

猜你喜欢

转载自blog.csdn.net/weixin_44296929/article/details/108664055