- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表
- SQL - 建立表
- SQL - 顯示錶
- SQL - 重命名錶
- SQL - 截斷表
- SQL - 克隆表
- SQL - 臨時表
- SQL - 修改表
- SQL - 刪除表
- SQL - 刪除表資料
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布林 (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線 vs 右連線
- SQL - UNION vs JOIN
- SQL 鍵
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 組合鍵
- SQL - 候選鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - MIN & MAX
- SQL - NULL 函式
- SQL - CHECK 約束
- SQL - DEFAULT 約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 通用表表達式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - 唯一鍵
SQL 唯一鍵
SQL 唯一鍵(或唯一約束)不允許表中某列出現重複值。它防止兩條記錄在同一列中具有相同的值。
唯一鍵只是主鍵的替代方案;因為唯一約束和主鍵約束都確保表中某列的唯一性。
假設我們有一個名為 CUSTOMERS 的表,用於儲存銀行中的客戶記錄,如果其中一列名為 MOBILE_NO,那麼我們可以在此列上建立一個唯一約束,以防止輸入具有相同手機號碼的多個記錄。
唯一鍵的特性
以下是 SQL 資料庫中唯一鍵的一些關鍵特性的列表:
唯一鍵類似於表中的主鍵,但它可以接受 NULL 值,而主鍵則不能。
它只接受一個 NULL 值。
它不能有重複值。
它也可以用作另一個表中的外部索引鍵。
一個表可以有多個唯一列。
建立 SQL 唯一鍵
您可以使用 SQL 中的 UNIQUE 關鍵字在資料庫表上建立唯一鍵。建立資料庫表時,請在列(需要在此列上定義此鍵)旁邊指定此 SQL 關鍵字。
語法
以下是建立表中某列唯一鍵約束的語法:
CREATE TABLE table_name( column1 datatype UNIQUE KEY, column2 datatype, ..... ..... columnN datatype );
示例
使用以下 SQL 查詢,我們正在建立一個名為 CUSTOMERS 的表,其中包含五個欄位 ID、NAME、AGE、ADDRESS 和 SALARY。在這裡,我們正在 ID 列上建立一個唯一鍵。
CREATE TABLE CUSTOMERS ( ID INT NOT NULL UNIQUE KEY, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2) );
輸出
以下是上述 SQL 語句的輸出:
Query OK, 0 rows affected (0.03 sec)
驗證
由於我們在名為 ID 的列上建立了一個唯一約束,因此我們不能在其中插入重複值。讓我們透過將以下具有重複 ID 值的記錄插入到 CUSTOMERS 表中來進行驗證:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (1, 'Khilan', 25, 'Delhi', 1500.00 );
執行後,將顯示以下錯誤,證明 ID 列上確實定義了唯一約束:
ERROR 1062 (23000): Duplicate entry '1' for key 'customers.ID'
多個唯一鍵
我們可以在 SQL 表中的一列或多列上建立一個或多個唯一鍵。
語法
以下是建立表中多列唯一鍵約束的語法:
CREATE TABLE table_name( column1 datatype UNIQUE KEY, column2 datatype UNIQUE KEY, ..... ..... columnN datatype );
示例
假設我們使用 CREATE TABLE 語句在 SQL 資料庫中建立了一個名為 CUSTOMERS 的表。如下所示,在 ID 和 NAME 列上定義了一個唯一鍵,使用了 UNIQUE 關鍵字:
CREATE TABLE BUYERS ( ID INT NOT NULL UNIQUE KEY, NAME VARCHAR(20) NOT NULL UNIQUE KEY, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2) );
輸出
以下是上述 SQL 語句的輸出:
Query OK, 0 rows affected (0.03 sec)
驗證
由於我們在名為 ID 和 NAME 的列上建立了一個唯一約束,因此我們不能在其中插入重複值。讓我們透過使用以下 INSERT 語句將重複記錄插入到 BUYERS 表中來進行驗證:
INSERT INTO BUYERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (1, 'Rajesh', 25, 'Delhi', 1500.00 );
顯示以下錯誤:
ERROR 1062 (23000): Duplicate entry '1' for key 'customers.ID'
同樣,如果您嘗試插入另一條記錄,其 NAME 列的值與之前重複:
INSERT INTO BUYERS VALUES (2, 'Ramesh', 36, 'Chennai', 1700.00 );
將生成以下錯誤:
ERROR 1062 (23000): Duplicate entry 'Ramesh' for key 'buyers.NAME'
現有列上的唯一鍵
到目前為止,我們只看到瞭如何在建立新表時在列上定義唯一鍵。但是,我們也可以在表的現有列上新增唯一鍵。這是使用 ALTER TABLE... ADD CONSTRAINT 語句完成的。
語法
以下是建立表現有列上唯一約束的語法:
ALTER TABLE table_name ADD CONSTRAINT UNIQUE_KEY_NAME UNIQUE (column_name);
注意 - 這裡的 UNIQUE_KEY_NAME 只是唯一鍵的名稱。指定它是可選的,用於從表中的列刪除約束。
示例
在此示例中,我們在現有 CUSTOMERS 表的 ADDRESS 列上添加了一個唯一鍵:
ALTER TABLE CUSTOMERS ADD CONSTRAINT UNIQUE_ADDRESS UNIQUE(ADDRESS);
輸出
以下是上述語句的輸出:
Query OK, 0 rows affected (0.05 sec) Records: 0 Duplicates: 0 Warnings: 0
刪除 SQL 唯一鍵
如果您已經在列上建立了一個唯一鍵,則可以在不需要時將其刪除。要從表的列中刪除唯一鍵,您需要使用 ALTER TABLE 語句。
語法
以下是刪除表列中唯一約束的 SQL 查詢:
ALTER TABLE table_name DROP CONSTRAINT UNIQUE_KEY_NAME;
示例
考慮上面建立的 CUSTOMERS 表,我們在名為 ID、NAME 和 ADDRESS 的三列上建立了唯一約束;透過執行以下 SQL 查詢,從 ADDRESS 列刪除唯一約束:
ALTER TABLE CUSTOMERS DROP CONSTRAINT UNIQUE_ADDRESS;
輸出
以下是上述語句的輸出:
Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0
驗證
現在,讓我們插入 ADDRESS 列的兩條重複記錄:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Ahmedabad', 1500.00 );
如果您驗證表的內容,您可以觀察到兩條記錄都具有相同的 ADDRESS,如下所示:
| ID | 姓名 | 年齡 | 地址 | 薪水 |
|---|---|---|---|---|
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Ahmedabad | 1500.00 |