SQLiteを学んでいこうという連載の11回目です。前回の記事はこちらになります。
前回は、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' │ └──────────┘
テーブルの削除に成功しました。
次回は制約
いかがでしょうか。これでテーブル操作の基本がわかりました。次回は制約についてご紹介します。お楽しみに!!