UNIQUE

简介: 【11月更文挑战第14天】

SQL UNIQUE 约束详解

UNIQUE 约束在 SQL 中用于确保某列或某几列的组合值在表中是唯一的。这意味着在应用了 UNIQUE 约束的列中,不能有两条记录具有相同的值,除非该值为 NULLUNIQUE 约束有助于维护数据的完整性,特别是在需要确保某些标识符(如电子邮件地址、电话号码等)在整个表中唯一的情况下。

特点和使用场景

  • 允许 NULL 值:与 PRIMARY KEY 不同,UNIQUE 约束允许列中有 NULL 值,并且可以有多个 NULL 值。
  • 多列唯一性:可以在多个列上设置 UNIQUE 约束,这样只有当这些列的组合值唯一时,才能插入新记录。
  • 多个 UNIQUE 约束:一个表可以有多个 UNIQUE 约束,但只能有一个 PRIMARY KEY 约束。

SQL UNIQUE 约束语法

在创建表时,可以为特定列或多个列定义 UNIQUE 约束:

CREATE TABLE table_name
(
    column1 data_type UNIQUE,
    column2 data_type UNIQUE,
    ...
);

或者,为多个列定义一个 UNIQUE 约束:

CREATE TABLE table_name
(
    column1 data_type,
    column2 data_type,
    UNIQUE (column1, column2)
    ...
);

代码示例

假设我们正在创建一个名为 Persons 的表,其中包含人的 ID、姓氏、名字和电子邮件地址。我们希望确保 P_Id(假设为电子邮件地址)在整个表中是唯一的。

CREATE TABLE Persons (
    P_Id varchar(255) UNIQUE,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
    Age int
);

在这个例子中:

  • P_Id 列被定义为 UNIQUE,这意味着在插入或更新 Persons 表的记录时,P_Id 的值必须是唯一的,不能有两条记录具有相同的 P_Id 值。
  • 如果尝试插入具有已存在的 P_Id 值的新记录,数据库系统将返回错误。

在多列上应用 UNIQUE 约束

如果我们需要确保 LastNameFirstName 的组合是唯一的,可以这样定义:

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
    Age int,
    UNIQUE (LastName, FirstName)
);

在这个例子中,LastNameFirstName 的组合值必须是唯一的。如果尝试插入具有相同姓氏和名字的另一条记录,数据库系统将返回错误。

目录
相关文章
|
关系型数据库 MySQL 索引
不会2023年你还不知道Mysql中index、primary key、unique key、foreign key是什么和如何创建吧?
不会2023年你还不知道Mysql中index、primary key、unique key、foreign key是什么和如何创建吧?
94 0
|
6月前
|
关系型数据库 分布式数据库 PolarDB
InnoDB unique check 的问题
unique secondary index 是客户经常使用的场景,用来保证index 上的record 的唯一性。但是大量的客户在使用unique secondary index以后,会发现偶尔会有死锁或者不应该锁等待的时候,却发生锁等待的情况。也有很多客户来问我们这个问题。理论上PolarDB ...
107 0
InnoDB unique check 的问题
|
SQL Oracle 关系型数据库
SQL FOREIGN KEY Constraint on CREATE TABLE
SQL FOREIGN KEY Constraint on CREATE TABLE
89 1
|
存储 关系型数据库 MySQL
ERROR 1215 (HY000): Cannot add foreign key constraint
ERROR 1215 (HY000): Cannot add foreign key constraint
ERROR 1215 (HY000): Cannot add foreign key constraint
|
C++ 容器
STL中的unique和unique_copy函数
一、unique函数 这个函数的功能就是删除相邻的重复元素,然后重新排列输入范围内的元素,并返回一个最后一个无重复值的迭代器(并不改变容器长度)。 例如: 1 vectorq(10); 2 for(int i = 0; i < 10; i++){ 3 ...
1246 0
1041 Be Unique (20)
#include #include #include #include #include using namespace std; int main() { int n; cin >> n; ...
761 0
|
关系型数据库
|
关系型数据库
|
SQL 关系型数据库 Oracle
|
C++ 关系型数据库 Oracle