数据库 · 6 11 月, 2024

SQL Server 唯一約束的創建

SQL Server 唯一約束的創建

在資料庫管理系統中,約束(Constraint)是用來限制資料表中資料的完整性和一致性的重要工具。SQL Server 提供了多種約束,其中之一就是唯一約束(UNIQUE Constraint)。唯一約束的主要功能是確保資料表中的某一列或某幾列的值是唯一的,這樣可以防止重複資料的出現。

什麼是唯一約束?

唯一約束是一種資料完整性約束,確保資料表中的某一列或多列的值不會重複。這意味著在該列中,所有的值必須是唯一的,除了 NULL 值。值得注意的是,唯一約束允許在同一列中存在多個 NULL 值,因為 NULL 被視為未知的值,不會與其他值相等。

如何創建唯一約束

在 SQL Server 中,可以在創建資料表時或在資料表已存在的情況下添加唯一約束。以下是兩種常見的方法:

1. 在創建資料表時添加唯一約束

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    Email NVARCHAR(255) UNIQUE,
    PhoneNumber NVARCHAR(20) UNIQUE
);

在上述範例中,`Email` 和 `PhoneNumber` 列都被設置為唯一約束,這意味著每位員工的電子郵件和電話號碼必須是唯一的。

2. 在已存在的資料表中添加唯一約束

ALTER TABLE Employees
ADD CONSTRAINT UQ_Email UNIQUE (Email);

在這個範例中,我們使用 `ALTER TABLE` 語句來向已存在的 `Employees` 資料表添加一個名為 `UQ_Email` 的唯一約束,確保 `Email` 列中的值是唯一的。

唯一約束的注意事項

  • 唯一約束可以應用於多列,這意味著可以確保多個列的組合是唯一的。
  • 在插入或更新資料時,如果違反唯一約束,SQL Server 將返回錯誤,並且該操作將被拒絕。
  • 唯一約束不會自動創建索引,但 SQL Server 會為唯一約束自動創建一個唯一索引,以提高查詢性能。

範例:多列唯一約束

假設我們有一個 `Users` 資料表,我們希望確保每位用戶的 `FirstName` 和 `LastName` 的組合是唯一的。可以這樣創建:

CREATE TABLE Users (
    UserID INT PRIMARY KEY,
    FirstName NVARCHAR(50),
    LastName NVARCHAR(50),
    CONSTRAINT UQ_UserName UNIQUE (FirstName, LastName)
);

在這個範例中,`UQ_UserName` 是一個多列唯一約束,確保 `FirstName` 和 `LastName` 的組合不會重複。

總結

唯一約束在 SQL Server 中是一個重要的功能,能夠幫助開發者維護資料的完整性和一致性。通過適當地使用唯一約束,可以有效地防止重複資料的出現,從而提高資料庫的質量和可靠性。如果您正在尋找高效的 VPS 解決方案來運行您的 SQL Server,Server.HK 提供了多種選擇,滿足不同需求的客戶。