MySQL中的主鍵約束是指在表中定義一個(gè)主鍵來唯一確定表中每一行記錄的
標(biāo)識(shí)符。當(dāng)某一列添加了主鍵約束后,那么這一列的數(shù)據(jù)就不能重復(fù)出現(xiàn)。這樣每行記錄中其主鍵列的值就是這一行的唯一標(biāo)識(shí)。
主鍵的關(guān)鍵字是:PRIMARY KEY,它有以下三個(gè)特性:
- 非空:主鍵列中的值不能為空;
- 唯一:主鍵列中的值不能重復(fù);
- 被引用:該特性會(huì)在學(xué)習(xí)外鍵的時(shí)候說明。
1.創(chuàng)建表時(shí)指定主鍵列
我們?cè)趧?chuàng)建表的時(shí)候一般都會(huì)指定主鍵列,創(chuàng)建表時(shí)指定主鍵列有兩種方式,如下所示:
CREATE TABLE stu1(
sidCHAR(6) PRIMARY KEY,
genderVARCHAR(10)
CREATE TABLE stu1(
sid CHAR(6),
sname VARCHAR(20),
age INT,
gender VARCHAR(10),
PRIMARY KEY(sid)
);
下面,我們采用第一種方式指定主鍵,并驗(yàn)證主鍵的相關(guān)特性,如下所示:
(1)創(chuàng)建一個(gè)表,名字為stu1,如圖1-1所示:
圖1-1 創(chuàng)建數(shù)據(jù)庫
(2)向stu1表中插入一條數(shù)據(jù),sql語句為:insert into stu1 values(null,’張三’,23,’male’),執(zhí)行結(jié)果如圖1-2所示:
圖1-2 插入一個(gè)主鍵為null的記錄
圖1-2中向stu1表插入一條主鍵值為null的記錄,插入失敗,驗(yàn)證了主鍵的非空特性。
(3)向stu1表中插入一條記錄,sql語句為:insert into stu1 values(‘1’,’張三’,23,’male’),執(zhí)行完之后,查詢stu1表,如圖1-3所示:
圖1-3 插入并查詢stu1表
(4)再次向stu1表中插入一條數(shù)據(jù),這條數(shù)據(jù)的主鍵與圖1-3中的數(shù)據(jù)的主鍵一樣,如圖1-4所示:
圖1-4 插入重復(fù)主鍵記錄
由圖1-4可知,主鍵列的值不能重復(fù),驗(yàn)證了主鍵的第二個(gè)特性。
使用第二種方式指定主鍵,然后重復(fù)以上四步,執(zhí)行結(jié)果相同,也就是說這兩種方式都可創(chuàng)建主鍵,它們的特性都是一樣的。
2.修改表時(shí)指定主鍵
如果我們?cè)趧?chuàng)建表時(shí)忘了給表指定主鍵,可以在修改表時(shí)給表指定主鍵,語法如下:
- ALTER TABLE 表名 ADD RRIMARY KEY(主鍵列名)
(1)創(chuàng)建一個(gè)表,名稱為stu2,對(duì)應(yīng)的sql語句如圖1-5所示:
圖1-5 創(chuàng)建一個(gè)沒有主鍵的表
(2)給stu2表添加主鍵,如圖1-6所示:
圖1-6 為stu2表指定主鍵
(3)向stu2表中插入一條記錄,該記錄的主鍵值為null,如圖1-7所示:
圖1-7 插入主鍵為null的記錄
圖1-7可知,修改sid列為主鍵列,修改成功。
3.刪除表中的主鍵
刪除表中的主鍵的語法是:ALTER TABLE 數(shù)據(jù)庫名 DROP PRIMARY KEY,這里就不在進(jìn)行演示,大家可以自己試一試。
本文版權(quán)歸傳智播客java學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客java學(xué)院