學習資料庫 約束

2021-10-04 21:15:44 字數 3159 閱讀 1561

約束語句

解釋主鍵約束

primary key

要求設定的列非空(not null)且唯一(unique)

外來鍵約束

foreign key (…) references【c】

要求設定的列參照列c,列c有資料時,在設定的列中才可新增相應的資料,兩列資料型別必須相同

非空約束

not null

要求設定的列非空

唯一性約束

unique

要求設定的列唯一

檢查約束

check

檢查列值是否滿足給定的乙個布林表示式

預設值約束

default

給設定的列乙個預設值

【t】表名

【c】列名

《s》資料型別

【y】約束名

【v】資料型別對應的乙個具體的值

【f】布林表示式

語句解釋

*** in(『男』,『女』)

性別必須是男或女

cno like 『[0-9][0-9][0-9]』

課程號必須是三位數字字元,如001

grade>=0 and grade<=100

成績必須在0至100之間

例如,學生的學號,每個人都有學號,並且是唯一的,不與其他人的學號重複

乙個表只可有乙個主鍵約束語句

解釋create table【t】(【c】《s》primary key)

建立表t的同時給列c設定主鍵

create table【t】(【c1】《s》,【c2】《s》,primary key(【c1,c2】))

建立表t的同時給列c1,c2設定主鍵

例如,學生所選課程的課程號,課程號必須提前存在,學生才可以選

乙個錶可有多個外來鍵約束語句

解釋create table【t】(【c1】《s》foreign key references【t1(c2)】)

建立表t的同時給列c1設定外來鍵,參考表t1的列c2

create table【t】(【c1】《s》foreign key references【t1(c2)】on《update/delete》no action)

建立表t的同時給列c1設定外來鍵,參考表t1的列c2

刪除/更新列c2資料時,拒絕刪除/更新,因為列c1與c2關聯

create table【t】(【c1】《s》foreign key references【t1(c2)】on《update/delete》cascade)

建立表t的同時給列c1設定外來鍵,參考表t1的列c2

刪除/更新列c2資料時,同時刪除/更新列c1對應的資料,使列c1與c2中的行(元組)相匹配

create table【t】(【c1】《s》foreign key references【t1(c2)】on《update/delete》set-null)

建立表t的同時給列c1設定外來鍵,參考表t1的列c2

刪除/更新列c2資料時,使列c1對應的資料變為空值

create table【t】(【c1】《s》,foreign key(【c1】) references【t1(c2)】)

建立表t的同時給列c1設定外來鍵,參考表t1的列c2

create table【t】(【c1】《s》,foreign key(【c1】) references【t1(c2)】on《update/delete》no action)

建立表t的同時給列c1設定外來鍵,參考表t1的列c2

刪除/更新列c2資料時,拒絕刪除/更新,因為列c1與c2關聯

create table【t】(【c1】《s》,foreign key(【c1】) references【t1(c2)】on《update/delete》cascade)

建立表t的同時給列c1設定外來鍵,參考表t1的列c2

刪除/更新列c2資料時,同時刪除/更新列c1對應的資料,使列c1與c2中的行(元組)相匹配

create table【t】(【c1】《s》,foreign key(【c1】) references【t1(c2)】on《update/delete》set-null)

建立表t的同時給列c1設定外來鍵,參考表t1的列c2

刪除/更新列c2資料時,使列c1對應的資料變為空值

例如,學生的姓名,每個人都有姓名,所以必須有,不能沒有

乙個錶可有多個非空約束語句

解釋create table【t】(【c】《s》not null)

建立表t的同時給列c設定非空約束

例如,公民的身份證號,每個人的身份證號唯一

乙個錶可有多個唯一性約束語句

解釋create table【t】(【c】《s》unique)

建立表t的同時給列c設定唯一約束

create table【t】(【c1】《s》,【c2】《s》unique(【c1,c2】))

建立表t的同時給列c1,c2設定唯一約束

用於規定一些滿足複雜條件的列,例如分數是小數在0至100之間

乙個錶可有多個檢查約束語句

解釋create table【t】(【c】《s》check(【f】))

建立表t的同時給列c設定檢查約束

create table【t】(【c】《s》,check(【f】))

建立表t的同時給列c設定檢查約束

例如,在王者榮譽中每個人的初始信譽積分都是100 語句

解釋create table【t】(【c】《s》default 『【v】』)

建立表t的同時給列c設定預設值為v

alter table【t】add constraint【y】default【v】for【c】

給已經存在表t的列c新增預設值v

個人感覺是給約束起個名字 語句

解釋create table【t】(【c】《s》,constraint【y】《primary key(…)/foreign key(…)/check(…)》

建立表t的同時,新建乙個名為y的約束

alter table【t】add constraint【y】《primary key(…)/foreign key(…)/check(…)》

給已經存在的表t新建乙個約束y

alter table【t】drop constraint【y】

刪除表t的約束y

資料庫約束

mysql有兩種常用的引擎型別 myisam和innodb。目前只有innodb引擎型別支援外來鍵約束。innodb中外鍵約束定義的語法如下 constraint symbol foreign key index name index col name,references tbl name ind...

資料庫約束

約束的簡介 資料的完整性是指資料的正確性和一致性,可以通過定義表時定義完整性約束,也可以通過規則,索引,觸發器等。約束分為兩類 行級和表級,處理機制是一樣的。行級約束放在列後,表級約束放在表後,多個列共用的約束放在表後。完整性約束是一種規則,不占用任何資料庫空間。完整性約束存在資料字典中,在執行sq...

資料庫 約束

約束說白了就是限制條件 當你不給某引數賦值時,該引數會採用預設值。例子 建立資料庫 create database tx 選擇使用的資料庫 use tx go goods表 create table goods goodsid nvarchar 50 primary key,主鍵 goodsname...