【MySQL】表的约束(1)

【MySQL】表的约束(1)

作者:爱写代码的刚子

时间:2024.3.11

前言:本篇博客主要讲解表的约束第一部分

表约束的概念

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。

表的约束有很多,主要介绍:null/not null ,default ,comment , zerofill ,primary key , auto_increment , unique_key .

表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是通过技术手段,倒逼程序员插入正确的数据。反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的!

约束的最终目标:保证数据的完整性和可预期性

所以我们需要更多的约束条件

空属性

两个值:null(默认的)和not null(不为空)

数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运算。

  • NULL不参与运算

在这里插入图片描述

  • 举例:创建一个myclass表结构:

在这里插入图片描述

在这里插入图片描述

插入对象:

在这里插入图片描述

在这里插入图片描述

查看表:

在这里插入图片描述

不按要求进行插入时(由于没有缺省值所以不让插入):

在这里插入图片描述

当我们想要插入空数据时也不会被允许:

在这里插入图片描述

所以这就叫做非空约束

默认值

默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。

默认值生效:数据在插入的时候不给该字段赋值,默认值就会生效。

  • 使用默认值创建表:

在这里插入图片描述

  • 测试not null和default

在这里插入图片描述

  • 如果同时设置了not null和default,当default不为空时,用户可以选择不进行数据插入,default会将数据补上;如果设置了not null但是没有设置default,用户不插入相应的数据会发生报错:

在这里插入图片描述

default和not null并不冲突,而是互相补充的,

  • 为什么我们之前建表时可以省略一部分数据不进行插入?

在这里插入图片描述

mysql会自动添加default约束,并不会添加not null约束。

但是如果我们设置了not null约束,mysql就不会设置default约束。

列描述

  • show create table 表名称\G查看comment内容

在这里插入图片描述

desc命令并不能查看comment信息

not null和default一般不需要同时出现,因为default本身有默认值,不会为空。

zerofill

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

设置了zerofill可以使表中的数据显示时等宽,如果宽度小于设定宽度,数据的其他位数会补上0

  • 在进行数据显示的时候会补上0,但是实际上数据库里面存的是200:

在这里插入图片描述

验证(将b用16进制来显示):

在这里插入图片描述

  • 如果不够位数就补上0,如果够了,就按原来的方式显示数据

在这里插入图片描述

这里要注意:

在SQL中,int(10)表示一个整数数据类型,其最大显示宽度为10个字符。然而,这个数字10实际上只是用来指定显示宽度,并不影响整数的存储或范围。

在SQL中,如果尝试将超过指定宽度的数据插入到一个具有固定宽度的字段中,会发生拦截(报错)。

在这里插入图片描述

默认为什么创建表结构时,有符号的int默认是int(11),无符号的默认是int(10),因为有符号和无符号的最大数值转化为2进制为10位,但是有符号默认多出了一个符号位。

主键

主键primary key用来唯一的约束该字段里面的数据,不能重复,不能为空一张表中最多只能有一个主键;主键所在的列通常是整数类型。

在这里插入图片描述

建立主键,mysql会自动加上not null约束

  • 主键约束: 主键对应的字段中不能重复,一旦重复,操作失败。

在这里插入图片描述

在这里插入图片描述

  • 可以对主键的数据进行增删查改:

在这里插入图片描述

  • **alter table test_key drop primary key;**删除test_key里面的主键

在这里插入图片描述

在这里插入图片描述

  • 添加主键

注意:如果需要添加主键列中对应的字段有两份,就会发生添加失败。(下面以id举例)

在这里插入图片描述

所以要在开始建表的时候设置主键,不然后面可能会发生数据冲突,或者不知保留哪个数据

  • **alter table test_key add primary key(id);**设置id为主键

在这里插入图片描述

在这里插入图片描述

注意一张表最多只能有一个主键,不意味着一个表中的主键只能添加给一列,一个主键可以添加到一列或者多列上,也就是合起来充当一个主键。(复合主键

  • 复合主键:

在这里插入图片描述

  • 复合主键中只要有一个字段不一样就可以插入:

在这里插入图片描述

如果主键中字段都相同就不允许插入

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱写代码的刚子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值