SQLite | インデックス | インデックスのスキーマ(構造)を確認する
作成済みのインデックスがどのCREATE INDEX文で作成されたかを確認する方法を説明します。sqlite_masterテーブルを照会する方法と.schemaコマンドを使う方法があります。
sqlite_masterテーブルから照会する
次のSQL文を実行します。例では見やすくするため、.modeコマンドで表示モードをlineに変更します。
select * from sqlite_master;
sqlite> select * from sqlite_master;
table|user|user|2|CREATE TABLE user (name text, old integer, address text, colunm name)
index|nameindex|user|3|CREATE UNIQUE INDEX nameindex on user (name)
sqlite>
sqlite> .mode line
sqlite>
sqlite> select * from sqlite_master;
type = table
name = user
tbl_name = user
rootpage = 2
sql = CREATE TABLE user (name text, old integer, address text)
type = index
name = nameindex
tbl_name = user
rootpage = 3
sql = CREATE UNIQUE INDEX nameindex on user (name)
sqlite>
作成済みのテーブルとインデックスの情報を取得できます。インデックスのデータは次の部分です。
type = index
name = nameindex
tbl_name = user
rootpage = 3
sql = CREATE UNIQUE INDEX nameindex on user (name)
インデックスの場合、typeはindexです。name列にインデックス名、tbl_name列に対象テーブル名、sql列に作成時のSQL文が表示されます。
インデックスだけを表示するにはWHERE句を使います。
select * from sqlite_master where type = 'index';
sqlite> select * from sqlite_master where type = 'index';
type = index
name = nameindex
tbl_name = user
rootpage = 3
sql = CREATE UNIQUE INDEX nameindex on user (name)
.schemaコマンドを使って照会する
SQLiteの.schemaコマンドでもスキーマ情報を確認できます。
.schema
.schema? TABLE?
引数を省略すると、すべてのテーブルとインデックスのスキーマ情報を表示します。テーブル名を指定すると、そのテーブルまたは一致するインデックス名に関連する情報を表示します。
.schema
sqlite> .schema
CREATE TABLE user (name text, old integer, address text, colunm name);
CREATE UNIQUE INDEX nameindex on user (name);
sqlite>
現在のデータベースにあるテーブルとインデックスのCREATE文が表示されます。