如何創(chuàng)建外鍵?
主鍵
外鍵
索引
定義:
唯一標(biāo)識(shí)一條記錄,不能有重復(fù)的,不允許為空
表的外鍵是另一表的主鍵,外鍵可以有重復(fù)的,可以是空值
該字段沒(méi)有重復(fù)值,但可以有一個(gè)空值
作用:
用來(lái)保證數(shù)據(jù)完整性
用來(lái)和其他表建立聯(lián)系用的
是提高查詢排序的速度
個(gè)數(shù):
主鍵只能有一個(gè)
一個(gè)表可以有多個(gè)外鍵
一個(gè)表可以有多個(gè)惟一索引
設(shè)置索引
若要設(shè)置外鍵,在參照表(pc表)和被參照表(parts表)中,相對(duì)應(yīng)的兩個(gè)字段必須都設(shè)置索引(index)。
對(duì)parts表:
altertablepartsaddindexidx_model(model);
這句話的意思是,為parts表增加一個(gè)索引,索引建立在model字段上,給這個(gè)索引起個(gè)名字叫idx_model。
對(duì)pc表也類(lèi)似:
altertablepcaddindexidx_cpumodel(cpumodel);
定義外鍵
下面為兩張表之間建立前面所述的那種“約束”。因?yàn)閜c的cpu型號(hào)必須參照parts表中的相應(yīng)型號(hào),所以我們將pc表的cpumodel字段設(shè)置為“外鍵”(foreignkey),即這個(gè)鍵的參照值來(lái)自于其他表。
altertablepcaddconstraintfk_cpu_model
foreignkey(cpumodel)
referencesparts(model);
級(jí)聯(lián)操作
級(jí)聯(lián)更新:更新主鍵時(shí),外鍵也隨之更新。
可以在定義外鍵的時(shí)候,在最后加入這樣的關(guān)鍵字:
onupdatecascade;
即在主表更新時(shí),子表(們)產(chǎn)生連鎖更新動(dòng)作,似乎有些人喜歡把這個(gè)叫“級(jí)聯(lián)”操作。
如果把這語(yǔ)句完整的寫(xiě)出來(lái),就是:
altertablepcaddconstraintfk_cpu_model
foreignkey(cpumodel)
referencesparts(model)
onupdatecascade;
級(jí)聯(lián)刪除:刪除主鍵時(shí),外鍵也隨之刪除。
altertablepcaddconstraintfk_cpu_model
foreignkey(cpumodel)
referencesparts(model)
ondeletecascade;
級(jí)聯(lián)更新、刪除:
onupdatecascadeondeletecascade