レコードを一意に決める際、今までは手動で値を決めてINSERTしてきました。
例えば、PRIMARY KEY の記事では、10番代からスタートしてキーに対して意味を持たせていました。
しかし、もしIDの数値自体に意味を持たせる必要がない場合。
例えば社員が100人いて、先頭から順番にIDがよい。という場合はいちいち自分で値を指定する必要はないですよね。
SQLite3に限らず、他のデータベースシステムにおいても、AUTOINCREMENTを付与することにより、値を自動採番しデータを一意に決めるキーを作成することが可能です。
- AUTOINCREMENTについて解説します。
- ATUOINCREMENTの基本構文を掲載します。
- サンプルコードを用いて、社員リストを作成します。
目次
AUTOINCREMENTとは何か?
データベース内のレコードを一意に特定する際に、利用できる属性です。
手動で値を決めるのではなく、自動で値を採番してくれます。
値は一ずつ増加して、連番にしてくれます。
基本構文とサンプル
【employeeテーブルの作成】
とある会社で雇用している社員名の一覧(employeeテーブル)を作成します。
- IDは社員番号とする。
- IDは上から順番に連番にする。
- 社員名は【社員_X】という形式で追加していく。
株価のデータとは離れてしまいますが、ご容赦ください!
【基本構文(AUTOINCREMENT)】
create table テーブル名称 (カラム名1 integer primary key autoincrement, カラム2 データ型);
【補足:PRIMARY KEYのデータ型】
今回基本構文で掲載したものは、以下の2点から成り立っています。
- カラム1に対してPRIMARY KEY を付与する。
- カラム1はINTEGER型である。
こうすることで、IDは数値の連番となり、またPRIMARY KEYとしてレコードを一意に決める属性が付与されます。
サンプル(employeeテーブル作成)
create table employee(id integer primary key autoincrement, name text);
データの投入
insert into employee(name) values('社員_1');
insert into employee(name) values('社員_2');
insert into employee(name) values('社員_3');
insert into employee(name) values('社員_4');
insert into employee(name) values('社員_5');
動作確認
IDを指定していなくても、1〜5の番号が付与されていることがわかります。
※select文以下をご覧ください。
IDの一部を欠番にした場合
INSERT文を実行するときに既存の番号からいくつか飛ばして、欠番を作ったとします。
欠番を指定した場合は、欠番を飛ばして最大値からまた連番がスタートします。
例えば、現状5番までの社員番号を飛ばして、10から指定することも可能です。
その場合、次に番号を指定せずに実行すると、11からスタートします。
動作補足(欠番を挿入)
動作補足(欠番の次にIDを指定せずに社員を追加)
AUTOINCREMENTの効果で、現状付与されいている最大の値に+1された値が連番として作成されます。
※つまり、今回で言うと、11番が作成されます。
EOF
AUTOINCREMENTについて、ご説明しました。
では、また次回。