テーブルの基本構造を見たいだけの場合もあります。
SQLiteでは、特定のテーブルに関する情報を取得する方法がいくつかあります。特に、次の4つのオプションがあります。
-
PRAGMA table_info()
ステートメント -
PRAGMA table_xinfo()
ステートメント(仮想テーブルの場合) -
.schema
コマンド -
sqlite_master
テーブル
各方法の例を以下に示します。
プラグマtable_info()
PRAGMA table_info()
ステートメントは、名前付きテーブルの列ごとに1行を返します。 DESCRIBE
と同等のSQLiteのようなものです MySQLのステートメント。
構文
構文は次のようになります:
PRAGMA schema.table_info(table-name);
table-name
の場所 は、情報が必要なテーブルの名前です。
schema
一部はオプションです。これは、接続されているデータベースまたはmain
の名前です。 またはtemp
メインデータベースとTEMPデータベース用。これを指定しない場合は、メインデータベースが使用されます。
例
ペットというテーブルに関する情報を返す例を次に示します。 。
PRAGMA table_info(Pets);
結果:
cid name type notnull dflt_value pk ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 1 PetName 0 0 2 TypeId 0 0
この場合、最初の列( PetId )のみ )データ型が明示的に定義されています。その他は、タイプを明示的に定義せずに作成されました。
PetId 列は主キー列です( 1があります pkで 列)。
プラグマtable_xinfo()
PRAGMA table_xinfo()
ステートメントは、PRAGMA table_info()
とまったく同じです。 ステートメント。ただし、仮想テーブルの非表示の列も返します。
非表示の列を含む仮想テーブルの構造を確認する場合は、これを使用します。
前の例と同じテーブルを使用した例を次に示します。
PRAGMA table_xinfo(Pets);
結果:
cid name type notnull dflt_value pk hidden ---------- ---------- ---------- ---------- ---------- ---------- ---------- 0 PetId INTEGER 0 1 0 1 PetName 0 0 0 2 TypeId 0 0 0
余分な列を表示するには、横にスクロールする必要がある場合があります。この場合、どの列も非表示になっていないため(仮想テーブルではないため)、すべての行が 0になります。 その列のために。
これも結果ですが、垂直出力(.mode line
を使用)を使用しています )横にスクロールする必要がないようにします。
.mode line
PRAGMA table_xinfo(Pets);
結果:
cid = 0 name = PetId type = INTEGER notnull = 0 dflt_value = pk = 1 hidden = 0 cid = 1 name = PetName type = notnull = 0 dflt_value = pk = 0 hidden = 0 cid = 2 name = TypeId type = notnull = 0 dflt_value = pk = 0 hidden = 0
.schemaコマンド
テーブルの構造を取得する別の方法は、.schema
を使用することです。 指図。これは、テーブルの作成に使用されたSQLを返すために使用できるいくつかのメソッドの1つです。
前の例と同じテーブルを使用した例を次に示します。
.schema Pets
結果:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) );
このメソッドを使用すると、テーブルに関する詳細情報を確認できます。この例では、 TypeId columnは、実際には別のテーブルの列を参照する外部キーです。
sqlite_masterテーブル
sqlite_master
を使用できます 前の例と同じものにテーブルを作成します。
同じテーブルを使用した例を次に示します。
SELECT sql
FROM sqlite_master
WHERE tbl_name = 'Pets';
結果:
CREATE TABLE Pets( PetId INTEGER PRIMARY KEY, PetName, TypeId, FOREIGN KEY(TypeId) REFERENCES Types(TypeId) )