auの日記

プログラミング初心者の日記。(auはハンドルネームです)

プライマリーキーでINTEGERを指定すると変わった動きをする

auです。
PRIMARY KEY(プライマリーキー)をで、INTEGERを指定した場合、変わった動きをするようなので実際に動かして確認してみました。

自動的に1ずつ追加されていく

まず、PRIMARY KEYでINTEGERを指定したカラムをしたテーブルを作成します。

 CREATE TABLE user(id INTEGER PRIMARY KEY, name TEXT, address TEXT);

id INTEGER PRIMARY KEYという部分が大事になります。
ここにidを選択しないでデータをいれていきます。

INSERT INTO user(name, address) VALUES("Sato", "東京");
INSERT INTO user(name, address) VALUES("Tanaka", "神奈川");
INSERT INTO user(name, address) VALUES("Saito", "埼玉");

idを指定していない、3つのデータが入りました。

.mode column
.header on
SELECT * FROM user;
id          name        address
----------  ----------  ----------
1           Sato        東京
2           Tanaka      神奈川
3           Saito       埼玉

指定していないにも関わらず、idに1,2,3と振られるようになりました。

INSERT INTO user VALUES(5, "Takahashi", "茨城");
SELECT * FROM user;
id          name        address
----------  ----------  ----------
1           Sato        東京
2           Tanaka      神奈川
3           Saito       埼玉
5           Takahashi   茨城

idを1つずらしてデータをいれました。

INSERT INTO user(name, address) VALUES("Goto", "群馬");
SELECT * FROM user;
id          name        address
----------  ----------  ----------
1           Sato        東京
2           Tanaka      神奈川
3           Saito       埼玉
5           Takahashi   茨城
6           Goto        群馬

4を飛ばして5の次の6が割り振られました。

このように、idを振らなくてもINTEGER PRIMARY KEYを指定することで、略すことができます。個人的にはPRIMARY KEYが指定されていれば、重複することはないと思うので、必要ないんじゃないかなぁと思いました。