《MySQL數(shù)據(jù)庫應(yīng)用與管理(第3版)》 課件 4.4 約束管理_第1頁
《MySQL數(shù)據(jù)庫應(yīng)用與管理(第3版)》 課件 4.4 約束管理_第2頁
《MySQL數(shù)據(jù)庫應(yīng)用與管理(第3版)》 課件 4.4 約束管理_第3頁
《MySQL數(shù)據(jù)庫應(yīng)用與管理(第3版)》 課件 4.4 約束管理_第4頁
《MySQL數(shù)據(jù)庫應(yīng)用與管理(第3版)》 課件 4.4 約束管理_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

索引的創(chuàng)建和使用

約束管理

本節(jié)內(nèi)容1.主鍵約束(PRIMARYKEY)2.唯一性約束(UNIQUE)3.默認(rèn)值約束(DEFAULT)4.外鍵約束(FOREIGNKEY)約束管理約束是對列進(jìn)行限制的規(guī)則,以確保輸入數(shù)據(jù)的一致性和正確性。約束是實(shí)現(xiàn)數(shù)據(jù)完整性的主要途徑。常見的約束有:主鍵約束、唯一性約束、默認(rèn)值約束、外鍵約束、非空約束等。約束可以在創(chuàng)建數(shù)據(jù)表時創(chuàng)建,也可以在修改數(shù)據(jù)表時創(chuàng)建。約束管理主鍵約束(簡稱為主鍵)是MySQL中使用最為頻繁的約束,在設(shè)計(jì)數(shù)據(jù)表時,一般情況下,都會要求表中設(shè)置一個主鍵。主鍵值必須唯一標(biāo)識表中的每一行,且不能為NULL值,即表中不可能存在有相同主鍵值的兩行數(shù)據(jù)。每張表只能定義一個主鍵,主鍵可以是單字段主鍵,也可以是多字段組合主鍵。創(chuàng)建主鍵約束后,會自動創(chuàng)建一個與約束同名的主鍵索引。1.主鍵約束(PRIMARYKEY)約束管理(1)在創(chuàng)建表時設(shè)置主鍵約束在CREATETABLE語句中,通過PRIMARYKEY關(guān)鍵字來指定主鍵約束。在定義字段的同時指定主鍵約束,其語法格式如下:<字段名><數(shù)據(jù)類型>PRIMARYKEY也可以在定義完所有字段之后指定主鍵約束,其語法格式如下: [CONSTRAINT<約束名>]PRIMARYKEY(字段名)若是組合主鍵約束,其語法格式如下: [CONSTRAINT<約束名>]PRIMARYKEY(字段名1,字段名2[,…])1.主鍵約束(PRIMARYKEY)操作案例知識點(diǎn)概述示例4-8運(yùn)行結(jié)果如下:創(chuàng)建學(xué)生表(student1),設(shè)置id字段為主鍵約束。操作案例知識點(diǎn)概述示例4-9運(yùn)行結(jié)果如下:創(chuàng)建課程表(course1),設(shè)置id字段為主鍵約束。操作案例知識點(diǎn)概述示例4-10運(yùn)行結(jié)果如下:創(chuàng)建成績表(score1),設(shè)置sId、cId字段為組合主鍵約束。約束管理(2)在修改表時添加主鍵約束主鍵約束不僅可以在創(chuàng)建表的同時創(chuàng)建,也可以在修改表時添加。但是需要注意的是,設(shè)置成主鍵約束的字段中不允許有空值和重復(fù)值。在修改數(shù)據(jù)表時添加主鍵約束的語法格式如下:ALTERTABLE<表名> ADD[CONSTRAINT<約束名>]PRIMARYKEY(<字段名>);1.主鍵約束(PRIMARYKEY)操作案例知識點(diǎn)概述示例4-11運(yùn)行結(jié)果如下:修改學(xué)生表(student1),給id字段添加主鍵約束。說明:首先要確保學(xué)生表(student1)中無主鍵約束,還要確保設(shè)置成主鍵約束的字段中值不能夠有重復(fù)的,并且要保證是非空的。否則,無法設(shè)置主鍵約束。約束管理(3)刪除主鍵約束當(dāng)一張表中不需要主鍵約束時,就需要從表中將其刪除。刪除主鍵約束的語法格式如下:ALTERTABLE<表名>DROPPRIMARYKEY;說明:由于主鍵約束在一張表中只能有一個,因此不需要指定主鍵名就可以刪除一張表中的主鍵約束。1.主鍵約束(PRIMARYKEY)操作案例知識點(diǎn)概述示例4-12運(yùn)行結(jié)果如下:刪除學(xué)生表(student1)中的主鍵約束。約束管理唯一性約束與主鍵約束有相似的地方,就是它們都能夠確保列的唯一性。不同的是,唯一性約束在一張表中可以有多個,并且設(shè)置唯一性約束的列允許有空值,但是只能有一個空值;而主鍵約束在一張表中只能有一個,而且是不允許有空值的。2.唯一性約束(UNIQUE)約束管理(1)在創(chuàng)建表時設(shè)置唯一性約束在CREATETABLE語句中,通過UNIQUE關(guān)鍵字來指定唯一性約束,唯一性約束通常設(shè)置在除了主鍵以外的其它列上。在定義字段的同時指定唯一性約束,其語法格式如下:<字段名><數(shù)據(jù)類型>UNIQUE也可以在定義完所有字段之后指定唯一性約束,其語法格式如下: [CONSTRAINT<約束名>]UNIQUE(字段名)2.唯一性約束(UNIQUE)操作案例知識點(diǎn)概述示例4-13運(yùn)行結(jié)果如下:創(chuàng)建學(xué)生表(student1),設(shè)置id字段為主鍵約束、sNo字段為唯一性約束。操作案例知識點(diǎn)概述示例4-14運(yùn)行結(jié)果如下:創(chuàng)建課程表(course1),設(shè)置id字段為主鍵約束、cNo為唯一性約束。約束管理(2)在修改表時添加唯一性約束在修改數(shù)據(jù)表時添加唯一性約束的語法格式如下:ALTERTABLE<表名> ADD[CONSTRAINT<約束名>]UNIQUE(<字段名>);2.唯一性約束(UNIQUE)操作案例知識點(diǎn)概述示例4-15運(yùn)行結(jié)果如下:修改課程表(course1),給cName字段添加唯一性約束。約束管理(3)刪除唯一性約束刪除唯一性約束的語法格式如下:ALTERTABLE<表名>

