目录
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!