SQL Server 2012 外鍵約束(定義外鍵、刪除外鍵)







準備知識

    外鍵(FK)是用於建立或加強兩個表數據之間的鏈接的一列或多列。
    通過將表中主鍵值的一列或多列添加到另一個表中,可創建兩個表之間的連接,這個列就成爲第二個表的外鍵
    FK約束的目的是控制存儲在外表中的數據,同時可以控制對主鍵表中數據的修改
    例如:publishers表中記錄出版商的信息,titles表中記錄書的信息,如果在publishers的表中刪除一個出版商,而這個出版商的ID在titles表中記錄書的信息時被使用了,則這兩個表之間關聯的完整性將被破壞,即titles表中該出版商的書籍因爲與publisher表中的數據沒有鏈接而變的孤立。
    FK約束可以防止這種情況的發生,如果主鍵表中數據的更改使得與外鍵表中數據的鏈接失效,則這種更改是不能實現的;如果試圖刪除主鍵表中的行或試圖修改主鍵值,而該主鍵值與另一個表的FK約束值相關,則該操作不可實現。若要成功的更改或刪除FK約束的行,可以現在外鍵表中刪除外鍵數據或更改外鍵數據,然後將外鍵連接到不同的主鍵數據上去
    外鍵主要是用來控制數據庫中的數據完整性的,當對一個表的數據進行操作時,和他有關聯的一個表或多個表的數據能夠同時發生改變



兩個數據表結構如下所示:
(1)student表
在這裏插入圖片描述
(2)class表
在這裏插入圖片描述

定義外鍵

使用SSMS工具定義外鍵
  1. 右擊需要添加外鍵的數據表,選擇“設計”。
    在這裏插入圖片描述
  2. 進入表設計器界面,選擇工具欄上的關係圖標,或者右擊數據表中的行,在彈出的對話框中選擇“關係”。
    在這裏插入圖片描述
    在這裏插入圖片描述
  3. 進入外鍵關係對話框,單擊“添加”。
    在這裏插入圖片描述
  4. 點擊右側網格中的“表和列規範”,再點擊右側的“…”按鈕。
    在這裏插入圖片描述
  5. 進入表和列對話框,從主鍵表中選擇需要外鍵所在的數據表。
    在這裏插入圖片描述
  6. 在主鍵表下方的表格中,選擇此表中的主鍵列,在相鄰的網格中選擇外鍵表中相應的外鍵列。
    在這裏插入圖片描述
  7. 在“關係名”中填寫適合的關係名,點擊“確定”。
    在這裏插入圖片描述
  8. 關閉外鍵關係對話框,點擊保存鍵,或者按Ctrl+F5鍵進行保存。展開剛開打開的數據表,再展開“鍵”,就可以看到剛纔定義的外鍵。
    在這裏插入圖片描述
    注意:
    (1)定義外鍵約束的列的數據類型必須和引用的主鍵列的數據類型相通
    (2)在定義外鍵約束之前,外鍵所在的表必須已經定義了主鍵

使用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) NOT NULL,                                 --學生姓名
	  Sex char(2) NULL,                                             --性別
	  Major varchar(20) NULL,                                      --所選專業
	  ClassID int NULL FOREIGN KEY REFERENCES class(ClassID)

)

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

方式二:修改數據表定義外鍵
  1. 在SSMS工具欄中單擊“新建查詢”,打開“SQL編輯器”窗口
    在這裏插入圖片描述
  2. 輸入創建SQL代碼
USE schoolDB
GO
ALTER TABLE student --打開schoolDB數據庫
ADD CONSTRAINT FK_student_class FOREIGN KEY(ClassID) REFERENCES class(ClassID)     
                          --在表product的CatID列上定義與表category的外鍵關係

  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 student 
DROP CONSTRAINT FK_student_class   --刪除表student的外鍵FK_student_class

  1. 點擊“分析”按鈕,或按住Ctrl+F5,對SQL代碼進行語法分析,確保SQL語句語法正確。
    在這裏插入圖片描述
  2. 點擊“執行”按鈕,或按住F5,執行SQL代碼。
    在這裏插入圖片描述
  3. 外鍵已被刪除。
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章