![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=1739523778-33iR0E2EjRFNMCbHABoXuTzZwRTBSNqX-0-78bbc76f2f9bc3fef9c2987f1842c200)
非空性是指字段的值不能为空值(NULL),在MySQL数据库中,定义为主键的列,系统强制为非空约束。一张表中可以设置多个非空约束,它主要是用来规定某一列必须要输入值,有了非空约束,就可以避免表中出现空值了。
5.6.1 创建表时添加非空约束
非空约束通常都是在创建数据表时就创建了,创建非空约束的操作很简单,只需要在列后添加NOT NULL。对于设置了主键约束的列,就没有必要设置非空约束了,添加非空约束的语法格式如下:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P109_24036.jpg?sign=1739523778-k2jyTxiR0JCvKtXMNHnduV1CdOVGhbDA-0-5f6986f7372b7382c049828f7beaf9d3)
【实例15】在test数据库中,定义数据表person_01,将名称和出生年月列设置为非空约束。输入如下SQL语句:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P109_24037.jpg?sign=1739523778-0vE7B52NEdvYJhPK9fmI3nFOhLkCHPVr-0-e30590e3b9dcaf7e98803231a181d9c2)
单击“执行”按钮,即可完成创建非空约束的操作,如图5-31所示。执行完成后,使用“DESC person_01;”语句即可看到该数据表的结构,在其中可以查看添加的非空约束,如图5-32所示。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5274.jpg?sign=1739523778-27nLGHba7evjrJuoVMunlYUDJCT3msCL-0-d6a8a48fa843b72718aa90208abf4ce3)
图5-31 执行SQL语句
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5275.jpg?sign=1739523778-tdMdlDkveDOHeB9fXSRzkibdQ8qc0NCa-0-9557234f8f735d5cbdf5cf5190738573)
图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=1739523778-fwODUqLVyCHKsLRhyAY4vXZyiNi3Solf-0-b4a02c4320f791d28779183983df8d86)
图5-33 执行SQL语句
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5308.jpg?sign=1739523778-BA3VPM5bp1pz1H86Kr6OSpTmqP96vv6Q-0-bf140dd876a2ac1881424988cf6949fd)
图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=1739523778-XifFviQdFryl9fOTyRuw3Fal3fqruflZ-0-18d2d2637419b9e163fad708c1500c4c)
图5-35 删除非空约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P111_5338.jpg?sign=1739523778-zF23PcMp82pBo2LZbYXITx0lOcOYSE5B-0-9bd6990191ef3c5bc15375514d14c5c8)
图5-36 查看删除非空约束后的效果