SQLite | テーブル(Table) | テーブルスキーマ(構造)の確認
テーブルの作成に使用されたCREATE文を確認する方法について説明します。sqlite_masterテーブルを検索する方法と、.schemaコマンドを使用する方法があります。
sqlite_masterテーブルを検索する
最初の方法ではsqlite_masterテーブルを使用します。次のSQL文を実行します。見やすくするため、例では先に.modeコマンドで出力モードをlineに変更しています。
select * from sqlite_master;
sqlite> select * from sqlite_master;
table|customer|customer|2|CREATE TABLE customer (id, name)
table|customer2|customer2|3|CREATE TABLE customer2 (id integer, name text)
sqlite>
sqlite> .mode line
sqlite>
sqlite> select * from sqlite_master;
type = table
name = customer
tbl_name = customer
rootpage = 2
sql = CREATE TABLE customer (id, name)
type = table
name = customer2
tbl_name = customer2
rootpage = 3
sql = CREATE TABLE customer2 (id integer, name text)
sqlite>
上記のようにデータを取得できます。
現在は2つのテーブルが作成されているため、sqlite_masterテーブルには2行が表示されます。各行のname列にはテーブル名、sql列にはテーブル作成時のCREATE TABLE文が格納されています。sqlite_masterを検索することで、各テーブルがどのように作成されたかを確認できます。
特定のテーブルのCREATE TABLE文を確認するには、WHERE句を追加します。
select * from sqlite_master where type='table' and name='customer';
sqlite> select * from sqlite_master where type='table' and name='customer';
type = table
name = customer
tbl_name = customer
rootpage = 2
sql = CREATE TABLE customer (id, name)
指定したテーブルの行だけが取得されました。
.schemaコマンドを使用する
スキーマ情報だけを確認する場合は、SQLiteの.schemaコマンドも使用できます。
.schema
.schema ?TABLE?
引数を省略すると、すべてのテーブルとインデックスのスキーマ情報を表示します。テーブル名を指定すると、一致するテーブルと関連オブジェクトのスキーマ情報を表示します。
.schemaを次のように実行します。
.schema
sqlite> .schema
CREATE TABLE customer (id, name);
CREATE TABLE customer2 (id integer, name text);
sqlite>
現在のデータベースにある2つのテーブルのCREATE文が表示されます。.schemaコマンドでも、テーブルがどのように作成されたかを確認できます。