機房收費系統個人重構版開始了,但在設計資料庫時遇到了寫小麻煩,主要是資料庫中約束的應用,以前在學習資料庫時進行了總結,在剛開始學習時使用的是SQL Server2000 小操作了下,查證了幾種約束的作用,但現在升級為 08 版的 SQL所以在操作方式上有了些區別。雖然是小麻煩但是也反映了我們學習的一種習慣,在對知識進行封存後就放到一邊,等待下次的呼叫,知識是要進行反覆咀嚼才能消化的。
那閒話少說進入我們今天的主題, SQLServer 中有五種約束, Primary Key 約束、 Foreign Key 約束、 Unique 約束、 Default 約束和 Check 約束,今天使用SQL Server2008 來演示下這幾種約束的建立和使用的方法。
1 、 Primary Key 約束
在表中常有一列或多列的組合,其值能唯一標識表中的每一行。
這樣的一列或多列成為表的主鍵(PrimaryKey)。一個表只能有一個主鍵,而且主鍵約束中的列不能為空值。只有主鍵列才能被作為其他表的外來鍵所建立。
建立主鍵約束可以右鍵單擊表,選擇設計 。
選中要建立主鍵的列,然後單擊上面的小鑰匙。
也可以右鍵需要建立主鍵的列,然後單擊小鑰匙。
2 、 Foreign Key 約束
外來鍵約束是用來加強兩個表(主表和從表)的一列或多列資料之間的連線的。建立外來鍵約束的順序是先定義主表的主鍵,然後定義從表的外來鍵。也就是說只有主表的主鍵才能被從表用來作為外來鍵使用,被約束的從表中的列可以不是主鍵,主表限制了從表更新和插入的操作。
右鍵單擊需要設定外來鍵的列(此時的表是作為從表在外來鍵中出現),選擇關係。
接下來點選新增 --> 表和列規範。
在主鍵表中選擇主表和主表的主鍵列。
設定完後儲存即可。
3 、 Unique 約束
唯一約束確保表中的一列資料沒有相同的值。與主鍵約束類似,唯一約束也強制唯一性,但唯一約束用於非主鍵的一列或者多列的組合,且一個表可以定義多個唯一約束。
右鍵單擊要設定的列選擇索引 / 鍵。
然後單擊新增按鈕。
選擇需要設定的列,可以是一列也可以是多列的組合。
關閉並儲存設定。
4 、 Default 約束
若在表中定義了預設值約束,使用者在插入新的資料行時,如果該行沒有指定資料,那麼系統將預設值賦給該列,如果我們不設定預設值,系統預設為 NULL 。
以學生資訊表為例,在表設計器中,為性別 sex 列填寫預設值男。
5 、 Check 約束
Check 約束通過邏輯表示式來判斷資料的有效性,用來限制輸入一列或多列的值的範圍。在列中更新資料時,所要輸入的內容必須滿足 Check 約束的條件,否則將無法正確輸入。
以學生資訊表中的 sex 為例,我們要限制 sex 列的值只能為男或女。
關閉並儲存設計。
致此,資料庫中的五種約束情況又複習了一遍,約束確保了資料庫中資料的完整性,但只有約束 是 遠遠不夠的。