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コマンドでも、テーブルがどのように作成されたかを確認できます。