SQL - 使用序號:初學者指南

你好,未來的數據庫大師!今天,我們將踏上一段令人興奮的旅程,進入 SQL 序號的世界。別擔心如果你是編程新手——我將成為你的友好導遊,我們會一步步來。到了這個教學的結尾,你將能夠像專業人士一樣創建和操作序號!

SQL - Using Sequences

序號是什麼?

在我們深入之前,讓我們先了解序號是什麼。想像你正在為一本書編號。你從1開始,然後是2、3,以此類推。這基本上就是 SQL 中序號的作用——它會自動生成一系列數字。當你需要為數據庫表中的行分配唯一標識符時,這非常有用。

現在,讓我們探討不同數據庫系統中序號是如何工作的。

MySQL中的序號

MySQL是最流行的數據庫系統之一,它對序號的处理方式有些不同。它不像其他一些數據庫那樣有專門的 SEQUENCE 對象。相反,它使用所謂的 AUTO_INCREMENT。讓我們看看這是如何工作的!

創建具有AUTO_INCREMENT的表

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

在這個例子中,我們創建了一個名為 students 的表。id 列被設置為 AUTO_INCREMENT,這意味著 MySQL 將為我們插入的每一行自動生成一個唯一數字。

讓我們插入一些數據並看看會發生什麼:

INSERT INTO students (name, grade) VALUES ('Alice', 95);
INSERT INTO students (name, grade) VALUES ('Bob', 87);
INSERT INTO students (name, grade) VALUES ('Charlie', 92);

現在,如果我們從我們的表中選擇所有行:

SELECT * FROM students;

我們將看到如下內容:

id name grade
1 Alice 95
2 Bob 87
3 Charlie 92

如您所見,MySQL 自動為每行分配了唯一的 id 值。這就像有一個熱心的圖書管理員為你的書籍編號一樣!

在MySQL中從特定值開始序號

有時候,你可能想要從一個特定的數字開始你的序號。也許你正在從一個舊系統轉移數據,並希望從它停止的地方繼續。MySQL 允許我們這樣做!

更改AUTO_INCREMENT值

ALTER TABLE students AUTO_INCREMENT = 1000;

這條命令告訴 MySQL 從1000開始 AUTO_INCREMENT 值,對我們的 students 表。讓我們插入一個新學生並看看會發生什麼:

INSERT INTO students (name, grade) VALUES ('David', 88);
SELECT * FROM students;

現在,我們的表看起來像這樣:

id name grade
1 Alice 95
2 Bob 87
3 Charlie 92
1000 David 88

David 獲得了 id 1000,我們添加的任何新學生將會獲得1001、1002等等。這就像在我們的書中開始一個新的章節!

SQL Server中的序號

現在,讓我們換個方向,看看 SQL Server 中序號是如何工作的。與 MySQL 不同,SQL Server 有一个專門的 SEQUENCE 對象。這就像在數據庫中有一個特別的數字生成機!

創建序號

這是我們如何在 SQL Server 中創建序號的方法:

CREATE SEQUENCE student_id_seq
AS INT
START WITH 1
INCREMENT BY 1;

這創建了一個名為 student_id_seq 的序號,從1開始,每次使用時增加1。

使用序號

要使用我們新的序號,我們可以這樣做:

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

INSERT INTO students (id, name, grade)
VALUES (NEXT VALUE FOR student_id_seq, 'Alice', 95);

INSERT INTO students (id, name, grade)
VALUES (NEXT VALUE FOR student_id_seq, 'Bob', 87);

如果我們現在從我們的表中選擇:

SELECT * FROM students;

我們將看到:

id name grade
1 Alice 95
2 Bob 87

NEXT VALUE FOR 語句告訴 SQL Server 使用我們序號中的下一個值。

修改序號

我們也可以在創建後修改我們的序號。例如,從一個不同的數字開始:

ALTER SEQUENCE student_id_seq
RESTART WITH 1000;

現在,如果我們插入一個新學生:

INSERT INTO students (id, name, grade)
VALUES (NEXT VALUE FOR student_id_seq, 'Charlie', 92);

SELECT * FROM students;

我們將看到:

id name grade
1 Alice 95
2 Bob 87
1000 Charlie 92

這就像我們在我們的編號系統中跳過了一部分!

結論

好了,各位!我們已經穿越了 SQL 序號的土地,探索了它們在 MySQL 和 SQL Server 中的工作方式。記住,序號就像你的個人編號助手,幫助你保持數據的組織和唯一標識。

無論你是使用 MySQL 的 AUTO_INCREMENT 還是 SQL Server 的 SEQUENCE 對象,核心思想都是一樣的——自動生成唯一數字,讓你的數據庫管理更輕鬆。

在你繼續你的 SQL 冒險時,你會發現序號在種種情況下都非常有用。它們很適合創建主鍵、追踪訂單或任何你需要一系列唯一數字的情況。

繼續練習,保持好奇心,在你意識到之前,你將會像一個有經驗的數據庫DJ一樣序列化數據!快樂編程,願你的查詢總是返回你期望的結果!

Credits: Image by storyset