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


    在这里插入图片描述

    🙋‍ 哈喽大家好,本次是MySQL数据库原理系列第五期
    ⭐本期是MySQL的表的约束——默认约束、非空约束
    🏆系列专栏:MySQL数据库
    😄笔者还是前端的菜鸟,还请大家多多指教呀~
    👍欢迎大佬指正,一起学习,一起加油!



    前言

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


    🍎默认约束

    定义

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

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

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

    测试

    接下来我们创建一个my_default表,准备name和age两个字段进行测试,为age添加默认约束,设置默认值为18,然后使用desc查看表结构,结果如👇
    在这里插入图片描述
    接下来,我们插入数据进行测试,当插入时省略name和age时,由于name和age没有设置非空约束,所以这两个字段分别使用了默认值null和18。
    在这里插入图片描述
    在插入时省略age字段,通过结果可以看到,age使用了默认值18。
    在这里插入图片描述
    当插入记录时在age字段中插入null值,则保存结果为null,不使用默认值。
    在这里插入图片描述
    当在age字段中使用默认值,则直接显示默认值。所以在为有默认值的字段指定数据时,可以通过default关键字直接指定其使用默认值。
    在这里插入图片描述
    为现有的表添加或者删除默认约束,使用alter table 修改列属性就可以了。
    在这里插入图片描述
    在这里插入图片描述

    🍎非空约束

    定义

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

    字段名 数据类型 not null;

    测试

    接下来我们创建一个my_not_null表,准备n1、n2和n3两个字段进行测试,为n2添加非空约束,为n3添加默认约束,设置默认值为18,然后使用desc查看表结构,结果如👇
    在这里插入图片描述
    当省略了n2字段时,插入失败,提示n2没有默认值。
    在这里插入图片描述
    将n2或者n3字段设为null,插入失败,提示n2、n3字段不能设置为null。
    添加了非空约束的字段,插入数据时不能插入空值。
    在创建数据表时,非空约束与值为null的默认约束(default null)不能同时存在,否则数据表在创建时会失败。
    在这里插入图片描述
    在这里插入图片描述
    插入数据时省略n1和n3字段,插入成功。此时可以发现,n1未设置任何约束,则可以省略,表示没有添加数据,n3设置了默认值,所以可以省略。n2字段不能为null且没有默认值,所以在插入时不能省略或插入null。
    在这里插入图片描述
    注意:为现有的表添加或删除非空约束的方式与默认约束类似,使用alter table修改列属性即可。但若目标列中已经保存了null值,添加非空约束会失败,此时只要将null值改为其他值即可解决。


    总结

    以上就是今天的学习内容啦~
    如果有兴趣的话可以订阅专栏,持续更新呢~
    咱们下期再见~
    在这里插入图片描述

  • 相关阅读:
    Leetcode 33 搜索旋转排序数组
    spring-security-oauth2之WebSecurityConfigurerAdapter浅析
    人工智能 | ShowMeAI资讯日报 #2022.06.29
    JAVA毕业设计家庭饮食营养管理计算机源码+lw文档+系统+调试部署+数据库
    AIGC之Stable Diffusion
    基于selenium和autoit 实现B站视频自动上传功能
    【黑马程序员】STL实战--演讲比赛管理系统
    国内外传输大文件有哪些好用又便宜的文件传输工具?
    《大数据:互联网大规模数据挖掘与分布式处理》(第2版)习题6.1.1-6.1.3解析
    Android项目更新依赖和打包步骤和问题汇总
  • 原文地址:https://blog.csdn.net/m0_55394328/article/details/127572372