テーブルスキーマ(構造)の確認

SQLite でデータベースに作成されているテーブルがどのような CREATE 文を使って作成されたのかについて確認する方法について解説します。 sqlite_master テーブルを利用する方法と .schema コマンドを使用する方法の二通りがあります。

(Last modified: )

sqlite_masterテーブルから取得

まず最初は sqlite_master テーブルを利用する方法です。次のような SQL 文を実行します。(見やすくなるように事前に「.mode」コマンドで mode を line に変更しています)。

select * from sqlite_master;

sqlite_masterテーブルから取得(1)

次のようなデータが取得できます。

sqlite> select * from sqlite_master;
    type = table
    name = personal
tbl_name = personal
rootpage = 4
     sql = CREATE TABLE personal(id, name)

    type = table
    name = personal2
tbl_name = personal2
rootpage = 6
     sql = CREATE TABLE personal2(id integer, name text)
sqlite>

現在2つのテーブルが作成されているため sqlite_master テーブルには2つの行が含まれています。それぞれの行の name カラムにはテーブル名、そして sql カラムにはテーブルが作成された時の CREATE TABLE 文が格納されています。このように sqlite_master テーブルを参照することで、テーブルがどのように作成されたのかを確認することができます。

特定のテーブルの CREATE TABLE 文を確認したい場合には WHERE 句を使って次のような SQL 文を実行して下さい。

select * from sqlite_master where type='table' and name='personal';

sqlite_masterテーブルから取得(2)

指定したテーブル名に関するデータだけを取得できました。

.schemaコマンドを使って取得

テーブルのスキーマに関する情報だけ取得したい場合には SQLite コマンドの .schema でも確認することができます。

.schema
.schema ?TABLE?

引数を省略すれば全てのテーブルやインデックスのスキーマ情報を表示します。また引数にテーブル名を指定すると、テーブル名に一致するテーブルや指定したテーブル名を対象としたインデックスだけのスキーマ情報を表示することができます。

では実際に試してみます。

.schema

.schemaコマンドを使って取得(1)

現在作成されている2つのテーブルに関する CREATE 文が表示されました。このように .schema コマンドを使ってもテーブルがどのように作成されたのかを確認することができます。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。