SQL 自動遞增

概要:在本教學中,您將學習如何使用 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 自動遞增欄位來定義一個欄位,該欄位的值是自動產生的連續數字。

這個教學對您有幫助嗎?