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