MySQL非空约束(not null)案例讲解

目录

mysql 非空约束(not null)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。可以通过 create table 或 alter table 语句实现。在表中某个列的定义后加上关键字 not null 作为限定词,来约束该列的取值不能为空。

比如,在用户信息表中,如果不添加用户名,那么这条用户信息就是无效的,这时就可以为用户名字段设置非空约束。

在创建表时设置非空约束

创建表时可以使用 not null 关键字设置非空约束,具体的语法格式如下:

<字段名> <数据类型> not null;

例 1

创建数据表 tb_dept4,指定部门名称不能为空,sql 语句和运行结果如下所示。

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)

在修改表时添加非空约束

如果在创建表时忘记了为字段设置非空约束,也可以通过修改表进行非空约束的添加。

修改表时设置非空约束的语法格式如下:

alter table <数据表名>
change column <字段名>
<字段名> <数据类型> not null;

例 2

修改数据表 tb_dept4,指定部门位置不能为空,sql 语句和运行结果如下所示。

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)

删除非空约束

修改表时删除非空约束的语法规则如下:

alter table <数据表名>
change column <字段名> <字段名> <数据类型> null;

例 3

修改数据表 tb_dept4,将部门位置的非空约束删除,sql 语句和运行结果如下所示。

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非空约束(not null)内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