![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=1739521548-HfNiRfznt5rchgNx97JJWpAuVIE924I7-0-765f951c3e62659a73e062ddbf6dcad6)
非空性是指字段的值不能为空值(NULL),在MySQL数据库中,定义为主键的列,系统强制为非空约束。一张表中可以设置多个非空约束,它主要是用来规定某一列必须要输入值,有了非空约束,就可以避免表中出现空值了。
5.6.1 创建表时添加非空约束
非空约束通常都是在创建数据表时就创建了,创建非空约束的操作很简单,只需要在列后添加NOT NULL。对于设置了主键约束的列,就没有必要设置非空约束了,添加非空约束的语法格式如下:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P109_24036.jpg?sign=1739521548-0ZaJZgxKRqV5GhslDg2s0p7Fulm70EYz-0-076924ea1219d8d66362773464ef2020)
【实例15】在test数据库中,定义数据表person_01,将名称和出生年月列设置为非空约束。输入如下SQL语句:
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P109_24037.jpg?sign=1739521548-fa1CF8mztzXgtpuv8f6AwnisYOMVNsaL-0-dca52a55db409f5d13fc64efc59dd72e)
单击“执行”按钮,即可完成创建非空约束的操作,如图5-31所示。执行完成后,使用“DESC person_01;”语句即可看到该数据表的结构,在其中可以查看添加的非空约束,如图5-32所示。
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5274.jpg?sign=1739521548-uloNrRlVAyzSdyUOVFlTxc9zDoxqI4lN-0-b5516c3ec272d98c61b067e6a89f68ea)
图5-31 执行SQL语句
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5275.jpg?sign=1739521548-Va2gOUK3tDF8GYiiEj5upo67vQcxP9Fu-0-f370b1397d72d23bd837284d1dcac58b)
图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=1739521548-WNoRJYZzOpJcNjUTHQje3Y9gfDNOKRfw-0-07910211214a2541c8702da97c47de27)
图5-33 执行SQL语句
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P110_5308.jpg?sign=1739521548-m91WK7KDiFRZCpfx7JNh40pr0M2xub20-0-85b61a2eab506e288148c18b500014d6)
图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=1739521548-UudftbYubzV91tiq6GPEMrb3dhU9gk3K-0-eb176fcd2a604a46a3347634e9b28e0a)
图5-35 删除非空约束
![](https://epubservercos.yuewen.com/D53A3A/17640317506035206/epubprivate/OEBPS/Images/Figure-P111_5338.jpg?sign=1739521548-TdUFNpF6Jfx58ThFNb4JR0Lxj8edNjhw-0-6ba731b85edb8a90c861e1bfbd55f04b)
图5-36 查看删除非空约束后的效果