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

SQLiteビューの作成

    概要 :このチュートリアルでは、SQLiteのCREATE VIEWの使用方法を学習します データベースに新しいビューを作成するステートメント。

    ビューとは

    データベース理論では、ビューは保存されたクエリの結果セットです。ビューは、データベースに格納されている名前付きオブジェクトにクエリをパックする方法です。

    ビューを介して、基になるテーブルのデータにアクセスできます。ビュー定義のクエリが参照するテーブルは、ベーステーブルと呼ばれます。

    ビューが役立つ場合があります:

    • まず、ビューはテーブル上に抽象化レイヤーを提供します。基になるテーブルのスキーマに触れることなく、ビューの列を追加および削除できます。
    • 次に、ビューを使用して、結合を使用して複雑なクエリをカプセル化し、データアクセスを簡素化できます。

    SQLiteビューは読み取り専用です。これは、 INSERTを使用できないことを意味します 、 DELETE 、およびUPDATE ビューを介してベーステーブルのデータを更新するステートメント。

    SQLite CREATE VIEW ステートメント

    ビューを作成するには、CREATE VIEWを使用します 次のようなステートメント:

    CREATE [TEMP] VIEW [IF NOT EXISTS] view_name[(column-name-list)]
    AS 
       select-statement;Code language: SQL (Structured Query Language) (sql)

    まず、ビューの名前を指定します。 IF NOT EXISTS オプションは、存在しない場合にのみ新しいビューを作成します。ビューがすでに存在する場合、何もしません。

    次に、TEMPを使用します またはTEMPORARY ビューを現在のデータベース接続でのみ表示する場合は、このオプションを選択します。ビューは一時ビューと呼ばれ、データベース接続が閉じられるたびにSQLiteは一時ビューを自動的に削除します。

    3番目に、SELECTを指定します ビューのステートメント。デフォルトでは、ビューの列はSELECTの結果セットから派生します 声明。ただし、テーブルの列名とは異なるビュー列の名前を割り当てることができます

    SQLite CREATE VIEW

    CREATE VIEWを使用して新しいビューを作成する例をいくつか見てみましょう。 ステートメント。

    1)複雑なクエリを簡略化するためのビューの作成

    次のクエリは、tracksからデータを取得します 、albumsmedia_types およびgenres 内部結合句を使用したサンプルデータベースのテーブル。

    SELECT
       trackid,
       tracks.name,
       albums.Title AS album,
       media_types.Name AS media,
       genres.Name AS genres
    FROM
       tracks
    INNER JOIN albums ON Albums.AlbumId = tracks.AlbumId
    INNER JOIN media_types ON media_types.MediaTypeId = tracks.MediaTypeId
    INNER JOIN genres ON genres.GenreId = tracks.GenreId;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    このクエリに基づいてビューを作成するには、次のステートメントを使用します。

    CREATE VIEW v_tracks 
    AS 
    SELECT
    	trackid,
    	tracks.name,
    	albums.Title AS album,
    	media_types.Name AS media,
    	genres.Name AS genres
    FROM
    	tracks
    INNER JOIN albums ON Albums.AlbumId = tracks.AlbumId
    INNER JOIN media_types ON media_types.MediaTypeId = tracks.MediaTypeId
    INNER JOIN genres ON genres.GenreId = tracks.GenreId;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    今後は、上記の複雑なクエリの代わりに、次の単純なクエリを使用できます。

    SELECT * FROM v_tracks;Code language: SQL (Structured Query Language) (sql)

    試してみてください

    2)カスタム列名を使用したビューの作成

    次のステートメントは、v_albumsという名前のビューを作成します アルバムのタイトルとアルバムの長さ(分単位)が含まれています:

    CREATE VIEW v_albums (
        AlbumTitle,
        Minutes
    )
    AS
        SELECT albums.title,
               SUM(milliseconds) / 60000
          FROM tracks
               INNER JOIN
               albums USING (
                   AlbumId
               )
         GROUP BY AlbumTitle;
    Code language: SQL (Structured Query Language) (sql)

    この例では、ビューAlbumTitleに新しい列を指定しました albums.titleの場合 式SUM(milliseconds) / 60000の列と分

    このクエリは、v_albumsからデータを返します ビュー:

    SELECT * FROM v_albums;Code language: SQL (Structured Query Language) (sql)

    このチュートリアルでは、データベースビューと、CREATE VIEWの使用方法について学習しました。 SQLiteで新しいビューを作成するステートメント。


    1. SELECT COUNT(*)AScount-このカウントの使用方法

    2. SQLServerのTempDBファイルの場所の変更

    3. 子テーブル挿入のトリガーを作成すると、紛らわしいエラーが返されます

    4. MySQLでサーバーによってサポートされている照合を見つける方法