DROPINDEX<唯一性約束名>;2.唯一性約束(UNIQUE)操作案例知識點(diǎn)概述示例4-16運(yùn)行結(jié)果如下:刪除課程表(course1)中的唯一性約束ux_cName。約束管理默認(rèn)約束是用來給表中某列賦予一個常量值(默認(rèn)值),當(dāng)向該表插入一條新的記錄時,如果用戶沒有明確給出該列的值,MySQL會自動為該列插入所設(shè)置的默認(rèn)值。3.默認(rèn)值約束(DEFAULT)約束管理(1)在創(chuàng)建表時設(shè)置默認(rèn)值約束在CREATETABLE語句中,通過DEFAULT關(guān)鍵字來指定默認(rèn)值約束,其語法格式如下:<字段名><數(shù)據(jù)類型>DEFAULT<默認(rèn)值>說明:“默認(rèn)值”是指該字段所設(shè)置的默認(rèn)值,如果是字符類型,需要用單引號括起來。3.默認(rèn)值約束(DEFAULT)操作案例知識點(diǎn)概述示例4-17運(yùn)行結(jié)果如下:創(chuàng)建學(xué)生表(student1),設(shè)置sex字段設(shè)置默認(rèn)值為“男”。約束管理(2)在修改表時添加默認(rèn)值約束在修改數(shù)據(jù)表時添加默認(rèn)值約束的語法格式如下:ALTERTABLE<表名> MODIFY<字段名><數(shù)據(jù)類型>DEFAULT<默認(rèn)值>;3.默認(rèn)值約束(DEFAULT)操作案例知識點(diǎn)概述示例4-18運(yùn)行結(jié)果如下:修改課程表(course1),給credit字段添加默認(rèn)值“4”。約束管理(3)刪除默認(rèn)值約束刪除默認(rèn)值約束的語法格式如下:ALTERTABLE<表名> MODIFY<字段名><數(shù)據(jù)類型>DEFAULTNULL;3.默認(rèn)值約束(DEFAULT)操作案例知識點(diǎn)概述示例4-19運(yùn)行結(jié)果如下:刪除課程表(course1)中credit字段的默認(rèn)值約束。約束管理(4)使用Navicat對話方式創(chuàng)建默認(rèn)約束以給學(xué)生表(student)的sex字段添加默認(rèn)值“男”為例。在Navicat控制臺中,打開表結(jié)構(gòu)設(shè)計(jì)窗口。3.默認(rèn)值約束(DEFAULT)約束管理外鍵約束經(jīng)常與主鍵約束一起使用。對于兩個具有關(guān)聯(lián)關(guān)系的表而言,相關(guān)聯(lián)字段中主鍵所在的表就是主表(父表),外鍵所在的表就是從表(子表)。在MySQL中,目前只有InnoDB存儲引擎支持外鍵約束。外鍵用來建立主表與從表的關(guān)聯(lián)關(guān)系,為兩個表的數(shù)據(jù)建立連接,約束兩個表中數(shù)據(jù)的一致性和完整性。例如,主表刪除某條記錄時,從表中與之對應(yīng)的記錄也必須有相應(yīng)的改變。一個表可以有一個或多個外鍵,外鍵可以為空值,若不為空值,則每一個外鍵的值必須等于主表中主鍵的某個值。4.外鍵約束(FOREIGNKEY)約束管理定義外鍵時,需要遵守下列規(guī)則:主表必須已經(jīng)存在于數(shù)據(jù)庫中,或者是當(dāng)前正在創(chuàng)建的表。如果是后一種情況,則主表與從表是同一個表,這樣的表稱為自參照表,這種結(jié)構(gòu)稱為自參照完整性。必須為主表定義主鍵。主鍵不能包含空值,但允許在外鍵中出現(xiàn)空值。也就是說,只要外鍵的每個非空值出現(xiàn)在指定的主鍵中,這個外鍵的內(nèi)容就是正確的。在主表的表名后面指定列名或列名的組合。這個列或列的組合必須是主表的主鍵或候選鍵。外鍵列的數(shù)目必須和主表中主鍵列的數(shù)目相同;外鍵列的數(shù)據(jù)類型必須和主表中主鍵列的數(shù)據(jù)類型相同。4.外鍵約束(FOREIGNKEY)約束管理(1)在創(chuàng)建表時設(shè)置外鍵約束在CREATETABLE語句中,通過FOREIGNKEY關(guān)鍵字來指定外鍵約束,其語法格式如下:[CONSTRAINT<約束名>]FOREIGNKEY(字段名) REFERENCES<主表名>(主鍵列) [ONDELETE{RESTRICT|NOACTION|CASCADE|SETNULL}] [ONUPDATE{RESTRICT|NOACTION|CASCADE|SETNULL}]4.外鍵約束(FOREIGNKEY)約束管理(1)在創(chuàng)建表時設(shè)置外鍵約束說明:RESTRICT:不執(zhí)行任何操作。主表的更新或者刪除企圖會被拒絕。NOACTION:與RESTRICT相同。主表的更新或者刪除企圖會被拒絕。CASCADE:從表隨主表級聯(lián)更新或級聯(lián)刪除。即,刪除或更新主表中的行,同時自動地刪除或更新從表中對應(yīng)匹配的行。SETNULL:從表的外鍵列設(shè)置為NULL,即,刪除或更新主表中的行,同時將從表中的外鍵列設(shè)置為NULL。注意,只有在從表的外鍵列沒有被設(shè)為NOTNULL時才有效。4.外鍵約束(FOREIGNKEY)操作案例知識點(diǎn)概述示例4-20運(yùn)行結(jié)果如下:創(chuàng)建成績表(score1),設(shè)置sId字段為外鍵約束,參考的是學(xué)生表(student1)中的id字段(不執(zhí)行任何操作)。約束管理(2)在修改表時添加外鍵約束在修改數(shù)據(jù)表時添加外鍵約束的語法格式如下:ALTERTABLE<表名> ADD[CONSTRAINT<約束名>]FOREIGNKEY(字段名) REFERENCES<主表名>(主鍵列) [ONDELETE{RESTRICT|NOACTION|CASCADE|SETNULL}] [ONUPDATE{RESTRICT|NOACTION|CASCADE|SETNULL}];4.外鍵約束(FOREIGNKEY)操作案例知識點(diǎn)概述示例4-21運(yùn)行結(jié)果如下:修改成績表(score1),給cId字段添加外鍵約束,參考的是課程表(course1)中的id字段(不執(zhí)行任何操作)。約束管理(3)刪除外鍵約束刪除外鍵約束的語法格式如下:ALTERTABLE<表名>

DROPFOREIGNKEY<外鍵約束名>;4.外鍵約束(FOREIGNKEY)操作案例知識點(diǎn)概述示例4-22運(yùn)行結(jié)果如下:刪除成績表(score1)中的外鍵約束fk_course1_score1。約束管理(4)使用Navicat對話方式

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論