SQL 中的约束2025年3月17日 | 阅读 10 分钟 SQL 中的约束是指我们在数据库上应用某些条件或限制。这意味着在将数据插入数据库之前,我们会检查某些条件。如果应用于数据库的条件对于要插入的数据成立,那么数据才会被插入到数据库表中。 SQL 中的约束可以分为两类:
约束的一些现实生活中的例子如下:
SQL 中可用的约束包括:
现在,让我们通过示例来详细了解 SQL 中可用的不同约束。我们将使用 MySQL 数据库来编写所有查询。 1. NOT NULL
注意:NULL 不等于零。NULL 表示空列,而不是零。在创建表时应用 NOT NULL 约束的语法 示例 创建一个 student 表,并在创建表时对表的某一列应用 NOT NULL 约束。 ![]() 为验证 not null 约束已应用于表列并且 student 表已成功创建,我们将执行以下查询: ![]() 在现有表的列上应用 NOT NULL 约束的语法 示例 假设我们有一个现有的 student 表,上面没有应用任何约束。之后,我们决定对该表的某一列应用 NOT NULL 约束。那么我们将执行以下查询: ![]() 为验证 not null 约束已应用于 student 表的列,我们将执行以下查询: ![]() 2. UNIQUE
在单列上应用 UNIQUE 约束的语法 示例 创建一个 student 表,并在创建表时对表的某一列应用 UNIQUE 约束。 ![]() 为验证 unique 约束已应用于表列并且 student 表已成功创建,我们将执行以下查询: ![]() 在多列上应用 UNIQUE 约束的语法 示例 创建一个 student 表,并在创建表时对表的多个列应用 UNIQUE 约束。 ![]() 为验证 unique 约束已应用于表的多个列并且 student 表已成功创建,我们将执行以下查询: ![]() 在现有表的列上应用 UNIQUE 约束的语法 示例 假设我们有一个现有的 student 表,上面没有应用任何约束。之后,我们决定对该表的某一列应用 UNIQUE 约束。那么我们将执行以下查询: ![]() 为验证 unique 约束已应用于表列并且 student 表已成功创建,我们将执行以下查询: ![]() 3. PRIMARY KEY
在创建表时应用主键约束的语法 示例 创建一个 student 表,并在创建表时应用 PRIMARY KEY 约束。 ![]() 为验证 primary key 约束已应用于表列并且 student 表已成功创建,我们将执行以下查询: ![]() 在现有表的列上应用主键约束的语法 示例 假设我们有一个现有的 student 表,上面没有应用任何约束。之后,我们决定对该表的列应用 PRIMARY KEY 约束。那么我们将执行以下查询: ![]() 为验证 primary key 约束已应用于 student 表的列,我们将执行以下查询: ![]() 4. FOREIGN KEY
在创建表时应用外键约束的语法 示例 创建一个 employee 表,并在创建表时应用 FOREIGN KEY 约束。 要为任何表创建外键,首先我们需要在一个表上创建一个主键。 ![]() 为验证 primary key 约束已应用于 employee 表的列,我们将执行以下查询: ![]() 现在,我们将编写一个查询,在 department 表上应用外键,引用 employee 表的主键,即 Emp_ID。 ![]() 为验证 foreign key 约束已应用于 department 表的列,我们将执行以下查询: ![]() 带约束名称应用外键约束的语法 示例 创建一个 employee 表,并在创建表时带约束名称应用 FOREIGN KEY 约束。 要为任何表创建外键,首先我们需要在一个表上创建一个主键。 ![]() 为验证 primary key 约束已应用于 student 表的列,我们将执行以下查询: ![]() 现在,我们将编写一个查询,在 department 表上带约束名称应用外键,引用 employee 表的主键,即 Emp_ID。 ![]() 为验证 foreign key 约束已应用于 department 表的列,我们将执行以下查询: ![]() 在现有表的列上应用外键约束的语法 示例 假设我们有现有的 employee 和 department 表。之后,我们决定对 department 表的列应用 FOREIGN KEY 约束。那么我们将执行以下查询: ![]() ![]() 为验证 foreign key 约束已应用于 department 表的列,我们将执行以下查询: ![]() 5. CHECK
在单列上应用 check 约束的语法 示例 创建一个 student 表,并在创建表时应用 CHECK 约束来检查年龄是否小于或等于 15。 ![]() 为验证 check 约束已应用于 student 表的列,我们将执行以下查询: ![]() 在多列上应用 check 约束的语法 示例 创建一个 student 表,并在创建表时应用 CHECK 约束来检查年龄是否小于或等于 15,并且百分比大于 85。 ![]() 为验证 check 约束已应用于 age 和 percentage 列,我们将执行以下查询: ![]() 在现有表的列上应用 check 约束的语法 示例 假设我们有一个现有的 student 表。之后,我们决定对 student 表的列应用 CHECK 约束。那么我们将执行以下查询: ![]() 为验证 check 约束已应用于 student 表的列,我们将执行以下查询: ![]() 6. DEFAULT当对表列应用了 default 约束,并且用户没有指定要插入的值时,那么在应用 default 约束时指定的默认值将插入到该特定列中。 在创建表时应用 default 约束的语法 示例 创建一个 student 表,并在创建表时应用 default 约束。 ![]() 为验证 default 约束已应用于 student 表的列,我们将执行以下查询: ![]() 在现有表的列上应用 default 约束的语法 示例 假设我们有一个现有的 student 表。之后,我们决定对 student 表的列应用 DEFAULT 约束。那么我们将执行以下查询: ![]() 为验证 default 约束已应用于 student 表的列,我们将执行以下查询: ![]() 7. CREATE INDEXCREATE INDEX 约束用于在表上创建索引。索引对用户是不可见的,但它们有助于用户加快从数据库中搜索或检索数据的速度。 在单列上创建索引的语法 示例 在 student 表上创建一个索引,并在创建表时应用 default 约束。 ![]() 为验证 create index 约束已应用于 student 表的列,我们将执行以下查询: ![]() 在多列上创建索引的语法 示例 ![]() 为验证 create index 约束已应用于 student 表的列,我们将执行以下查询: ![]() 在现有表上创建索引的语法 假设我们有一个现有的 student 表。之后,我们决定对 student 表的列应用 DEFAULT 约束。那么我们将执行以下查询: ![]() 为验证 create index 约束已应用于 student 表的列,我们将执行以下查询: ![]() 下一个主题SQL 中的模式匹配 |
我们请求您订阅我们的新闻通讯以获取最新更新。