【MySQL知识点】默认约束、非空约束

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 为了防止数据表中插入错误的数据,MySQL定义了一些维护数据库完整性的规则,即表的约束。常见的约束分为默认约束、非空约束、唯一约束、主键约束、外键约束。本期主要学习默认约束、非空约束~

image.gif


🙋‍ 哈喽大家好,本次是MySQL数据库原理系列第五期

⭐本期是MySQL的表的约束——默认约束、非空约束

🏆系列专栏:MySQL数据库

😄笔者还是前端的菜鸟,还请大家多多指教呀~

👍欢迎大佬指正,一起学习,一起加油!


前言


为了防止数据表中插入错误的数据,MySQL定义了一些维护数据库完整性的规则,即表的约束。常见的约束分为默认约束、非空约束、唯一约束、主键约束、外键约束。本期主要学习默认约束、非空约束~


🍎默认约束


定义


默认约束用于为数据表中的字段指定默认值,即当在表中插入一条新纪录时,如果没有给这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。默认值通过default关键字定义,基本语法如下:


字段名 数据类型 DEFAULT 默认值;


注意:BLOB、TEXT数据类型不支持默认约束。


测试


接下来我们创建一个my_default表,准备name和age两个字段进行测试,为age添加默认约束,设置默认值为18,然后使用desc查看表结构,结果如👇


61d118c7514a4a7f925bc0ec2a8f9926.png


接下来,我们插入数据进行测试,当插入时省略name和age时,由于name和age没有设置非空约束,所以这两个字段分别使用了默认值null和18。


f92aac9d3f9848c78fdce8616687f1eb.png


在插入时省略age字段,通过结果可以看到,age使用了默认值18。


31dfd30bde124dc28fa3dc16ab38562a.png


当插入记录时在age字段中插入null值,则保存结果为null,不使用默认值。


6a3ca8f38df647a7885253ef62f89554.png


当在age字段中使用默认值,则直接显示默认值。所以在为有默认值的字段指定数据时,可以通过default关键字直接指定其使用默认值。


cf5b92b122a64ef081d62bd648f608e8.png


为现有的表添加或者删除默认约束,使用alter table 修改列属性就可以了。


d45b2d50d21645d385d488740869fe77.png

c40ca8014b6143c08b71f550113b3632.png


🍎非空约束


定义


非空约束指的是字段的值不能为null,非空约束是通过not null定义的,基本语法格式如下:


字段名 数据类型 not null;


测试


接下来我们创建一个my_not_null表,准备n1、n2和n3两个字段进行测试,为n2添加非空约束,为n3添加默认约束,设置默认值为18,然后使用desc查看表结构,结果如👇


88e8bf05575649659c3e674512700e02.png


当省略了n2字段时,插入失败,提示n2没有默认值。


61239f21e3b643c2af615739f5aa796d.png

将n2或者n3字段设为null,插入失败,提示n2、n3字段不能设置为null。


添加了非空约束的字段,插入数据时不能插入空值。


在创建数据表时,非空约束与值为null的默认约束(default null)不能同时存在,否则数据表在创建时会失败。


d130aace90374216b5f99f3aa22fffcc.png

e09bb1c47eba4f99b49521fe9f0e04e2.png


插入数据时省略n1和n3字段,插入成功。此时可以发现,n1未设置任何约束,则可以省略,表示没有添加数据,n3设置了默认值,所以可以省略。n2字段不能为null且没有默认值,所以在插入时不能省略或插入null。


014431cd31c0400ea49b49dfda34f608.png


注意:为现有的表添加或删除非空约束的方式与默认约束类似,使用alter table修改列属性即可。但若目标列中已经保存了null值,添加非空约束会失败,此时只要将null值改为其他值即可解决。


总结


以上就是今天的学习内容啦~

如果有兴趣的话可以订阅专栏,持续更新呢~

咱们下期再见~


fad8470e8bf74811911903c14a181cc7.gif

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
SQL 关系型数据库 MySQL
MySQL数据库的约束+进阶版新增与查询-2
MySQL数据库的约束+进阶版新增与查询
15 1
|
3天前
|
关系型数据库 MySQL 测试技术
MySQL数据库的约束+进阶版新增与查询-1
MySQL数据库的约束+进阶版新增与查询
16 1
|
3天前
|
关系型数据库 MySQL 数据库
【MySQL】:约束全解析
【MySQL】:约束全解析
25 0
|
3天前
|
NoSQL 关系型数据库 MySQL
【MySQL探索之旅】MySQL数据表的增删查改——约束
【MySQL探索之旅】MySQL数据表的增删查改——约束
|
3天前
|
存储 关系型数据库 MySQL
{MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询
{MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询
21 0
|
3天前
|
SQL 关系型数据库 MySQL
DDL语言之常见约束(mysql)
DDL语言之常见约束(mysql)
|
3天前
|
存储 关系型数据库 MySQL
mysql约束
mysql约束
|
3天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
23 0
|
3天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(下)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
12 0
|
3天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(上)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
18 0

推荐镜像

更多