在 SQL Server 中,创建表时可以直接为字段添加唯一约束(UNIQUE)
在 SQL Server 中,创建表时可以直接为字段添加唯一约束(UNIQUE)。在 CREATE TABLE 语句中,定义字段时,可以使用 UNIQUE 关键字来确保该字段的值唯一。
语法:
CREATE TABLE your_table (
a INT UNIQUE,
-- 其他字段
);
假设你需要创建一个表 employees,其中字段 email 需要保持唯一,可以按如下方式编写 CREATE TABLE 语句:
CREATE TABLE employees (
id INT PRIMARY KEY,
email VARCHAR(255) UNIQUE,
name VARCHAR(100)
);
如果要为多个字段联合唯一约束,可以使用 UNIQUE 约束时指定多个字段。例如,要求 email 和 name 的组合唯一,可以如下创建表:
CREATE TABLE employees (
id INT PRIMARY KEY,
email VARCHAR(255),
name VARCHAR(100),
CONSTRAINT uq_email_name UNIQUE (email, name)
);
ALTER TABLE employees ADD CONSTRAINT uq_employees_SBMC UNIQUE (SBMC);
========================================================================================
在 SQL Server 中,UNIQUE 和 PRIMARY KEY 都用于确保列中的数据唯一性,但它们有一些关键的区别。下面是详细解释:
1. PRIMARY KEY
-
唯一性:
PRIMARY KEY强制列中的值是唯一的,即在表中每行的数据在该列上不能重复。 -
不能为空:
PRIMARY KEY自动地会确保该列不能有NULL值。每行必须有一个唯一的值。 -
一个表只能有一个
PRIMARY KEY:每个表只能有一个主键(通常主键可以由一个或多个列组成,称为复合主键)。 -
自动创建聚集索引:当创建
PRIMARY KEY时,SQL Server 会自动为该列创建聚集索引。聚集索引定义了表中数据的物理存储顺序,因此PRIMARY KEY列的值会决定表中数据的存储顺序。sql
-
CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, Name NVARCHAR(50) );
2. UNIQUE
-
唯一性:
UNIQUE约束也要求列中的数据是唯一的,但它不强制列不能包含NULL值。实际上,可以有多个NULL值,因为NULL被视为不等于任何值。 -
可以有多个:一个表中可以有多个
UNIQUE约束,这样可以确保多个不同列的唯一性。 -
创建非聚集索引:与
PRIMARY KEY不同,UNIQUE约束会创建非聚集索引,而不会改变表数据的物理存储顺序。sql
-
CREATE TABLE Employees ( EmployeeID INT UNIQUE, Email NVARCHAR(100) UNIQUE );
总结区别
| 特性 | PRIMARY KEY | UNIQUE |
|---|---|---|
| 唯一性 | 强制唯一 | 强制唯一,但允许多个 NULL 值 |
NULL 值 |
不允许 NULL |
允许多个 NULL 值 |
| 表中的个数 | 每个表只能有一个主键 | 每个表可以有多个唯一约束 |
| 索引 | 自动创建聚集索引(决定数据存储顺序) | 创建非聚集索引 |
| 使用场景 | 用于表的主键列,通常是表的标识列 | 用于要求唯一的数据列,但不需要作为主键的列 |
常见使用场景
- PRIMARY KEY:当你需要确保表中每一行都有一个唯一标识符时(通常是 ID 列)。
- UNIQUE:当你希望确保某个列中的数据唯一,但它不是主键时(例如,确保电子邮件地址、用户名等是唯一的)。
希望这些信息帮助你理解两者的区别!如果有其他问题,随时问我。

浙公网安备 33010602011771号