1. 程式人生 > 其它 >Mysql 零距離-入門(六)資料唯一約束性

Mysql 零距離-入門(六)資料唯一約束性

在資料記錄中我們為保證資料的唯一性,保證使用者資料在資料中不出現重複記錄。我們需要用到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已經是具有唯一約束性的欄位。