MySQL非空约束设置、添加与删除方法
了解如何在MySQL中使用非空约束(NOT NULL)。文章涵盖建表时设置非空字段、修改表结构以添加或移除约束的具体步骤,配合实例代码帮助开发者正确规范数据库字段设计。
非空约束简介
MySQL中的非空约束(NOT NULL)用于限制字段的取值不能为空。当某个字段被设置为非空约束时,如果在插入数据时未指定该字段的值,数据库系统将报错。这在业务逻辑中非常有用,例如用户信息表中,用户名通常是必填项,必须设置非空约束以保证数据的完整性。
第1步:在创建表时设置非空约束
如果确定某字段不为空,可以在建表时直接通过 NOT NULL 关键字进行约束。语法格式如下:
<字段名> <数据类型> NOT NULL;
创建包含非空约束的数据表
以下示例创建了部门表 tb_dept4,其中 name 字段被设定为不能为空。执行后可通过 DESC 命令查看表结构,确认 name 字段的 Null 列显示为 NO。
mysql> CREATE TABLE tb_dept4
-> (
-> id INT(11) PRIMARY KEY,
-> name VARCHAR(22) NOT NULL,
-> location VARCHAR(50)
-> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_dept3;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(22) | NO | | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.06 sec)
第2步:在修改表时添加非空约束
若在建表时遗漏了非空约束,后续可通过 ALTER TABLE 语句进行补充。操作时需重新声明字段的数据类型并追加 NOT NULL 关键字。
ALTER TABLE <数据表名> CHANGE COLUMN <字段名> <字段名> <数据类型> NOT NULL;
为现有表字段添加非空约束
例如,将 tb_dept4 表中的 location 字段设为非空。执行成功后,再次查询表结构可以看到 location 的 Null 属性变为 NO。
mysql> ALTER TABLE tb_dept4
-> CHANGE COLUMN location
-> location VARCHAR(50) NOT NULL;
Query OK, 0 rows affected (0.15 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC tb_dept4;
+----------+-------------+------+-----+----------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+----------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(22) | NO | | NULL | |
| location | varchar(50) | NO | | NULL | |
+----------+-------------+------+-----+----------+-------+
3 rows in set (0.00 sec)
第3步:删除非空约束
当业务需求变更,允许某字段为空时,可以移除其非空约束。方法与添加类似,只需将关键字改为 NULL。
ALTER TABLE <数据表名> CHANGE COLUMN <字段名> <字段名> <数据类型> NULL;
移除表字段的非空约束
以 tb_dept4 为例,将 location 字段的非空约束解除。执行后观察表结构,该字段的 Null 列将恢复为 YES,表示现在允许插入空值。
mysql> ALTER TABLE tb_dept4
-> CHANGE COLUMN location
-> location VARCHAR(50) NULL;
Query OK, 0 rows affected (0.15 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC tb_dept4;
+----------+-------------+------+-----+----------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+----------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(22) | NO | | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+----------+-------+
3 rows in set (0.00 sec)
以上就是MySQL非空约束(NOT NULL)设置、添加与删除方法的详细内容,更多关于MySQL非空约束的使用技巧与注意事项请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









