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

作者:xusong 时间:2024-01-24 10:43:51 

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)

来源:http://c.biancheng.net/view/2448.html

标签:MySQL,not,null
0
投稿

猜你喜欢

  • 如何写python的配置文件

    2022-08-06 15:57:09
  • Python中模块(Module)和包(Package)的区别详解

    2021-06-17 09:05:22
  • 在Python 字典中一键对应多个值的实例

    2023-07-25 23:45:02
  • Java连接各种数据库的方法

    2024-01-28 10:56:26
  • python可视化hdf5文件的操作

    2022-11-16 16:35:48
  • 详细解读Python中的json操作

    2022-02-21 00:55:13
  • python爬取cnvd漏洞库信息的实例

    2021-08-24 07:18:06
  • VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)

    2022-03-13 22:55:19
  • 对DJango视图(views)和模版(templates)的使用详解

    2021-05-30 00:37:51
  • 基于Pytorch实现的声音分类实例代码

    2021-01-04 21:42:28
  • mysql proxy问题

    2009-02-27 15:54:00
  • python实现对excel中需要的数据的单元格填充颜色

    2023-03-04 13:02:39
  • 区别Javascript中的Null与Undefined

    2007-12-13 20:24:00
  • Python中pip安装非PyPI官网第三方库的方法

    2021-01-20 15:51:18
  • Python读写压缩文件的方法

    2023-06-02 19:37:53
  • 用不着妄自菲薄对ASP和ASP程序员的一些话

    2007-08-22 15:09:00
  • 详解python之配置日志的几种方式

    2022-11-02 14:32:30
  • Mysql 命令行模式访问操作mysql数据库操作

    2024-01-14 07:43:41
  • 一个ACCESS数据库数据传递的方法

    2008-03-05 11:58:00
  • MySQL主键约束和外键约束详解

    2024-01-18 08:10:41
  • asp之家 网络编程 m.aspxhome.com