![MySQL入门很轻松(微课超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/406/32858406/b_32858406.jpg)
5.6 非空约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P109_24035.jpg?sign=1738962533-sAyw5br55KbdYspytWoMDIn2qVoClWZ5-0-49e3fb7668dfef3f4c79d77b2911945b)
非空性是指字段的值不能为空值(NULL),在MySQL数据库中,定义为主键的列,系统强制为非空约束。一张表中可以设置多个非空约束,它主要是用来规定某一列必须要输入值,有了非空约束,就可以避免表中出现空值了。
5.6.1 创建表时添加非空约束
非空约束通常都是在创建数据表时就创建了,创建非空约束的操作很简单,只需要在列后添加NOT NULL。对于设置了主键约束的列,就没有必要设置非空约束了,添加非空约束的语法格式如下:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P109_24036.jpg?sign=1738962533-NMqBPr6sFJ7E5JtA01amHU5RXLkKBdvb-0-535d908a7da2feb15bb6125e3b56539d)
【实例15】在test数据库中,定义数据表person_01,将名称和出生年月列设置为非空约束。输入如下SQL语句:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P109_24037.jpg?sign=1738962533-LJBxCUN0YnAhnghLMykT0GrcmuolgFeq-0-378af61dc795c15eece06ee6c3b54f7b)
单击“执行”按钮,即可完成创建非空约束的操作,如图5-31所示。执行完成后,使用“DESC person_01;”语句即可看到该数据表的结构,在其中可以查看添加的非空约束,如图5-32所示。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5274.jpg?sign=1738962533-woX4rI9wnwWCj2cCfFrP17s54W1FItZv-0-040b0c4f505203bbc48c238c948182e1)
图5-31 执行SQL语句
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5275.jpg?sign=1738962533-oCSJS1puu1AVPh6HaHOTVJpzJjO02cSI-0-7d4b5d591951ef645061268ef0d49d64)
图5-32 查看添加的非空约束
5.6.2 修改表时添加非空约束
当创建好数据表后,也可以为其添加非空约束,具体的语法格式如下:
ALTER TABLE table_name MODIFY col_name datatype NOT NULL;
主要参数介绍如下。
- table_name:表名。
- col_name:列名,要为其添加非空约束的列名。
- datatype:列的数据类型,如果不修改数据类型,还要使用原来的数据类型。
- NOT NULL:非空约束的关键字。
【实例16】在现有person_01中,为remark字段添加非空约束。输入以下SQL语句:
ALTER TABLE person_01 MODIFY remark VARCHAR(200) NOT NULL;
单击“执行”按钮,即可完成添加非空约束的操作,如图5-33所示。执行完成后,使用“DESC person_01;”语句即可看到该数据表的结构,如图5-34所示,可以看到字段remark添加了非空约束。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5307.jpg?sign=1738962533-5eIY0fOZRFRsZwvKnTgZINewbLSj792U-0-2ef0b0647b6a2917edd423aae6ea2c25)
图5-33 执行SQL语句
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5308.jpg?sign=1738962533-MFO7KUJUNPImZk07Ki4ElbpxrNDOFlHM-0-35f859658ade58a67e7b7884183d0ff4)
图5-34 查看添加的非空约束
5.6.3 删除表中的非空约束
非空约束的删除操作很简单,具体的语法格式如下:
ALTER TABLE table_name MODIFY col_name datatype;
【实例17】在现有person_01中,删除员工姓名name列的非空约束。在“查询编辑器”窗口中输入如下SQL语句:
ALTER TABLE person_01 MODIFY name VARCHAR(20);
单击“执行”按钮,即可完成删除非空约束的操作,如图5-35所示。
执行完成后,使用“DESC person_01;”语句即可看到该数据表的结构,在其中可以查看员工姓名name列的非空约束被删除,也就是说该列允许为空值,如图5-36所示。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P111_5337.jpg?sign=1738962533-7WAUgNXh3yciyvKXvrq0etSENgVjq7DU-0-c2894902a79e7a1359ee46dc31c3948e)
图5-35 删除非空约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P111_5338.jpg?sign=1738962533-nbkTph15wMXSGStQfI2EG2e7FEK3H3R6-0-2bb3cc232e7c9fc63d88af68230f33f1)
图5-36 查看删除非空约束后的效果