SQL - 自動遞增

你好啊,未來的數據庫大師!今天,我們將要深入探索 SQL 中的自動遞增神奇世界。別擔心如果你是個新手;到了這個教學結束時,你會像專家一樣進行自動遞增!

SQL - Auto Increment

自動遞增是什麼?

在我們深入了解細節之前,讓我們先來了解自動遞增到底是什麼。想像你是一位圖書管理員(我大學時期就是一位!),你需要為每本新進的書籍分配一個唯一號碼。每次都要記住你上次使用的號碼並手動遞增,這不是很麻煩嗎?這就是自動遞增出來救援的時候!

在 SQL 中,自動遞增是一個字段,它會為表中插入的每個新記錄自動生成一個唯一號碼。這就像有一個賢助手說:"別擔心,我會為你處理編號!"

MySQL 中的自動遞增

我們從 MySQL 開始,這是最流行的數據庫管理系統之一。在 MySQL 中,我們使用 AUTO_INCREMENT 關鍵字來創建一個自動遞增的列。

創建帶有自動遞增的表

以下是如何創建一個帶有自動遞增主鍵的表:

CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT
);

在這個例子中:

  • id 是我們的自動遞增列
  • INT 指定它是一個整數
  • AUTO_INCREMENT 告訴 MySQL 為每個新記錄自動增加這個值
  • PRIMARY KEY 讓這個列成為表的主鍵

插入記錄

現在,讓我們在表中添加一些學生:

INSERT INTO students (name, age) VALUES ('Alice', 20);
INSERT INTO students (name, age) VALUES ('Bob', 22);
INSERT INTO students (name, age) VALUES ('Charlie', 21);

注意我們在插入記錄時沒有指定 id。MySQL 會自動為我們分配和遞增這些值。如果我們從這個表中選擇所有記錄,我們會看到:

+----+---------+-----+
| id | name    | age |
+----+---------+-----+
|  1 | Alice   |  20 |
|  2 | Bob     |  22 |
|  3 | Charlie |  21 |
+----+---------+-----+

從特定值開始

如果你希望你的自動遞增從一個特定數字開始,該怎麼辦?也許你正在合併兩個數據庫,並且希望避免重複的 ID。沒問題!你可以像這樣設置初始值:

ALTER TABLE students AUTO_INCREMENT = 1000;

現在,下一個插入的記錄將有個 ID 為 1000,並從那裡開始遞增。

SQL Server 中的自動遞增

現在,讓我們來看看 SQL Server。概念是相似的,但語法有所不同。在 SQL Server 中,我們使用 IDENTITY 關鍵字來實現自動遞增列。

創建帶有身份的表

以下是如何在 SQL Server 中創建一個帶有自動遞增列的表:

CREATE TABLE employees (
id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);

在這個例子中:

  • IDENTITY(1,1) 意味著從 1 開始並遞增 1
  • 第一個參數(1)是種子值(從哪裡開始)
  • 第二個參數(1)是遞增值(增加多少)

插入記錄

插入記錄與 MySQL 相似:

INSERT INTO employees (name, department) VALUES ('David', 'Sales');
INSERT INTO employees (name, department) VALUES ('Emma', 'Marketing');
INSERT INTO employees (name, department) VALUES ('Frank', 'IT');

同樣,我們沒有指定 id。SQL Server 會為我們處理這部分。

檢查當前身份值

在 SQL Server 中,你可以使用 IDENT_CURRENT 函數來檢查當前的身份值:

SELECT IDENT_CURRENT('employees');

這將返回 'employees' 表生成的最後身份值。

重置身份

如果你需要重置身份值(請謹慎操作!),你可以使用:

DBCC CHECKIDENT ('employees', RESEED, 1000);

這將重置身份為 1000,所以下一個插入的記錄將有個 ID 為 1000。

常見自動遞增方法

以下是我們討論過的常見自動遞增方法的總結:

數據庫 關鍵字 示例
MySQL AUTO_INCREMENT id INT AUTO_INCREMENT PRIMARY KEY
SQL Server IDENTITY id INT IDENTITY(1,1) PRIMARY KEY

結論

好了,各位!你剛剛通過自動遞增的超能力升級了你的 SQL 技能。記住,自動遞增列對於創建唯一標識符非常有用,但請謹慎使用。它們就像烹飪中的調味料一樣——必要,但不要過量使用!

在我多年的教學經歷中,我看見學生們從困惑到"恍然大悟"的時刻,當他們掌握了自動遞增。這就像看著一個燈泡亮起,突然間,數據庫設計變得更加有趣!

繼續練習,保持好奇心,在你意識到之前,你將成為你圈子中 SQL 方面的專家。開心地編程,願你的查詢總是返回你期望的結果!

Credits: Image by storyset