テーブル操作(SQLiteを学ぶ_11)

SQLiteを学んでいこうという連載の11回目です。前回の記事はこちらになります。

hirocom777.hatenadiary.org

前回は、SQLiteでテーブル内容の確認方法についてご紹介しました。テーブルを構成する情報がわかるとSQLiteの理解が深まりますね。

今回はこれを踏まえてテーブル操作の方法をご紹介します。以下の手順でテーブルを作成して、操作して結果を見てみましょう。

sqlite> CREATE TABLE sample(id INTEGER,name TEXT,age INTEGER);
sqlite> INSERT INTO sample(id,name,age)
   ...> VALUES(1,"MURAYAMA",22),
   ...> (2,"OOSAKI",29),
   ...> (3,"TANAKA",26);
sqlite> SELECT name FROM sqlite_master WHERE type = 'table';
sample

テーブル「sample」が作成されました。

テーブルの複写

テーブルの複写をしてみましょう。複写は以下のSQL文で実現可能です。

CREATE TABLE テーブル名 AS SELECT * FROM 複写元テーブル名;

テーブル「sample」を複写して「sample_2」を作ります。 結果がわかりやすいように表示は「.mode qbox」と設定しました。

sqlite> CREATE TABLE sample_2 AS SELECT * FROM sample;
sqlite> SELECT * FROM sample_2;
┌────┬────────────┬─────┐
│ id │    name    │ age │
├────┼────────────┼─────┤
│ 1  │ 'MURAYAMA' │ 22  │
│ 2  │ 'OOSAKI'   │ 29  │
│ 3  │ 'TANAKA'   │ 26  │
└────┴────────────┴─────┘

ちなみにテーブルの構成のみでデータのないテーブルを作りたい場合は以下のSQL文で可能です。

CREATE TABLE テーブル名 AS SELECT * FROM 複写元テーブル名 WHERE 0;

テーブル名の変更

続いてテーブル名の変更です。複写したテーブルの名前を変更してみます。テーブル名の変更は以下のSQL文で実現可能です。

ALTER TABLE テーブル名 RENAME TO 新しいテーブル名;

「sample_2」の名前を「sample_3」に変更してみましょう。

sqlite> ALTER TABLE sample_2 RENAME TO sample_3;
sqlite> SELECT name FROM sqlite_master WHERE type = 'table';
┌────────────┐
│    name    │
├────────────┤
│ 'sample'   │
│ 'sample_3' │
└────────────┘

テーブル名が「sample_3」に変更になりました。

列の追加と削除

名前を変更したテーブルに列を追加してみましょう。列の追加は以下のSQL文で実現可能です。

ALTER TABLE テーブル名 ADD COLUMN 追加する列名[データ型];

「sample_3」に「remarks」列を追加してみましょう。

sqlite> ALTER TABLE sample_3 ADD COLUMN remarks[TEXT];
sqlite> SELECT * FROM sample_3;
┌────┬────────────┬─────┬─────────┐
│ id │    name    │ age │ remarks │
├────┼────────────┼─────┼─────────┤
│ 1  │ 'MURAYAMA' │ 22  │ NULL    │
│ 2  │ 'OOSAKI'   │ 29  │ NULL    │
│ 3  │ 'TANAKA'   │ 26  │ NULL    │
└────┴────────────┴─────┴─────────┘

列を削除するには以下のSQL文を実行します。

ALTER TABLE テーブル名 DROP COLUMN 列名;

「sample_3」に追加した「remarks」列を削除してみましょう。

sqlite> ALTER TABLE sample_3 DROP COLUMN remarks;
sqlite> SELECT * FROM sample_3;
┌────┬────────────┬─────┐
│ id │    name    │ age │
├────┼────────────┼─────┤
│ 1  │ 'MURAYAMA' │ 22  │
│ 2  │ 'OOSAKI'   │ 29  │
│ 3  │ 'TANAKA'   │ 26  │
└────┴────────────┴─────┘

列の削除に成功しました。 尚、「ALTER TABLE」による列の削除は「version 3.35」以降で可能となります。

テーブルの削除

最後にテーブルを削除します。テーブルの削除は以下のSQL文で実現可能です。

DROP TABLE テーブル名;

テーブル「sample_3」を削除してみましょう。

sqlite> DROP TABLE sample_3;
sqlite> SELECT name FROM sqlite_master WHERE type = 'table';
┌──────────┐
│   name   │
├──────────┤
│ 'sample' │
└──────────┘

テーブルの削除に成功しました。

次回は制約

いかがでしょうか。これでテーブル操作の基本がわかりました。次回は制約についてご紹介します。お楽しみに!!

hirocom777.hatenadiary.org

SQLite学習記事のまとめですはこちらから