溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SQL Server 中怎么創(chuàng)建約束

發(fā)布時間:2021-07-28 16:13:48 來源:億速云 閱讀:220 作者:Leah 欄目:數(shù)據(jù)庫

今天就跟大家聊聊有關(guān)SQL Server 中怎么創(chuàng)建約束,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

什么是主鍵?

在數(shù)據(jù)庫中,常常不只是一個表,這些表之間也不是相互獨立的。不同的表之間需要建立一種關(guān)系,才能將它們的數(shù)據(jù)相互溝通。而在這個溝通過程中,就需要表中有一個字段作為標(biāo)志,不同的記錄對應(yīng)的字段取值不能相同,也不能是空白的。通過這個字段中不同的值可以區(qū)別各條記錄。就像我們區(qū)別不同的人,每個人都有名字,但它卻不能作為主鍵,因為人名很容易出現(xiàn)重復(fù),而身份證號是每個人都不同的,所以可以根據(jù)它來區(qū)別不同的人。數(shù)據(jù)庫的表中作為主鍵的字段就要像人的身份證號一樣,必須是每個記錄的值都不同,這樣才能根據(jù)主鍵的值來確定不同的記錄。

如果為表指定了 PRIMARY KEY 約束,則 SQL Server 2005 數(shù)據(jù)庫引擎 將通過為主鍵列創(chuàng)建唯一索引來強制數(shù)據(jù)的唯一性。當(dāng)在查詢中使用主鍵時,此索引還可用來對數(shù)據(jù)進(jìn)行快速訪問。因此,所選的主鍵必須遵守創(chuàng)建唯一索引的規(guī)則。

創(chuàng)建主鍵時,數(shù)據(jù)庫引擎 會自動創(chuàng)建唯一的索引來強制實施 PRIMARY KEY 約束的唯一性要求。如果表中不存在聚集索引或未顯式指定非聚集索引,則將創(chuàng)建唯一的聚集索引以強制實施 PRIMARY KEY 約束。

唯一性約束1) 唯一性約束所在的列允許空值,但是主鍵約束所在的列不允許空值。(2) 可以把唯一性約束放在一個或者多個列上,這些列或列的組合必須有唯一的只。但是,唯一性約束所在的列并不是表的主鍵列。(3) 唯一性約束強制在指定的列上創(chuàng)建一個唯一性索引。在默認(rèn)情況下,創(chuàng)建唯一性的非聚簇索引,但是,也可以指定所創(chuàng)建的索引是聚簇索引。

主鍵: 1) 用于標(biāo)識某行而且與之相關(guān). 2) 是不可能(或很難)更新. 3) 不應(yīng)該允許空(NULL).

唯一域/字段: 1) 用于作為訪問某行的可選手段.2) 只要唯一就可以更新. 3) 可以為空(NULLs).

注意唯一和主鍵的區(qū)別,它們都是創(chuàng)建一個唯一的索引,一個表格僅含有一個主鍵約束列,但是,它有可能在其他列中含有許多的唯一約束。

1、Primary Key約束

在表中常有一列或多列的組合,其值能唯一標(biāo)識表中的每一行。

這樣的一列或多列成為表的主鍵(PrimaryKey)。一個表只能有一個主鍵,而且主鍵約束中的列不能為空值。只有主鍵列才能被作為其他表的外鍵所創(chuàng)建。

創(chuàng)建主鍵約束可以右鍵單擊表,選擇設(shè)計。

選中要創(chuàng)建主鍵的列,然后單擊上面的小鑰匙。

也可以右鍵需要創(chuàng)建主鍵的列,然后單擊小鑰匙。

2、Foreign Key約束

外鍵約束是用來加強兩個表(主表和從表)的一列或多列數(shù)據(jù)之間的連接的。創(chuàng)建外鍵約束的順序是先定義主表的主鍵,然后定義從表的外鍵。也就是說只有主表的主鍵才能被從表用來作為外鍵使用,被約束的從表中的列可以不是主鍵,主表限制了從表更新和插入的操作。

右鍵單擊需要設(shè)置外鍵的列(此時的表是作為從表在外鍵中出現(xiàn)),選擇關(guān)系。

接下來點擊添加-->表和列規(guī)范。

在主鍵表中選擇主表和主表的主鍵列。

設(shè)置完后保存即可。

3、Unique約束

唯一約束確保表中的一列數(shù)據(jù)沒有相同的值。與主鍵約束類似,唯一約束也強制唯一性,但唯一約束用于非主鍵的一列或者多列的組合,且一個表可以定義多個唯一約束。

右鍵單擊要設(shè)置的列選擇索引/鍵。

然后單擊添加按鈕。

選擇需要設(shè)置的列,可以是一列也可以是多列的組合。

關(guān)閉并保存設(shè)置。

4、Default約束

若在表中定義了默認(rèn)值約束,用戶在插入新的數(shù)據(jù)行時,如果該行沒有指定數(shù)據(jù),那么系統(tǒng)將默認(rèn)值賦給該列,如果我們不設(shè)置默認(rèn)值,系統(tǒng)默認(rèn)為NULL。

以學(xué)生信息表為例,在表設(shè)計器中,為性別sex列填寫默認(rèn)值男。

5、Check約束

Check約束通過邏輯表達(dá)式來判斷數(shù)據(jù)的有效性,用來限制輸入一列或多列的值的范圍。在列中更新數(shù)據(jù)時,所要輸入的內(nèi)容必須滿足Check約束的條件,否則將無法正確輸入。

以學(xué)生信息表中的sex為例,我們要限制sex列的值只能為男或女。

關(guān)閉并保存設(shè)計。

致此,數(shù)據(jù)庫中的五種約束情況又復(fù)習(xí)了一遍,約束確保了數(shù)據(jù)庫中數(shù)據(jù)的完整性,但只有約束是遠(yuǎn)遠(yuǎn)不夠的。

看完上述內(nèi)容,你們對SQL Server 中怎么創(chuàng)建約束有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI