Mysql 零距離-入門(六)資料唯一約束性
阿新 • • 發佈:2020-12-16
在資料記錄中我們為保證資料的唯一性,保證使用者資料在資料中不出現重複記錄。我們需要用到Mysql的主鍵
key
,唯一約束。
主鍵約束 PRIMARY KEY
一張資料表中只能存在一個主鍵欄位。並且型別必須為數字。可是設為float
型別,但小數點值必須為0和傳入此欄位的重複值。它可以很好保證我們記錄的唯一性,主鍵欄位自動為NOT NULL
現在,我們來建立一張新的資料表tb3,並設定一個主鍵欄位
CREATE TABLE tb3( id SMALLINT UNSIGNED PRIMARY KEY, name VARCHAR(20), sex ENUM('1','2','3') DEFAULT '3' );
建立資料表成功,現在我們來插入兩段使用者資料。
INSERT tb3 VALUES(5,'大毛','1');
INSERT tb3 VALUES(10,'小李','1');
輸出記錄
SELECT * FROM tb3;
可以看到我們剛剛的記錄插入成功了,現在我們來入id
值5的記錄看看會怎麼樣
INSERT tb3 VALUES(5,'小明','2');
mysql報錯:主鍵以存在重複的‘5’值,所以剛剛插入記錄失敗了。主鍵保證了我們資料的唯一性。
自動編號AUTO_INCREMENT
每一次都要手動為主鍵賦值非常不方便,而且當我們資料表中的資料非常多的時候,我們就很容易插入重複的主鍵值容易引發錯誤。所以我們這裡就要用到自動編號AUTO_INCREMENT
- 自動編號,必須與主鍵組合使用
- 預設情況下,起始為1,每次的增量為1
下面我們來建立多一個數據表tb4
CREATE TABLE tb4(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20),
sex ENUM('1','2','3') DEFAULT '3'
);
資料表建立成功,現在我們來連續插入三段資料。然後把記錄打印出來看看主鍵值
INSERT tb4(name,sex) VALUES('小麗','2'); INSERT tb4(name,sex) VALUES('大理','1'); INSERT tb4(name,sex) VALUES('小明同學','1');
SELECT * FROM tb4;
可以看到主鍵值已經自動編號1~3了。
唯一約束 UNIQUE KEY
唯一約束性在一個數據表中可以存在多個欄位,但是每個欄位值中的集合不能出現重複值,並且可為NULL。就好像我們網站中的使用者名稱一樣。
現在我們來建立一張新的資料表ta5
CREATE TABLE ta5(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
usename VARCHAR(20) NOT NULL UNIQUE KEY,
ega TINYINT UNSIGNED
);
插入兩斷使用者資料
INSERT ta5(usename,ega) VALUES('小明',22);
INSERT ta5(usename,ega) VALUES('小明',20);
可以看到mysql報錯usename欄位已經存在小明欄位。所以usename已經是具有唯一約束性的欄位。