sql >> データベース >  >> RDS >> SQLite

SQLiteでテーブルの構造に関する情報を取得する4つの方法

    テーブルの基本構造を見たいだけの場合もあります。

    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)
    )

    1. psycopg2は実際にはデータを挿入していません

    2. SQL ServerCompactEditionでLIKEでパラメータを使用する方法

    3. SQLServerの挿入例

    4. MySQLとMariaDBで大量のデータを処理する