0


第20讲:表中字段约束的概念以及基本使用

表中字段约束的概念以及基本使用

文章目录

1.约束的概念

所谓约束指的肯定就是某些限制,在数据库中,约束的是作用表中字段上的一个限制规则,用于限制存在在表中的数据,写入数据时必须满足表中字段的约束策略,否则将无法写入成功。

约束的目的是为了保证数据库中的数据的正确性、完整性、有效性、一致性等等。

约束有以下几种类型:
约束的类型含义关键字非空约束限制字段的数据不能为NULLNOT NULL唯一约束保证该字段下的所有数据都是唯一的并且都不重复UNIQUE主键约束主键是一行数据的唯一标识,要求非空,并且在整张表都是唯一的PRIMARY KEY默认约束写入数据时,如果未指定该字段的值,则采用默认值DEFAULT检查约束保证字段值满足一个条件(MySQL 8.0.16版本之后才有的功能)CHECK外键约束用来让两张表的数据之间建立连接,保证数据的一致性和完整性FOREIGN KEY
约束是作用于表中的字段的,是在创建表、修改表的时候添加约束。

2.使用约束的命令格式

1)主键约束

字段 数据类型 PRIMARYKEY

2)唯一约束

字段 数据类型 UNIQUE

3)非空约束

字段 数据类型 NOTNULL

4)默认约束

字段 数据类型 DEFAULT'默认值'

5)检查约束

字段 数据类型 CHECK( 条件1&& 条件2)

3.创建一张数据表为表字段应用常见的约束

3.1.数据表的约束需求

该张数据表的约束条件如下,根据不同字段的不同约束,完成数据表的创建。
字段名字段含义字段类型约束条件约束关键字idIDint主键,字段增长PRIMARY KEY,AUTO_INCREMENTxm姓名varchar(10)不为空,不允许重复NOT NULL,UNIQUEnl年龄int大于0并且小于等于120CHECKzt状态char(1)如果没有指定该值,默认为1DEFAULTxb性别char(1)无

3.2.根据约束需求创建出数据表

createtable erp_user (
    id intprimarykeyauto_incrementcomment'主键id',
    xm varchar(10)notnulluniquecomment'姓名',
    nl intcheck( nl >0&& nl <=120)comment'年龄',
    zt char(1)default'1'comment'状态',
    xb char(1)comment'性别')comment'用户表'

3.2.在表中写入数据严重约束是否生效

1)验证id字段的主键约束

首先在表中写入2条数据,不指定id字段的数据,验证id字段是否会自动增长并且都是唯一的。

insertinto erp_user (xm,nl,zt,xb)values('小明','19','1','男'),('小红','26','1','女');

数据写入成功,可以看到虽然没有指定id字段写入数据,但是我们对id字段设置了主键约束,因此数据写入后,id字段会自动增长并且还是唯一的。

image-20220515162820142

2)验证xm字段的不为空、不允许重复的约束

我们在表中再写入一条数据,指定xm字段为null,观察效果。

insertinto erp_user (xm,nl,zt,xb)values(null,'36','1','男');

当xm字段为null时,就提示我们写入失败了,并且返回说xm字段不允许为空。

image-20220515163053188

然后我们再写入一条xm为小明的数据,验证姓名字段是否不为空。

insertinto erp_user (xm,nl,zt,xb)values('小明','36','1','男');

此时依旧插入数据失败,并且提示我们说xm字段已经包含小明了,不允许插入。

image-20220515163227080

3)验证nl字段的check检查约束

在前面指定nl字段的check条件为大于0并且小于120岁的数据,下面我们来插入一条年龄在0-120岁之间的数据,观察数据写入情况。

insertinto erp_user (xm,nl,zt,xb)values('小江','88','1','男');

数据写入成功了,但是也会看到主键的ID不一样了,变成了,不应该是3吗,那是应为在前面验证数据唯一性时,数据虽然插入失败了,但是却向表中申请了一个主键。

image-20220515163453893

只要向表中写入的内容符合约束后,就会向表申请一个主键ID,向前面第一个错误的语句,xm为null,这个内容就不符合约束条件,此时就不会申请主键,而xm等于小明,内容格式是符合要求的,此时就会申请主键,虽然内容重复了,数据并没有写入成功,但是主键已经早早被申请过了。

现在在表中插入一条大于120岁的数据,观察写入效果。

insertinto erp_user (xm,nl,zt,xb)values('小哦','129','1','男');

由于nl字段规定的条件就是0-120,超过120就认为违反条件了,此时就会拒绝写入,由于内容并不符合约束条件,因此不会去申请一个主键。

image-20220515163855958

4)验证zt字段的默认值约束

向表中写入一条数据,不指定zt字段,观察写入效果。

insertinto erp_user (xm,nl,xb)values('小花','21','男');

数据写入成功,当不指定zt字段时,应用默认约束,自动写入1。

image-20220515164943193

标签: 数据库 mysql sql

本文转载自: https://blog.csdn.net/weixin_44953658/article/details/127007364
版权归原作者 Jiangxl~ 所有, 如有侵权,请联系我们删除。

“第20讲:表中字段约束的概念以及基本使用”的评论:

还没有评论