SQL 自動遞增

摘要:在本教程中,您將學習如何使用 SQL 自增來定義一個列,該列的值是自動生成的順序整數。

在設計表時,我們經常使用代理主鍵,其值是由資料庫系統自動生成的順序整數。

這個主鍵列被稱為標識列或自增列。

當向自增列中插入新行時,會使用一個自動生成的順序整數進行插入。

例如,如果第一行的值是 1,那麼第二行的值就是 2,依此類推。

一些資料庫系統允許您定義起始值和增量值。例如,當起始值為 10,增量值為 10 時,生成的順序整數將是 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 自增列來定義一個值是自動生成的順序數字的列。

本教程是否有幫助?
© .