📜  sql 唯一 - SQL (1)

📅  最后修改于: 2023-12-03 15:20:16.670000             🧑  作者: Mango

SQL 唯一

SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言。在SQL中,唯一性是一种数据约束,用于确保数据库中的每个行或每个组合的行具有唯一的值。

唯一性约束

在关系型数据库中,唯一性约束可以在表级别或列级别上进行定义。在定义唯一性约束时,可以为列分配一个唯一性索引,以确保该列的值是唯一的,或者可以通过在表上定义唯一性索引来保证一个或多个列的组合值是唯一的。

单列唯一性约束
CREATE TABLE students (
   id INT PRIMARY KEY,
   name VARCHAR(20),
   email VARCHAR(50) UNIQUE
);

以上示例创建了一个名为students的表,其中email列定义了唯一性约束,以确保每个电子邮件地址值是唯一的。如果尝试插入重复的值,则会引发错误。

组合列唯一性约束
CREATE TABLE courses (
   id INT PRIMARY KEY,
   name VARCHAR(50),
   course_code VARCHAR(10),
   UNIQUE (name, course_code)
);

以上示例创建了一个名为courses的表,其中namecourse_code组合起来定义了唯一性约束,以确保每个课程名称和课程代码的组合值是唯一的。

唯一性索引

可以为表的列或组合列定义唯一性索引,在执行查找或更新操作时,来确保每个值或组合值都是唯一的。

在列上定义唯一性索引
CREATE TABLE teachers (
   id INT PRIMARY KEY,
   name VARCHAR(50),
   email VARCHAR(50),
   UNIQUE (email)
);

以上示例创建了一个名为teachers的表,其中email列定义了唯一性索引,以确保每个电子邮件地址值是唯一的。如果尝试插入重复的值,则会引发错误。

在组合列上定义唯一性索引
CREATE TABLE enrollments (
   id INT PRIMARY KEY,
   student_id INT,
   course_id INT,
   UNIQUE (student_id, course_id)
);

以上示例创建了一个名为enrollments的表,其中student_idcourse_id组合起来定义了唯一性索引,以确保每个学生与每个课程只能注册一次。

总结

在关系型数据库中,唯一性约束和唯一性索引都可以用于确保数据库中的每个行或组合的行具有唯一的值。唯一性约束是表级别的,可以为列或组合列定义,而唯一性索引是列级别的,它们也可以用于确保每个值或组合值是唯一的。在设计关系型数据库时,正确使用这些功能可以帮助避免重复数据的出现。