SQL 自動インクリメント

概要: このチュートリアルでは、SQL 自動インクリメントを使用して、値が自動的に生成される連続した整数の列を定義する方法を学びます。

テーブルを設計する際、データベースシステムによって自動的に生成される連続した整数の値を持つ、サロゲート主キー を使用することがよくあります。

この主キー列は、ID または自動インクリメント列として知られています。

自動インクリメント列に新しい行が挿入されると、自動生成された連続した整数が挿入に使用されます。

たとえば、最初の行の値が 1 の場合、2 番目の行の値は 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)

この例では、request_id が自動インクリメント列である leave_requests という新しいテーブルを作成しました。

Oracle の SQL 自動インクリメント列

Oracle は、次のようにID列 を使用して自動インクリメント列を作成します。

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 もID列 を使用して自動インクリメント列を定義します。

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 は ID 列を使用して自動インクリメント列を定義します。

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 自動インクリメント列を使用して、値が自動的に生成される連続した数値の列を定義する方法を学習しました。

このチュートリアルは役に立ちましたか?