テーブルスキーマ(構造)の確認
データベースに作成されているテーブルがどのようなCREATE文を使って作成されたのかについて確認する方法について解説します。sqlite_masterテーブルを利用する方法と.schemaコマンドを使用する方法の二通りがあります。
1.sqlite_masterテーブルから取得
2..schemaコマンドを使って取得
まず最初はsqlite_masterテーブルを利用する方法です。次のようなSQL文を実行します。(事前に「.mode」コマンドで「mode」を「line」に変更しています)。
select * from sqlite_master;
次のようなデータが取得できます。
sqlite> select * from sqlite_master; type = table name = personal tbl_name = personal rootpage = 3 sql = CREATE TABLE personal(id, name) type = table name = personal2 tbl_name = personal2 rootpage = 2 sql = CREATE TABLE personal2(id interger, name text)
「sqlite_master」テーブルには2つの行が含まれています。「name」カラムにはテーブル名、そして「sql」カラムにはテーブルが作成された時のCREATE TABLE文が格納されています。
特定のテーブルのCREATE TABLE文を確認したい場合にはWHERE句を使って次のようなSQL文を実行して下さい。
select * from sqlite_master where type='table' and name='personal';
次のようなデータが取得できます。
sqlite> select * from sqlite_master where type='table' and name='address'; type = table name = address tbl_name = address rootpage = 3 sql = CREATE TABLE address (id integer, pref text)
指定したテーブル名に関するデータだけを取得できました。
テーブルのスキーマに関する情報だけ取得したい場合にはSQLiteコマンドの「.schema」でも確認することができます。
.schema .schema ?TABLE?
引数を省略すれば全てのテーブルやインデックスのスキーマ情報を表示します。また引数にテーブル名を指定すると、テーブル名に一致するテーブルや指定したテーブル名を対象としたインデックスだけのスキーマ情報を表示することができます。
では実際に試してみます。
現在データベースの中に作成されている2つのテーブルに関するCREATE文が表示されました。
( Written by Tatsuo Ikura )