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

SQLiteのすべての一時テーブルを一覧表示します

    SQLiteのほとんどのものと同様に、データベース内の一時テーブルのリストを取得する方法は複数あります。

    ここでは、SQLiteで一時テーブルを返す2つの方法を紹介します。

    .tablesコマンド

    SQLiteコマンドラインシェルに精通している場合は、おそらく.tablesについて知っているでしょう。 ドットコマンド。このコマンドは、特定のパターンに一致するすべてのテーブル(または、パターンが指定されていない場合は単にすべてのテーブル)を一覧表示します。これには一時テーブルが含まれます。

    例:

    CREATE TEMP TABLE TempProducts (id, name, price);
    .tables

    結果:

    Products           temp.TempProducts  vProducts 

    この場合、永続的なテーブルが1つあります(Products )、1つのビュー(vProducts )、および1つの一時テーブル(temp.TempProducts

    したがって、一時テーブルと永続テーブルの両方が返されることがわかります。一時テーブルで、一時テーブル専用のプレフィックスなど、固定の命名規則を使用している場合は、パターンマッチングを使用して、一時テーブルのみを取得できます。

    例:

    .tables temp%

    結果:

    temp.TempProducts

    ただし、命名規則は、全員がそれに従う場合にのみ有効です。

    結果に永続的なテーブルを返したくない場合は、 sqlite_temp_masterにクエリを実行することをお勧めします。 表(下)。

    sqlite_temp_masterテーブル

    SQLiteにはsqlite_temp_masterがあります 一時テーブルとそのインデックスおよびトリガーを含むテーブル。このテーブルは、一時テーブルを作成したアプリケーションにのみ表示されます。

    このテーブルは次のようにクエリできます:

    SELECT name FROM sqlite_temp_master;

    結果:

    TempProducts

    この例では、テーブル名のみを返しますが、アスタリスク(*)を自由に使用してください。 )すべての列を返します。

    前述のように、このテーブルには永続的なテーブルは含まれていません。一時テーブルと永続テーブルの両方を返す必要があり、.tempを使用できない場合 、 sqlite_masterを含めることができます クエリのテーブル。

    例:

    SELECT name FROM 
       (SELECT * FROM sqlite_master UNION ALL
        SELECT * FROM sqlite_temp_master)
    WHERE type='table'
    ORDER BY name;

    結果:

    Products
    TempProducts

    ビューを含める場合は、次のようにします。

    SELECT name FROM 
       (SELECT * FROM sqlite_master UNION ALL
        SELECT * FROM sqlite_temp_master)
    WHERE type in ('table', 'view')
    ORDER BY name;

    結果:

    Products
    TempProducts
    vProducts

    1. Oracleの日付から短い月の名前を返す

    2. Oracleの隠し機能

    3. PHPFreeTDS拡張機能を使用してMSSQLサーバーからUTF-8文字セットでデータを取得する

    4. MicrosoftAccessでフォームヘッダーにタイトルを追加する方法