SQL Server 2012 唯一約束(定義唯一約束、刪除唯一約束)




準備知識

    如果要求數據表中的某列不能輸入重複值,有兩種約束可以做到。一種是主鍵約束,即該列是數據表的主鍵;另一種則是唯一約束,對於不是主鍵的列,唯一約束能夠確保不會出現重複值(可以爲NULL值)。
    唯一約束允許 NULL 值,這一點與主鍵約束不同。 不過,當與參與唯一約束的任何值一起使用時,每列只允許一個空值。 外鍵約束可以引用 唯一約束。
    默認情況下,向表中的現有列添加唯一約束後,數據庫引擎將檢查列中的現有數據,以確保所有值都是唯一的。 如果向含有重複值的列添加唯一約束, 數據庫引擎將返回錯誤消息,並且不添加約束。
    數據庫引擎將自動創建唯一索引來強制執行唯一約束的唯一性要求。 因此,如果試圖插入重複行, 數據庫引擎將返回錯誤消息,說明該操作違反了唯一約束,不能將該行添加到表中。 除非顯式指定了聚集索引,否則,默認情況下將創建唯一的非聚集索引以強制執行唯一約束。

定義唯一約束

使用SSMS工具定義唯一約束
  1. 展開“數據庫”,然後展開相應的數據庫,再展開數據庫中的“表”,右擊需要定義唯一約束的數據表,選擇“設計”。
    在這裏插入圖片描述
  2. 進入表設計器界面,點擊工具欄的“管理索引和鍵”按鈕,或者右鍵選擇“索引和鍵”。
    在這裏插入圖片描述
    在這裏插入圖片描述
  3. 進入“索引/鍵”對話框,點擊“添加”。
    在這裏插入圖片描述
  4. 單擊右側的“類型”,在右側下拉框中選擇“唯一鍵”。
    在這裏插入圖片描述
  5. 單擊右側的“列”,點擊右邊的“…”按鈕。
    在這裏插入圖片描述
  6. 進入索引列對話框,在列名中選擇需要添加唯一性約束的屬性列,點擊“確定”。
    在這裏插入圖片描述
  7. 在“標識”的“(名稱)”中修改唯一約束的名稱,點擊“關閉”。
    在這裏插入圖片描述
  8. 點擊保存鍵,或者按Ctrl+F5鍵進行保存。展開數據表,展開“鍵”,可以看到定義的唯一約束。
    在這裏插入圖片描述

使用SQL方式定義唯一約束
方式一:在創建數據表的時候定義唯一約束
  1. 在SSMS工具欄中單擊“新建查詢”,打開“SQL編輯器”窗口
    在這裏插入圖片描述
  2. 輸入創建SQL代碼
USE schoolDB                                                 --打開數據庫schoolDB
GO
IF EXISTS(SELECT * FROM sysobjects WHERE name='student') 
DROP TABLE student                --檢查student是否已經存在,如果存在,則刪除
GO
CREATE TABLE student                                           --表名爲student
(
	  StuID int NOT NULL,                                           --學生學號
	  StuName varchar(15) UNIQUE NOT NULL,                          --學生姓名
	  Sex char(2) NULL,                                             --性別
	  Major varchar(20) NULL,                                      --所選專業
)


  1. 點擊“分析”按鈕,或按住Ctrl+F5,對SQL代碼進行語法分析,確保SQL語句語法正確。
    在這裏插入圖片描述
  2. 點擊“執行”按鈕,或按住F5,執行SQL代碼。
    在這裏插入圖片描述
  3. 查看數據表中的鍵。
    在這裏插入圖片描述

方式二:修改數據表定義唯一約束
  1. 在SSMS工具欄中單擊“新建查詢”,打開“SQL編輯器”窗口
    在這裏插入圖片描述
  2. 輸入創建SQL代碼
USE schoolDB                                                 --打開數據庫schoolDB
GO
ALTER TABLE student
ADD CONSTRAINT UQ_student_StuName UNIQUE(StuName) 
			--將student表中的StuName列定義唯一約束


  1. 點擊“分析”按鈕,或按住Ctrl+F5,對SQL代碼進行語法分析,確保SQL語句語法正確。
    在這裏插入圖片描述
  2. 點擊“執行”按鈕,或按住F5,執行SQL代碼。
    在這裏插入圖片描述
  3. 查看數據表中的鍵。
    在這裏插入圖片描述



刪除唯一約束

使用SSMS工具刪除唯一約束
方式一:在對象資源管理器中刪除唯一約束
  1. 展開需要刪除唯一約束的數據表,然後再展開“鍵”。
    在這裏插入圖片描述
  2. 右擊需要刪除的唯一約束,選擇“刪除”。
    在這裏插入圖片描述
  3. 在刪除對象界面,點擊“確定”,即可完成唯一約束刪除。
    在這裏插入圖片描述

方式二:在表設計器中刪除唯一約束
  1. 右擊需要刪除唯一約束的數據表,選擇“設計”。
    在這裏插入圖片描述

  2. 進入表設計器界面,點擊工具欄的“管理索引和鍵”按鈕,或者右鍵選擇“索引和鍵”。
    在這裏插入圖片描述
    在這裏插入圖片描述

  3. 在“索引/鍵”對話框中選擇需要刪除的唯一約束,點擊“刪除”,完成唯一約束的刪除。
    在這裏插入圖片描述


使用SQL方式刪除唯一約束
  1. 在SSMS工具欄中單擊“新建查詢”,打開“SQL編輯器”窗口
    在這裏插入圖片描述

  2. 輸入創建SQL代碼

USE schoolDB --打開schoolDB數據庫
GO
ALTER TABLE class 
DROP CONSTRAINT UQ_class_ClassName   --刪除表class的唯一約束UQ_class_ClassName

  1. 點擊“分析”按鈕,或按住Ctrl+F5,對SQL代碼進行語法分析,確保SQL語句語法正確。
    在這裏插入圖片描述
  2. 點擊“執行”按鈕,或按住F5,執行SQL代碼。
    在這裏插入圖片描述
  3. 唯一約束已被刪除。
    在這裏插入圖片描述



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章