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

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

(Last modified: )

sqlite_masterテーブルから取得

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

.mode line

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

sqlite_master テーブルからデータを取得するため、次のような SQL 文を実行してください。

select * from sqlite_master;

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

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

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

    type = table
    name = personal2
tbl_name = personal2
rootpage = 3
     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テーブルから取得(3)

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

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

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

.schema
.schema ?TABLE?

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

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

.schema

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

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

sqlite> .schema
CREATE TABLE personal(id, name);
CREATE TABLE personal2(id integer, name text);
sqlite>

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

-- --

SQLite でデータベースに作成されているテーブルがどのような CREATE 文を使って作成されたのかを確認する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。