![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=1739298866-ddbHtd8UCMMt5ih7vA2huSA6W7rxuQFc-0-f2acd9ca720bf5f696197814813355fb)
非空性是指字段的值不能为空值(NULL),在MySQL数据库中,定义为主键的列,系统强制为非空约束。一张表中可以设置多个非空约束,它主要是用来规定某一列必须要输入值,有了非空约束,就可以避免表中出现空值了。
5.6.1 创建表时添加非空约束
非空约束通常都是在创建数据表时就创建了,创建非空约束的操作很简单,只需要在列后添加NOT NULL。对于设置了主键约束的列,就没有必要设置非空约束了,添加非空约束的语法格式如下:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P109_24036.jpg?sign=1739298866-S9U7yUrQEOERzb6SjnncwO4CBQukGnvW-0-6ace028e0a1c6f8f61179d887f09bd88)
【实例15】在test数据库中,定义数据表person_01,将名称和出生年月列设置为非空约束。输入如下SQL语句:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P109_24037.jpg?sign=1739298866-xoQ3oPPfeT71QAvDef51ZNnJP25X8M0L-0-463ff4d04525fa2458d2bc400be21098)
单击“执行”按钮,即可完成创建非空约束的操作,如图5-31所示。执行完成后,使用“DESC person_01;”语句即可看到该数据表的结构,在其中可以查看添加的非空约束,如图5-32所示。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5274.jpg?sign=1739298866-yM1jvkthtS9uWqM0KCrUVETgkXJV3vBA-0-6e7fb318cf1510e18091a92aa3ab0e00)
图5-31 执行SQL语句
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5275.jpg?sign=1739298866-YkZVFdMdvxsa7PmbQxcCl0FNmx03Y7jH-0-c65a9ca8ddb38a12b2d30d02f0c43b29)
图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=1739298866-WSwbbVlTWuaVeWLYC2k5B8l2GVIosvJV-0-14d5aae8865f10af7a16975bfa74dda6)
图5-33 执行SQL语句
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5308.jpg?sign=1739298866-yl1vAiTU1wHAcZNdDJClYpOsnvB8vau9-0-f7c247ea8b478d7528c48374539659cd)
图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=1739298866-LlsNR2GfJMLh26StoFFtGz9HCAQhQtcO-0-a170877914c1b9a76c148e3a0645e2e5)
图5-35 删除非空约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P111_5338.jpg?sign=1739298866-ujGwFONPc9QubT2Op8SJ5bZ6aceVBzKF-0-59389ee0b8d355f688e30c30aefd96d7)
图5-36 查看删除非空约束后的效果