cmdb中的主鍵設(shè)置_第1頁
cmdb中的主鍵設(shè)置_第2頁
cmdb中的主鍵設(shè)置_第3頁
cmdb中的主鍵設(shè)置_第4頁
cmdb中的主鍵設(shè)置_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

cmdb中的主鍵設(shè)置的完整稱呼是“主鍵約束”,是mysql中使用最為頻繁的約束。一般情況下,為了便于dbms更快的查找到表中的記錄,都會在表中設(shè)置一個主鍵。主鍵分為單字段主鍵和多字段聯(lián)合主鍵。本節(jié)將分別解釋這兩個主鍵約束的創(chuàng)建、修改和刪除。使用主鍵應(yīng)注意以下幾點(diǎn):每個表只能定義一個主鍵。主鍵值必須唯一標(biāo)識表中的每一行,且不能為nu^,即表中不可能存在有相同主鍵值的兩行數(shù)據(jù)。這是唯一性原則。字段名在聯(lián)合主鍵字段表中只能出現(xiàn)一次。聯(lián)合主鍵不能包含不必要的冗余字段。當(dāng)刪除聯(lián)合主鍵的一個字段時,如果其余字段組成的主鍵仍滿足唯一性原則,則聯(lián)合主鍵不正確。這就是最小化原則。在創(chuàng)建表時設(shè)置主鍵約束創(chuàng)建數(shù)據(jù)表時,可以設(shè)置主鍵約束。您可以為表中的一個字段設(shè)置主鍵,也可以為表中的多個字段設(shè)置聯(lián)合主鍵。但是,無論使用哪種方法,一個表中只能有一個主鍵。下面解釋設(shè)置單字段主鍵和多字段聯(lián)合主鍵的方法。1)設(shè)置單字段主鍵在createtable語句中,通過primarykey關(guān)鍵字來指定主鍵。在定義字段的同時指定主鍵,語法格式如下:<字段名><數(shù)據(jù)類型>primarykey[默認(rèn)值]例1在test_db數(shù)據(jù)庫中創(chuàng)建tb_emp3數(shù)據(jù)表,其主鍵為id,sql語句和運(yùn)行結(jié)果如下。mysql>createtabletb_emp3>(>idint(11)primarykey,>namevarchar(25),>deptidint(11),>salaryfloat>);queryok,0rowsaffected(0.37sec)mysql>desctb_emp3;+ + + + + + +|field | type | null| key| default| extra|+ + + + + + +id|int(11)|no?|pri|nullname|varchar(25)|yes||nulldeptid|int(11)|yes||nullsalary|float|yes||null+ + + + + + +4rowsinset(0.14sec)或者是在定義完所有字段之后指定主鍵,語法格式如下:[constraint<約束名>]primarykey[字段名]例2在test_db數(shù)據(jù)庫中創(chuàng)建tb_emp4數(shù)據(jù)表,其主鍵為id,sql語句和運(yùn)行結(jié)果如下。mysql>createtabletb_emp4>(>idint(11),>namevarchar(25),>deptidint(11),>salaryfloat,>primarykey(id)>);queryok,0rowsaffected(0.37sec)mysql>desctb_emp4;+ + + + + + +|field | type | null| key| default| extra|+ + + + + + +|id | int(11) | no| pri| null|namevarchar(25)yesnull|deptid|int(11) |yes| |null|||salary | float| yes| | null||+ + + + + + +4rowsinset(0.14sec)2)在創(chuàng)建表時設(shè)置聯(lián)合主鍵所謂聯(lián)合主鍵,就是這個主鍵是由一個表中的多個字段組成的。比如設(shè)置學(xué)生選課數(shù)據(jù)表時,是用學(xué)號作為主鍵還是用課程號作為主鍵?如果使用學(xué)號作為主鍵,那么一個學(xué)生只能選擇一門課程。如果將課程編號用作主鍵,則只有一名學(xué)生可以選擇課程。顯然,這兩種情況都不符合實(shí)際情況。事實(shí)上,學(xué)生選課表的設(shè)計僅限于一個學(xué)生只能選擇一次相同的課程。所以學(xué)號和課程號可以放在一起作為主鍵,這就是聯(lián)合主鍵。主鍵由多個字段聯(lián)合組成,語法格式如下:primarykey[字段1,字段2,…,字段n]注意:當(dāng)主鍵由多個字段組成時,主鍵約束不能直接在字段名后聲明。例3創(chuàng)建數(shù)據(jù)表tb_emp5,假設(shè)表中沒有主鍵id,為了唯一確定一個員工,可以把name、deptid聯(lián)合起來作為主鍵,sql語句和運(yùn)行結(jié)果如下。mysql>createtabletb_emp5>(>namevarchar(25),>deptidint(11),>salaryfloat,>primarykey(name,deptid)>);queryok,0rowsaffected(0.37sec)mysql>desctb_emp5;+ + + + + + +|field | type | null| key| default| extra+ + + + + ++|name | varchar(25)| no| pri| null|deptid|int(11)no|pri|nullsalary|float|yes| |null+ + + + + + +rowsinset(0.14sec)在修改表時添加主鍵約束主鍵約束不僅可以在創(chuàng)建表時創(chuàng)建,也可以在修改表時創(chuàng)建。但是,應(yīng)該注意,在設(shè)置為主鍵約束的字段中不允許空值。在修改數(shù)據(jù)表時添加主鍵約束的語法格式如下:altertable〈數(shù)據(jù)表名>addprimarykey(〈字段名>);查看tb_emp2數(shù)據(jù)表的表結(jié)構(gòu),sql語句和運(yùn)行結(jié)果如下所示。mysql>desctb_emp2;+ + + + + + +|field | type | null| key| default| extra+ + + + + ++id|int(11)|no||nullname|varchar(30)|yes||nulldeptid|int(11)|yes||nullsalary|float|yes||null+ + + + + ++rowsinset(0.14sec)例4修改數(shù)據(jù)表tb_emp2,將字段id設(shè)置為主鍵,sql語句和運(yùn)行結(jié)果如下。mysql>altertabletb_emp2->addprimarykey(id);queryok,0rowsaffected(0.94sec)records:0duplicates:0warnings:0mysql>desctb_emp2;+ + + + + + +|field | type | null| key| default| extra|+ + + + + + +id|int(11)|no?pri|nullname|varchar(30)|yes||nulldeptid|int(11)|yes||nullsalary|float|yes||null+ + + + + + +4rowsinset(0.12sec)一般情況下,修改表時,需要設(shè)置表中某個字段的主鍵約束,以保證設(shè)置為主鍵約束的字段中的值不可重復(fù)且不為空。否則,無法設(shè)置主鍵約束。刪除主鍵約束當(dāng)表中不需要primarykey約束時,需要將其從表中刪除。刪除主鍵約束比創(chuàng)建主鍵約束容易得多。刪除主鍵約束的語法格式如下所示:altertable<數(shù)據(jù)表名>dropprimarykey;例5刪除tb_emp2表中的主鍵約束,sql語句和

溫馨提示

  • 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

提交評論