有意義的表創建

在前面的課程中,我們已經對創建表的查詢有了一些了解,現在是時候深入研究一下了。

創建表與在 Java 中聲明類非常相似,並且具有以下模式:

CREATE TABLE table_name (
	column1 datatype,
	column2 datatype,
	column3 datatype,
   ....
);

例如,讓我們編寫一個查詢來創建一個包含用戶的表:

CREATE TABLE user (
	id INT,
	name VARCHAR(100),
	level INT,
	created_date DATE,
);

它看起來很簡單,因為這裡沒有指出很多細微差別。

首先,表格可能有額外的設置。

其次,每一列都可以有額外的設置。

我們將從創建列的設置開始。

表中的鍵

除了名稱和數據類型之外,表列還可以具有以下設置:

首要的關鍵 列是表的鍵
唯一鍵 所有列值必須是唯一的。
默認值 默認值
不為空 禁止接受值NULL
自動遞增 當新記錄添加到表中時,SQL Server 將自動增加該值
生成的 計算字段
貯存 數據存儲在哪裡:在磁盤上還是在內存中
評論 列註釋,例如當地語言的標題

下面我們將看看其中的一些。

首先,它是PRIMARY KEY

大多數情況下,這是一個單獨的列,名稱為 id,類型為 INT。這就是所謂的表的“主鍵”,它的所有行都有這個鍵的唯一值。主要用來讓其他表可以引用我們表的記錄,指向它的具體記錄。

其次是UNIQUE KEY

在某些方面,它類似於 PRIMARY KEY,儘管它的語義負載完全不同。如果一列具有 UNIQUE 屬性,那麼該列中的所有值都必須是唯一的。UNIQUE KEY 和 PRIMARY KEY 之間區別的一個很好的例子是護照辦公室的人員名單。

稅號是一個 PRIMARY KEY,用於方便地從其他表中引用正確的人。

護照號碼是唯一的鑰匙。沒有兩個人可以擁有相同的護照號碼。但是,護照號碼可以更改。比如改姓的時候。稅號將永遠留在您身邊。這是PRIMARY KEY的主要任務。指定 PRIMARY KEY 的查詢示例:

CREATE TABLE user (
	id INT PRIMARY KEY,
	name VARCHAR(100),
	level INT,
	created_date DATE,
);

數據類型設置

還有一些不太重要但有用的屬性。

默認值

在向表中插入數據(添加新行)時,如果某些列有默認值,則可以省略它們的值。在這種情況下,SQL 服務器將簡單地設置列本身的值。

從 MySQL 版本 8 開始,您可以將表達式指定為值。

不為空

如果你在創建表時為一列指定了NOT NULL屬性,那麼SQL Server將確保不可能在該列中存儲NULL值。默認情況下,任何列都可以有 NULL 值,即使是 INT 列。這對於 Java 程序員來說有點不明顯。

自動遞增

它通常用於列 ID。當您向表中添加新行時,您確實希望 SQL 服務器為該條目分配一個 ID。誰比服務器更清楚他在表中有多少行。特別是如果來自不同客戶端的請求轉到同一個 SQL 服務器。

這正是 AUTO_INCREMENT 屬性的作用。添加新行時,我們不傳遞任何 id,SQL Server 將為該記錄指定正確的 ID:它將簡單地獲取最後一個現有記錄的 ID 並將其增加 1。該屬性只能是與整數和實數類型一起使用。當然,讓我們舉一個創建這樣一個表的例子:

CREATE TABLE user (
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(100) NOT NULL,
	level INT DEFAULT 1,
	created_date DATE NOT NULL,
);