資料庫表的約束

2021-09-07 10:50:58 字數 2693 閱讀 8435

在設計資料庫時。為了確保資料庫表中資料的質量。須要考慮資料的完整性(資料的完整性是指資料的正確性和一致性)。

舉個樣例:當你要為學生建立乙個基本資訊表studentinfo時,這個表中學生的名字能夠同樣可是學號必須不一樣,而他的年齡也得限制在一定範圍內,像這樣類似的「限制」有非常多,假設違反了這些限制就製造了與現實不符的失真資料即破壞了資料的完整性。由於資料庫不能自行推斷哪些資料失真,所以須要覺得加入一些約束來保證資料的完整性。

資料庫中對錶的約束有五種:

1.主鍵約束(primary key constraint):主鍵列資料唯一。而且不同意為空。

語法:constraint 主鍵約束名 primary key [ clustered | nonclustered ] ( 列名1,[ 列名2。……。列名n ] )

主鍵是表中的一列或一組列,它們的值能夠唯一地標識表中的每一行。

2.唯一約束(unique constraint):該列資料唯一,同意為空。但僅僅能出現乙個空值(不反覆性)。

語法:constraint 約束名 unique [ clustered | nonclustered ] ( 列名1。[ 列名2,…… 列名n] )

唯一性約束保證了除主鍵外的其他乙個或一組列的資料具有唯一性。以防止在列中輸入反覆的值。

(乙個表僅僅能夠有乙個主鍵約束。假設其他列也不希望有反覆就能夠使用唯一性約束。)

3.檢查約束(check constraint):範圍限制、格式限制

語法:constraint 約束名 check [ not for replication ] ( 邏輯表示式 )

檢查約束使指定表中一列或一組列能夠接受的資料值或格式。

4.預設約束(default constraint):

語法:constraint 約束名 default 約束表示式 [ for 列名 ]

為指定列定義乙個預設值。在輸入資料時。假設沒有輸入該列的值,則將該列的值設定為預設值。

5.外來鍵約束(foreign key constraint):表間約束。確保資料的參照完整性

語法:constraint 約束名 foreign key ( 列名1。[ 列名2,……列名n ] )     references 關聯表 ( 關聯列名1。[ 關聯列名2,……關聯列名n ] )  

將當前表中的某一列或一組列關聯到還有乙個表的主鍵列。可建立兩個表之間的連線。

當前表中的列就成為外來鍵。

外來鍵涉及到兩個表,乙個主表。乙個從表 。主表中的外來鍵是從表中的主鍵

以下以「學生資訊」表為例。加入約束

create table studentinfo

( studentno int not null,

studentid int,

studentname nvarchar(50) ,

*** varchar(2) ,

score float default(0), --為學生的成績設定預設值0,在沒有資料輸入時。系統自己主動分配為0.

departmentno varchar(10),

constraint pk_student primary key (studentno), --用「學號」作主鍵。僅僅要有學號就能夠唯一確定一位學生

constraint ix_student unique(studentid), --'為「身份證」加入唯一性約束,當輸入的身份證號有反覆時會自己主動檢查出錯誤

constraint ck_student check (*** in ('男','女')), --'檢查學生的性別是否為男或女

--'「學生資訊」表與「院系」表建立外來鍵約束,外來鍵為學生資訊表的"所屬院系",從表的主鍵或候選鍵列為「院系」表的「記錄編號」

constraint fk_student foreign key(departmentno) references department(recordno)

)

約束的建立主要有兩種,以加入主鍵為例:

(1)建立表的時候建立約束,即在createtable中定義約束

create studentinfo(studentno vchar primary key。……)

或者create studentinfo(studentno vchar,……constraint pk_student primary key(studentno)……)

(2)是向已經建立 好的表中加入約束,即在alter table中建立約束

alter table studentinfo add constraint pk_student primary key (studentno)

刪除約束:對於存在外來鍵約束的表,假設進行刪除非空的外來鍵,可能會出現錯誤

alter table studentinfo drop constraint pk_student

約束是sql server提供的自己主動保持資料庫完整性的一種方法,定義了可輸入表或表的單個列中的資料的限制條件。

對於資料庫來說,約束也可分為列約束(column constraint)和表約束(table constraint)。列約束作為列定義的一部分僅僅作用於此列本身。表約束作為表定義的一部分能夠作用於多個列。約束僅僅是資料庫對錶管理的一種,這些在曾經學過。可是不太會用,所以對約束先做乙個小結。

資料庫 表約束

非空且唯一 方式一 create table userid number,constraint pk user primary key userid username varchar2 10 方式二 create table userid number primary key,username va...

資料庫表約束

sql check約束 check約束屬性列內容的取值範圍。如果對單列進行check約束則只會對單列的取值有效。如果對錶進行check約束則對整張表的所有欄位都進行限制。eg 在建立persons表示為id p列建立check約束。此約束的約束範圍為 id p列的取值範圍不得小於0,要是大於0的整數...

資料庫 單錶約束

約束 對錶中的資料可以進行進一步的限制,來保證資料的唯一性,正確性和完整性。約束種類 primary key 主鍵約束 代表該字段的資料不能為空且不可重複 not null 非空 代表該字段的資料不能為空 unique 唯一 代表該字段的資料不能重複 乙個表中都得需要主鍵約束,用來標註一條記錄的唯一...