概要:在本教學中,您將學習如何使用 SQL 自動遞增來定義一個欄位,該欄位的值是自動產生的連續整數。
在設計表格時,我們經常使用代理主鍵,其值是由資料庫系統自動產生的連續整數。
這個主鍵欄位被稱為身分或自動遞增欄位。
當將新列插入自動遞增欄位時,會使用自動產生的連續整數進行插入。
例如,如果第一列的值是 1,則第二列的值是 2,依此類推。
某些資料庫系統允許您定義起始值和遞增值。例如,當起始值為 10 且遞增值為 20 時,連續整數為 10、20、30 等等。
不同的資料庫系統以不同的方式實作自動遞增欄位。讓我們看看 SQL 自動遞增欄位如何在一些主要的資料庫系統中實作。
MySQL 中的 SQL 自動遞增欄位
MySQL 使用 AUTO_INCREMENT
屬性來定義自動遞增欄位。請參閱以下範例
CREATE TABLE leave_requests (
request_id INT AUTO_INCREMENT,
employee_id INT NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
leave_type INT NOT NULL,
PRIMARY KEY(request_id)
);
Code language: SQL (Structured Query Language) (sql)
在此範例中,我們建立了一個名為 leave_requests
的新表格,其中 request_id
是自動遞增欄位。
Oracle 中的 SQL 自動遞增欄位
Oracle 使用身分欄位來建立自動遞增欄位,如下所示
CREATE TABLE leave_requests (
request_id NUMBER GENERATED BY DEFAULT AS IDENTITY,
employee_id INT NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
leave_type INT NOT NULL,
PRIMARY KEY(request_id)
);
Code language: SQL (Structured Query Language) (sql)
PostgreSQL 中的 SQL 自動遞增欄位
與 Oracle 類似,PostgreSQL 也使用身分欄位來定義自動遞增欄位
CREATE TABLE leave_requests (
request_id INT GENERATED BY DEFAULT AS IDENTITY,
employee_id INT NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
leave_type INT NOT NULL,
PRIMARY KEY(request_id)
);
Code language: SQL (Structured Query Language) (sql)
SQL Server 中的 SQL 自動遞增欄位
SQL Server 使用 IDENTITY
屬性來定義自動遞增欄位,如下列查詢所示
CREATE TABLE leave_requests (
request_id INT IDENTITY(1,1),
employee_id INT NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
leave_type INT NOT NULL,
PRIMARY KEY(request_id)
);
Code language: SQL (Structured Query Language) (sql)
DB2 中的 SQL 自動遞增欄位
與 Oracle 一樣,DB2 使用身分欄位來定義自動遞增欄位
CREATE TABLE leave_requests (
request_id INT GENERATED BY DEFAULT AS IDENTITY,
employee_id INT NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL,
leave_type INT NOT NULL,
PRIMARY KEY(request_id)
);
Code language: SQL (Structured Query Language) (sql)
在本教學中,您已經學習如何使用 SQL 自動遞增欄位來定義一個欄位,該欄位的值是自動產生的連續數字。
這個教學對您有幫助嗎?