SQLite 表约束 – 多列的唯一性约束

SQLite 表约束 – 多列的唯一性约束

在本文中,我们将介绍SQLite数据库中的表约束,特别是使用多列来创建唯一性约束的方法。

阅读更多:SQLite 教程

什么是表约束?

在数据库中,表约束用于限制特定列或列组合的值。这些约束规定了一些规则,以确保数据的完整性和一致性。

为什么使用表约束?

使用表约束可以在数据库级别上确保数据的一致性和完整性。通过定义约束规则,数据库系统会在尝试插入、更新或删除数据时自动进行验证,如果不符合约束规则,则不会执行相关操作。

唯一性约束 – UNIQUENESS

唯一性约束用于确保表中指定列(或列组合)的值是唯一的,即不会出现重复值。在SQLite中,可以在表定义时指定唯一性约束,也可以在表创建后使用ALTER TABLE语句来添加唯一性约束。

在表定义时指定多列的唯一性约束

为了在表定义时指定多列的唯一性约束,我们可以在CREATE TABLE语句中使用UNIQUE关键字,后面跟上需要唯一性约束的列名。以下是一个示例:

CREATE TABLE employees (
  id INTEGER PRIMARY KEY,
  name TEXT,
  email TEXT UNIQUE,
  age INTEGER,
  CONSTRAINT uc_name_email UNIQUE (name, email)
);
SQL

在上述示例中,我们定义了一个名为employees的表,其中包含id、name、email和age四个列。在name和email列上,我们使用了UNIQUE关键字来分别指定了唯一性约束。

在CONSTRAINT关键字后面的uc_name_email是该约束的名称。通过给约束命名,我们可以在表变更操作中引用它。

添加表约束 – ALTER TABLE

如果需要在表创建之后添加唯一性约束,可以使用ALTER TABLE语句。以下是一个示例:

ALTER TABLE employees
ADD CONSTRAINT uc_name_email UNIQUE (name, email);
SQL

在上述示例中,我们使用ALTER TABLE语句向已存在的employees表添加了名为uc_name_email的唯一性约束。

示例

现在,让我们通过一个示例更好地理解多列的唯一性约束。

假设我们有一个用户表,其中包含name和email两个列。我们希望确保在该表中每个用户的name和email的组合是唯一的。

CREATE TABLE users (
  id INTEGER PRIMARY KEY,
  name TEXT,
  email TEXT,
  CONSTRAINT uc_name_email UNIQUE (name, email)
);
SQL

在上述示例中,我们定义了一个名为users的表,其中包含id、name和email三个列。我们使用CONSTRAINT关键字在name和email列上创建了一个唯一性约束,该约束命名为uc_name_email。

当我们尝试向该表中插入一条重复的name和email组合时,SQLite将会抛出一个错误,这是因为这个组合必须是唯一的。

INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'); -- 插入成功
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com'); -- 插入成功
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'); -- 抛出错误
SQL

在上述示例中,前两条INSERT语句成功插入了两条新的用户记录。然而,当我们尝试再次插入’name’为’Alice’和’email’为’alice@example.com’的记录时,由于违反了唯一性约束,SQLite将会抛出一个错误。

总结

在本文中,我们介绍了SQLite数据库中的表约束,重点讨论了多列的唯一性约束。通过定义唯一性约束,我们可以确保表中指定列(或列组合)的值是唯一的,避免了出现重复值的情况。使用UNIQUE关键字以及ALTER TABLE语句,我们可以轻松地在表定义时或之后添加唯一性约束。这些约束可以提高数据库数据的完整性和一致性,从而更好地支持应用程序的开发和维护。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册