- 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 - 插入查询
- SQL - 选择查询
- SQL - Select Into
- SQL - Insert Into Select
- SQL - 更新查询
- SQL - 删除查询
- 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 - BOOLEAN (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 - 空函数
- SQL - 检查约束
- SQL - 默认约束
- 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 - 约束
SQL 约束
SQL 约束是应用于数据列或整个表以限制可以进入表的的数据类型的规则。当您尝试对表执行任何 INSERT、UPDATE 或 DELETE 操作时,RDBMS 将检查该数据是否违反任何现有约束,如果定义的约束和数据操作之间存在任何违反,则它将中止操作并返回错误。
我们可以定义列级或表级约束。列级约束仅应用于一列,而表级约束应用于整个表。
SQL 创建约束
我们可以在创建表时使用 CREATE TABLE 语句在表上创建约束,或者在创建表后,我们可以使用 ALTER TABLE 语句创建或删除表约束。
CREATE TABLE table_name ( column1 datatype constraint, column2 datatype constraint, .... columnN datatype constraint );
不同的 RDBMS 允许定义不同的约束。本教程将讨论 MySQL 中可用的 7 个最重要的约束。
NOT NULL 约束
当应用于列时,NOT NULL 约束确保列不能具有 NULL 值。以下是创建 NOT NULL 约束的示例
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2) );
查看有关 NOT NULL 约束 的更多详细信息
UNIQUE 键约束
当应用于列时,UNIQUE Key 约束确保列仅接受唯一值。以下是为 ID 列创建 UNIQUE Key 约束的示例。创建此约束后,ID 列不能为 null,并且它将仅接受唯一值。
CREATE TABLE CUSTOMERS ( ID INT NOT NULL UNIQUE, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2) );
查看有关 唯一键约束 的更多详细信息
DEFAULT 值约束
当应用于列时,DEFAULT 值约束在未指定值时为列提供默认值。以下是为 NAME 列创建 DEFAULT 约束的示例。创建此约束后,如果 NAME 未设置值,则 NAME 列将设置为“不可用”值。
CREATE TABLE CUSTOMERS ( ID INT NOT NULL UNIQUE, NAME VARCHAR (20) DEFAULT 'Not Available', AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2) );
查看有关 DEFAULT 值约束 的更多详细信息
PRIMARY 键约束
当应用于列时,PRIMARY Key 约束确保列仅接受唯一值,并且表上只能有一个 PRIMARY Key,但多个列可以构成一个 PRIMARY Key。以下是为 ID 列创建 PRIMARY Key 约束的示例。创建此约束后,ID 列不能为 null,并且它将仅接受唯一值。
CREATE TABLE CUSTOMERS( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
查看有关 PRIMARY Key 约束 的更多详细信息
FOREIGN 键约束
FOREIGN Key 约束映射到另一个表中的列,并唯一标识该表中的行/记录。以下是在 CUSTOMERS 表中创建外键约束的示例,如下面的语句所示 -
CREATE TABLE ORDERS ( ID INT NOT NULL, DATE DATETIME, CUSTOMER_ID INT FOREIGN KEY REFERENCES CUSTOMERS(ID), AMOUNT DECIMAL, PRIMARY KEY (ID) );
查看有关 FOREIGN Key 约束 的更多详细信息
CHECK 值约束
当应用于列时,CHECK 值约束就像一个验证,它用于检查输入到表特定列的数据的有效性。表并唯一标识该表中的行/记录。以下是在 AGE 列上创建 CHECK 验证的示例,如果其值低于 18,则不会被接受。
CREATE TABLE CUSTOMERS( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL CHECK(AGE>=18), ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
查看有关 CHECK 值约束 的更多详细信息
INDEX 约束
创建 INDEX 约束是为了加快从数据库中检索数据。可以使用表中的一列或一组列创建索引。表可以有一个 PRIMARY Key,但可以有多个 INDEXES。根据需要,索引可以是唯一的或非唯一的。以下是为 CUSTOMERS 表的 Age 列创建索引的示例。
CREATE INDEX idx_age ON CUSTOMERS ( AGE );
查看有关 INDEX 约束 的更多详细信息
删除 SQL 约束
可以使用带有 DROP CONSTRAINT 选项的 ALTER TABLE 命令删除您定义的任何约束。例如,要从 CUSTOMERS 表中删除主键约束,可以使用以下命令。
ALTER TABLE CUSTOMERS DROP CONSTRAINT PRIMARY KEY;
某些 RDBMS 允许您禁用约束而不是永久地从数据库中删除它们,您可能希望临时禁用约束,然后稍后重新启用它们。
数据完整性约束
数据完整性约束用于确保数据的整体准确性、完整性和一致性。如今,数据完整性还指数据在监管合规性(例如 GDPR 合规性等)方面的安全性。
关系数据库通过参照完整性的概念来处理数据完整性。有许多类型的完整性约束在参照完整性 (RI) 中发挥作用。这些约束包括主键、外键、唯一约束和其他上面提到的约束。