在 SQL Server 中,创建表时可以直接为字段添加唯一约束(UNIQUE)

在 SQL Server 中,创建表时可以直接为字段添加唯一约束(UNIQUE)。在 CREATE TABLE 语句中,定义字段时,可以使用 UNIQUE 关键字来确保该字段的值唯一。

语法:

sql
CREATE TABLE your_table (
    a INT UNIQUE,
    -- 其他字段
);

假设你需要创建一个表 employees,其中字段 email 需要保持唯一,可以按如下方式编写 CREATE TABLE 语句:

sql
CREATE TABLE employees (
    id INT PRIMARY KEY,
    email VARCHAR(255) UNIQUE,
    name VARCHAR(100)
);

如果要为多个字段联合唯一约束,可以使用 UNIQUE 约束时指定多个字段。例如,要求 emailname 的组合唯一,可以如下创建表:

sql
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);


========================================================================================
employees
============================================
 

在 SQL Server 中,UNIQUEPRIMARY 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 KEYUNIQUE
唯一性 强制唯一 强制唯一,但允许多个 NULL
NULL 不允许 NULL 允许多个 NULL
表中的个数 每个表只能有一个主键 每个表可以有多个唯一约束
索引 自动创建聚集索引(决定数据存储顺序) 创建非聚集索引
使用场景 用于表的主键列,通常是表的标识列 用于要求唯一的数据列,但不需要作为主键的列

常见使用场景

  • PRIMARY KEY:当你需要确保表中每一行都有一个唯一标识符时(通常是 ID 列)。
  • UNIQUE:当你希望确保某个列中的数据唯一,但它不是主键时(例如,确保电子邮件地址、用户名等是唯一的)。

希望这些信息帮助你理解两者的区别!如果有其他问题,随时问我。

 
posted @   熊大熊二  阅读(321)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
点击右上角即可分享
微信分享提示