1. 程式人生 > >MySQL資料庫(四)__2018.11.12

MySQL資料庫(四)__2018.11.12

想在記錄中保持資料的完整性和一致性,就必須有完整性約束條件。

主鍵:標識著記錄的唯一性,主要目的是幫助我們快速定位到表中的某一條記錄。主鍵的值不能重複,而且一個表中只能有一個主鍵。被設定為主鍵的欄位禁止為空。一般給表中的無意義欄位設定主鍵,習慣給編號欄位特別是數值性。

--測試主鍵

CREATE TABLE test_primary_key(
	id INT UNSIGNED PRIMARY KEY,
	username VARCHAR(20)
);

PRI就是主鍵的縮寫,被標註為主鍵後,就禁止為空了,不能重複了。

NULL部分是禁止為空的。

INSERT test_primary_key(id,username) VALUES(1,'king');

主鍵為空

INSERT test_primary_key(username) VALUES('king');

主鍵重複,代表了一個唯一性。

mysql> INSERT test_primary_key(id,username) VALUES(1,'queue');

指定主鍵時可以省略primary。

CREATE TABLE test_primary_key(
	id INT UNSIGNED KEY,
	username VARCHAR(20)
);

第二種寫法:

CREATE TABLE test_primary_key(
	id INT UNSIGNED ,
	username VARCHAR(20),
        PRIMARY KEY(id)
);

使用多欄位主鍵的時候用第二種寫法比較方便。

一個表中只能有一個主鍵。但是可以有複合主鍵的形式。

多主鍵被定義的情況:

複合主鍵:

由id和courseId共同組成一個主鍵,用它們共同定義一個使用者。它們兩個共同可以定位到一個位置。它們兩個必須同時相同才代表重複。

CREATE TABLE test_primary_key3(
	id INT UNSIGNED,
	courseId INT UNSIGNED,
	username VARCHAR(20),
	email VARCHAR(50),
	PRIMARY KEY(id,courseId)
);

此時的主鍵就相當於1-1

INSERT test_primary_key3(id,courseId,username,email)
VALUES(1,'a','king','[email protected]');

主鍵為:1-a(它們兩個整體構成一個唯一值就可以)

INSERT test_primary_key3(id,courseId,username,email)
VALUES(1,'b','king','[email protected]');

複合主鍵重複。

一般就用兩個欄位組成一個符合主鍵。

和主鍵配合來用的auto increasement。是一個自動增長(預設排號)預設起始值從1開始,每次增長1。

--測試自動增長auto increment。

一般是配合索引來使用,它一定要配合索引來使用。一般配合主鍵索引來使用。

一個表中只能由一個自動增長的列,並且它一定得被定義為索引。

CREATE TABLE test_auto_increment(
	id INT UNSIGNED AUTO_INCREMENT,
	username VARCHAR(20)
);

CREATE TABLE test_auto_increment(
	id INT UNSIGNED KEY AUTO_INCREMENT,
	username VARCHAR(20)
);

查看錶結構得詳細資訊:

INSERT test_auto_increment(username)VALUES('b'); 
INSERT test_auto_increment(username)VALUES('c'); 

自增長,且只能用到數值列。

INSERT test_auto_increment(id,username)VALUES(NULL,'b'); 
INSERT test_auto_increment(id,username)VALUES(DEFAULT,'c'); 

INSERT test_auto_increment(id,username)VALUES('','b');

INSERT test_auto_increment(id,username)VALUES(15,'G');

自動增長是最大值加一。