文章目錄
SQL約束
一、主鍵約束
二、非空約束
三、唯一約束
四、默認(rèn)值約束
五、外鍵約束(了解)
六、總結(jié)
SQL約束
一、主鍵約束
- PRIMARY KEY 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。
- 主鍵必須包含唯一的值。
- 主鍵列不能包含 NULL 值。
- 每個(gè)表都應(yīng)該有一個(gè)主鍵,并且每個(gè)表只能有一個(gè)主鍵。
遵循原則:
- 主鍵應(yīng)當(dāng)是對(duì)用戶沒有意義的
- 永遠(yuǎn)也不要更新主鍵。
- 主鍵不應(yīng)包含動(dòng)態(tài)變化的數(shù)據(jù),如時(shí)間戳、創(chuàng)建時(shí)間列、修改時(shí)間列等。
- 主鍵應(yīng)當(dāng)由計(jì)算機(jī)自動(dòng)生成。
創(chuàng)建主鍵約束:創(chuàng)建表時(shí),在字段描述處,聲明指定字段為主鍵
刪除主鍵約束:如需撤銷 PRIMARY KEY 約束,請(qǐng)使用下面的 SQL
alter table persons2 drop primary key;
補(bǔ)充:自動(dòng)增長(zhǎng)
我們通常希望在每次插入新記錄時(shí),數(shù)據(jù)庫(kù)自動(dòng)生成字段的值。
我們可以在表中使用 auto_increment(自動(dòng)增長(zhǎng)列)關(guān)鍵字,自動(dòng)增長(zhǎng)列類型必須是整型,自動(dòng)增長(zhǎng)列必須為鍵(一般是主鍵)。
下列 SQL 語(yǔ)句把 "Persons" 表中的 "Id" 列定義為 auto_increment 主鍵
create table persons3(
id int auto_increment primary key,
first_name varchar(255),
last_name varchar(255),
address varchar(255),
city varchar(255)
) default charset=utf8;
向persons添加數(shù)據(jù)時(shí),可以不為Id字段設(shè)置值,也可以設(shè)置成null,數(shù)據(jù)庫(kù)將自動(dòng)維護(hù)主鍵值:
insert into persons3(first_name,last_name) values('Bill','Gates');
insert into persons3(id,first_name,last_name) values(null,'Bill','Gates');
運(yùn)行效果:
二、非空約束
NOT NULL 約束強(qiáng)制列不接受 NULL 值。
NOT NULL 約束強(qiáng)制字段始終包含值。這意味著,如果不向字段添加值,就無法插入新記錄或者更新記錄。
下面的 SQL 語(yǔ)句強(qiáng)制 "id" 列和 "last_name" 列不接受 NULL 值:
?
三、唯一約束
UNIQUE 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動(dòng)定義的 UNIQUE 約束。
請(qǐng)注意: 每個(gè)表可以有多個(gè) UNIQUE 約束,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束。
?
四、默認(rèn)值約束
default 默認(rèn)值
五、外鍵約束(了解)
外鍵約束(多表關(guān)聯(lián)使用)
比如:有兩張數(shù)據(jù)表,這兩個(gè)數(shù)據(jù)表之間有聯(lián)系,通過了某個(gè)字段可以建立連接,這個(gè)字段在其中一個(gè)表中是主鍵,在另外一張表中,我們就把其稱之為外鍵。
六、總結(jié)
主鍵約束:唯一標(biāo)示,不能重復(fù),不能為空。
- 主鍵應(yīng)當(dāng)是對(duì)用戶沒有意義的
- 永遠(yuǎn)也不要更新主鍵。
- 主鍵不應(yīng)包含動(dòng)態(tài)變化的數(shù)據(jù),如時(shí)間戳、創(chuàng)建時(shí)間列、修改時(shí)間列等。
- 主鍵應(yīng)當(dāng)由計(jì)算機(jī)自動(dòng)生成。
自動(dòng)增長(zhǎng):
我們可以在表中使用 auto_increment(自動(dòng)增長(zhǎng)列)關(guān)鍵字,自動(dòng)增長(zhǎng)列類型必須是整型,自動(dòng)增長(zhǎng)列必須為鍵(一般是主鍵)。
非空約束:
NOT NULL 約束強(qiáng)制列不接受 NULL 值。
唯一約束:
- UNIQUE 約束唯一標(biāo)識(shí)數(shù)據(jù)庫(kù)表中的每條記錄。
- UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
- PRIMARY KEY 擁有自動(dòng)定義的 UNIQUE 約束。
-
??博客主頁(yè):https://lansonli.blog.csdn.net
-
??歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? 如有錯(cuò)誤敬請(qǐng)指正!
-
??本文由 Lansonli 原創(chuàng),首發(fā)于 CSDN博客??文章來源:http://www.zghlxwxcb.cn/news/detail-827341.html
-
??停下休息的時(shí)候不要忘了別人還在奔跑,希望大家抓緊時(shí)間學(xué)習(xí),全力奔赴更美好的生活?文章來源地址http://www.zghlxwxcb.cn/news/detail-827341.html
到了這里,關(guān)于MySQL數(shù)據(jù)庫(kù)基礎(chǔ)(九):SQL約束的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!