MySQL中的主鍵約束是指在表中定義一個主鍵來唯一確定表中每一行記錄的
標(biāo)識符。當(dāng)某一列添加了主鍵約束后,那么這一列的數(shù)據(jù)就不能重復(fù)出現(xiàn)。這樣每行記錄中其主鍵列的值就是這一行的唯一標(biāo)識。
主鍵的關(guān)鍵字是:PRIMARY KEY,它有以下三個特性:
- 非空:主鍵列中的值不能為空;
- 唯一:主鍵列中的值不能重復(fù);
- 被引用:該特性會在學(xué)習(xí)外鍵的時(shí)候說明。
1.創(chuàng)建表時(shí)指定主鍵列
我們在創(chuàng)建表的時(shí)候一般都會指定主鍵列,創(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)建一個表,名字為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 插入一個主鍵為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)證了主鍵的第二個特性。
使用第二種方式指定主鍵,然后重復(fù)以上四步,執(zhí)行結(jié)果相同,也就是說這兩種方式都可創(chuàng)建主鍵,它們的特性都是一樣的。
2.修改表時(shí)指定主鍵
如果我們在創(chuàng)建表時(shí)忘了給表指定主鍵,可以在修改表時(shí)給表指定主鍵,語法如下:
- ALTER TABLE 表名 ADD RRIMARY KEY(主鍵列名)
(1)創(chuàng)建一個表,名稱為stu2,對應(yīng)的sql語句如圖1-5所示:
圖1-5 創(chuàng)建一個沒有主鍵的表
(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)載請注明作者出處。謝謝!
作者:傳智播客java學(xué)院