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

SQL Server 2016:ビューを作成する

    SQL Serverでは、ビューとしてクエリを実行できます。ビューは、セキュリティ、使いやすさ、利便性など、さまざまな理由で有益です。

    SQL Serverでは、ビュー 内容がクエリによって定義される仮想テーブルです。これは基本的に、データベースに保存される事前に作成されたクエリです。

    ビューはSELECTで構成されます ステートメントを作成し、ビューに対してクエリを実行すると、テーブルを開いたときと同じように結果が表示されます。ビューは、複数のテーブルからデータをまとめたり、データを集約したりして、単一のテーブルであるかのように表示できるため、仮想テーブルと呼ばれます。

    ビューのメリット

    ビューは、アクセスレベルが異なる複数のユーザーがいて、すべてのユーザーがデータベース内のデータの一部(必ずしもすべてのデータである必要はない)を表示する必要がある場合に役立ちます。ビューは次のことを実行できます:

    • テーブル内の特定の行へのアクセスを制限する
    • テーブル内の特定の列へのアクセスを制限する
    • 複数のテーブルの列を結合して、単一のテーブルの一部であるかのように表示します
    • 集計情報(COUNT()の結果など)を提示します 機能)

    ビューを作成する方法

    CREATE VIEWを使用してビューを作成します ステートメントの後にSELECTが続きます ステートメント。

    CREATE VIEW ViewName 
    AS
    SELECT ...
    

    前のクエリからビューを作成します。

    1. ビューをデザインする

      前の例のクエリを取得し、プレフィックスとして CREATE VIEW RelativeAlbums AS を付けます。 。

      ORDER BYも削除します ビューはこの句をサポートしていないため(TOPを除く) 、OFFSET またはFOR XML も指定されています。

      また、ステートメントターミネータとして、ステートメントの最後にセミコロンを追加します(詳細は以下を参照)。

      サンプルコード

      以下は、ORDER BYを使用した例のコードです。 句が削除され、ステートメントターミネータとしてセミコロンが追加されました。

      また、読みやすくするために少し再フォーマットしました。

      CREATE VIEW RecentAlbums 
      AS
      SELECT  Albums.ReleaseDate, 
              Albums.AlbumName, 
              Genres.Genre, 
              Artists.ArtistName
      FROM Albums 
      INNER JOIN
              Artists ON 
              Albums.ArtistId = Artists.ArtistId 
              INNER JOIN
                  Genres ON 
                  Albums.GenreId = Genres.GenreId
      WHERE   (Albums.ReleaseDate > DATEADD(year, - 10, GETDATE()));

      この例では、ビューの最後にセミコロンを追加しました。クエリデザイナにはこれは含まれていませんが、含めることをお勧めします。

      セミコロンはANSISQL-92規格の一部です。ステートメントターミネーター文字です。

      また、Microsoftは、セミコロンで終了しないTransact-SQLステートメントがSQL Server 2016で非推奨になり、将来のバージョンではサポートされないことを発表しました(SQLServerはこれまでGOを使用してきました。 セミコロンの代わりにステートメントターミネータとしてのキーワード)。

    2. ビューを実行する

      次に、他のクエリを実行するのと同じようにビューを実行します。

      実行をクリックします ツールバー上。

      これで、オブジェクトエクスプローラーのビューに移動できます。展開すると、列とそのデータ型およびプロパティがテーブルであるかのように表示されます。

    3. ビューのクエリ

      ビューが作成されたので、SELECTを実行してビューをクエリできます。 それに対する声明。

      したがって、SELECT * FROM RecentAlbums;を使用して、新しく作成したビューをクエリできます。 。

    4. ビューをフィルタリングする

      ビューの良い点の1つは、ビューに対して独自のフィルタリング基準を適用できることです。結果をさらにフィルタリングできます。

      たとえば、WHERE Genre = 'Pop'を追加できます。 、ビューが popのみを返すようにします 過去10年間のアルバム。

    ビューを変更する

    ALTER VIEWを使用してビューを変更できます CREATE VIEWの代わりにステートメント ステートメント。

    1. 変更されたビューを設計する

      ここでは、ビューを変更して、10年だけでなく過去20年間のアルバムを返します。

      かなり古い学校のコレクションなので、過去20年以内にリリースされたアルバムはすべて「最近」に分類されます:)

      また、別の列を返します: Artists.ActiveFrom

      サンプルコード

      例で使用するコードは次のとおりです。

      ALTER VIEW RecentAlbums 
      AS
      SELECT  Albums.ReleaseDate, 
              Albums.AlbumName, 
              Genres.Genre, 
              Artists.ArtistName,
              Artists.ActiveFrom
      FROM Albums 
      INNER JOIN
              Artists ON 
              Albums.ArtistId = Artists.ArtistId 
              INNER JOIN
                  Genres ON 
                  Albums.GenreId = Genres.GenreId
      WHERE   (Albums.ReleaseDate > DATEADD(year, - 20, GETDATE()));
    2. ビューのクエリ

      これで、ビューをクエリすると、20年分のアルバムが返されます。アーティストがアクティブだった日付も表示されます。


    1. 単一のexecSQLクエリで指定できるSQL変数の制限は何ですか

    2. SQLServerテーブル列の文字列を置き換える方法

    3. OracleでJDBCバッチ挿入から生成されたキーを取得するにはどうすればよいですか?

    4. PostgreSQL10でのICUサポートとのより堅牢な照合