最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

mysql_約束

2023-03-01 18:51 作者:蘇喆i  | 我要投稿

一.基礎(chǔ)知識

1.為什么需要約束??

為了保證數(shù)據(jù)的完整性!

2.什么叫約束?

對表中字段的限制。

3.約束的分類:

4.如何添加/刪除約束?

5,如何查看表中的約束

二.非空約束

在CREATE TABLE時添加約束:

在ALTER TABLE時添加約束:

在ALTER TABLE時刪除約束:

三.唯一性約束

在ALTER TABLE時添加約束

復(fù)合的唯一性約束

UNIQUE KEY 和?UNIQUE的含義是一樣的

刪除唯一性約束

四.PRIMARY KEY 約束(主鍵約束)

關(guān)于復(fù)合主鍵:

五.自增列:AUTO_INCREMENT

MySQL 8.0新特性—自增變量的持久化

1.在MySQL 8.0之前,自增主鍵AUTO_INCREMENT的值如果大于max(primary key)+1,在MySQL重啟后,會重置AUTO_INCREMENT=max(primary key)+1,這種現(xiàn)象在某些情況下會導(dǎo)致業(yè)務(wù)主鍵沖突或者其他難以發(fā) 現(xiàn)的問題。

2.在MySQL 5.7系統(tǒng)中,對于自增主鍵的分配規(guī)則,是由InnoDB數(shù)據(jù)字典 內(nèi)部一個 計數(shù)器 來決定的,而該計數(shù)器只在 內(nèi)存中維護 ,并不會持久化到磁盤中。當(dāng)數(shù)據(jù)庫重啟時,該 計數(shù)器會被初始化。

3.MySQL 8.0將自增主鍵的計數(shù)器持久化到 重做日志 中。每次計數(shù)器發(fā)生改變,都會將其寫入重做日志 中。如果數(shù)據(jù)庫重啟,InnoDB會根據(jù)重做日志中的信息來初始化計數(shù)器的內(nèi)存值。


六.FOREIGN KEY 約束(外鍵約束)

問題1:如果兩個表之間有關(guān)系(一對一、一對多),比如:員工表和部門表(一對多),它們之間是否 一定要建外鍵約束??

答:不是的

問題2:建和不建外鍵約束有什么區(qū)別??

答:建外鍵約束,你的操作(創(chuàng)建表、刪除表、添加、修改、刪除)會受到限制,從語法層面受到限制。例如:在員工表中不可能添加一個員工信息,它的部門的值在部門表中找不到。

不建外鍵約束,你的操作(創(chuàng)建表、刪除表、添加、修改、刪除)不受限制,要保證數(shù)據(jù)的 引用完整性 ,只能依 靠程序員的自覺 ,或者是 在Java程序中進行限定 。例如:在員工表中,可以添加一個員工的 信息,它的部門指定為一個完全不存在的部門。

問題3:那么建和不建外鍵約束和查詢有沒有關(guān)系?

答:沒有

在 MySQL 里,外鍵約束是有成本的,需要消耗系統(tǒng)資源。對于大并發(fā)的 SQL 操作,有可能會不適合。比如大型網(wǎng)站的中央數(shù)據(jù)庫,可能會 因為外鍵約束的系統(tǒng)開銷而變得非常慢 。所以, MySQL 允 許你不使用系統(tǒng)自帶的外鍵約束,在 應(yīng)用層面 完成檢查數(shù)據(jù)一致性的邏輯。也就是說,即使你不用外鍵約束,也要想辦法通過應(yīng)用層面的附加邏輯,來實現(xiàn)外鍵約束的功能,確保數(shù)據(jù)的一致性。

七.CHECK 約束(檢查約束)

八.DEFAULT約束(默認值約束)

九.面試題

面試1、為什么建表時,加 not null default '' 或 default 0?

答:不想讓表中出現(xiàn)null值。

面試2、為什么不想要 null 的值?

答:(1)不好比較。null是一種特殊值,比較時只能用專門的is null 和 is not null來比較。碰到運算符,通 常返回null。?

(2)效率不高。影響提高索引效果。因此,我們往往在建表時 not null default '' 或 default 0

面試3、帶AUTO_INCREMENT約束的字段值是從1開始的嗎??

答:不是,如在表中插入第一 條記錄,同時指定id值為5,則以后插入的記錄的id值就會從6開始往上增加。添加主鍵約束時,往往需要設(shè)置字段自動增加屬性。

面試4、每個表都可以任意選擇存儲引擎??

答:外鍵約束(FOREIGN KEY)不能跨引擎使用。

MySQL支持多種存儲引擎,每一個表都可以指定一個不同的存儲引擎,需要注意的是:外鍵約束是用來 保證數(shù)據(jù)的參照完整性的,如果表之間需要關(guān)聯(lián)外鍵,卻指定了不同的存儲引擎,那么這些表之間是不 能創(chuàng)建外鍵約束的。所以說,存儲引擎的選擇也不完全是隨意的。


mysql_約束的評論 (共 條)

分享到微博請遵守國家法律
潮州市| 孟州市| 连云港市| 门源| 沙雅县| 四川省| 康平县| 兴宁市| 华蓥市| 屏山县| 永泰县| 南江县| 昌吉市| 锡林浩特市| 甘孜县| 丰原市| 集安市| 武义县| 漳平市| 中卫市| 临武县| 陆丰市| 宁晋县| 安徽省| 韩城市| 太和县| 江山市| 长海县| 高邮市| 邻水| 双流县| 河北区| 宝坻区| 井陉县| 英山县| 泰安市| 临城县| 津南区| 新巴尔虎左旗| 西昌市| 正阳县|