- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 数据库备份
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表
- SQL - 约束
- SQL 查询
- SQL - INSERT 查询
- SQL - SELECT 查询
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - UPDATE 查询
- SQL - DELETE 查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布尔 (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接 vs 右连接
- SQL - UNION vs JOIN
- SQL 密钥
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 组合键
- SQL - 备选键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - MIN & MAX
- SQL - NULL 函数
- SQL - CHECK 约束
- SQL - DEFAULT 约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - NOT NULL 约束
在表中,列通常默认可以接受 NULL 值。但是,如果您想确保特定列不包含 NULL 值,则需要在该列上添加 NOT NULL 约束/条件。
SQL NOT NULL 约束
SQL 中的NOT NULL 约束用于确保表中的列不包含 NULL(空)值,并防止任何尝试插入或更新包含 NULL 值的行。
通常,如果我们在将数据插入表时不向特定列提供值,则默认情况下它被视为 NULL 值。但是,如果我们在列上添加 NOT NULL 约束,它将强制在数据插入期间必须为此列提供值,并且尝试插入 NULL 值将导致约束违规错误。
语法
以下是创建表时NOT NULL 约束的基本语法:
CREATE TABLE table_name ( column1 datatype NOT NULL, column2 datatype, column3 datatype NOT NULL, ... );
在表上创建 NOT NULL 约束
要在表的列上添加 NOT NULL 约束,我们只需要在列定义中在列的数据类型之后添加关键字“NOT NULL”。
示例
首先,让我们使用以下查询创建一个名为CUSTOMERS的表:
CREATE TABLE CUSTOMERS( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25) , SALARY DECIMAL (20, 2), PRIMARY KEY (ID) );
让我们使用以下 INSERT 查询将一些值插入到上面创建的表中:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', '32', 'Ahmedabad', 2000), (2, 'Khilan', '25', 'Delhi', 1500), (3, 'Kaushik', '23', 'Kota', 2500), (4, 'Chaitali', '25', 'Mumbai', 6500), (5, 'Hardik','27', 'Bhopal', 8500), (6, 'Komal', '22', 'Hyderabad', 9000), (7, 'Muffy', '24', 'Indore', 5500);
表将如下所示创建:
ID | 姓名 | 年龄 | 地址 | 薪资 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
验证
要在 MySQL 数据库中显示表的结构,我们使用DESCRIBE命令。DESCRIBE 命令提供表列、数据类型和各种属性的摘要,如下所示:
DESCRIBE CUSTOMERS;
正如我们在下面的输出中看到的,该表显示了有关表列名、其类型以及它们是否可为空的信息。
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | |
姓名 | varchar(20) | 否 | NULL | ||
年龄 | int | 否 | NULL | ||
地址 | char(25) | 是 | NULL | ||
薪资 | decimal(20,2) | 是 | NULL |
从表中删除 NOT NULL 约束
在 SQL 中,要删除现有表中列的 NOT NULL 约束,我们需要使用ALTER TABLE语句。使用此语句,我们可以修改列的定义,即可以更改现有列的名称、数据类型或约束。
删除列上 NOT NULL 约束的一种方法是将其更改为 NULL。
语法
以下是从 MySQL 数据库中的表中删除非空约束的语法:
ALTER TABLE table_name MODIFY COLUMN column_name datatype NULL;
其中:
- table_name 是包含我们要修改的列的表的名称。
- column_name 是具有要删除的 NOT NULL 约束的列的名称。
- datatype 是列的数据类型。
示例
以下是将 MySQL 数据库中 CUSTOMERS 表的 NAME 列上的约束修改为 NULL 的查询:
ALTER TABLE CUSTOMERS MODIFY COLUMN NAME VARCHAR(20) NULL;
输出
执行上述查询后,输出如下所示:
Query OK, 0 rows affected (0.10 sec) Records: 0 Duplicates: 0 Warnings: 0
验证
现在,让我们使用以下查询显示名为“CUSTOMERS”的表的结构:
DESCRIBE CUSTOMERS;
正如我们在下表中看到的,NAME 列被修改为可为空,这意味着此列允许 NULL 值。
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | |
姓名 | varchar(20) | 是 | NULL | ||
年龄 | int | 否 | NULL | ||
地址 | char(25) | 是 | NULL | ||
薪资 | decimal(20,2) | 是 | NULL |
向现有表添加 NOT NULL 约束
在上一节中,我们通过使用 ALTER TABLE 语句更改列的定义来删除列上的 NOT NULL 约束。同样,我们可以使用 ALTER TABLE 语句向现有表中的列添加 NOT NULL 约束。
语法
以下是向 MySQL 数据库中现有列添加 NOT NULL 约束的 SQL 语法:
ALTER TABLE table_name MODIFY COLUMN column_name datatype NOT NULL;
示例
假设先前创建的表CUSTOMERS,让我们修改ADDRESS列,确保它不允许空值,使用以下查询:
ALTER TABLE CUSTOMERS MODIFY COLUMN ADDRESS CHAR(25) NOT NULL;
输出
当我们执行上述查询时,将获得如下输出:
Query OK, 0 rows affected (0.08 sec) Records: 0 Duplicates: 0 Warnings: 0
验证
我们可以使用以下查询显示 CUSTOMERS 表的结构:
DESCRIBE CUSTOMERS;
正如我们在下面的输出中看到的,ADDRESS 列已修改,这意味着此列不允许 NULL 值。
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | |
姓名 | varchar(20) | 否 | NULL | ||
年龄 | int | 否 | NULL | ||
地址 | char(25) | 否 | NULL | ||
薪资 | decimal(20,2) | 是 | NULL |