MySQL非空约束设置、添加与删除方法

顾星河
顾星河
发布时间:2026-10-16| 7人浏览过
原创

了解如何在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非空约束的使用技巧与注意事项请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。