1. ホーム
  2. データベース

ビューの作成 SQL: SQL Server でのビューの作成

2022-02-24 17:42:31

紹介 ( 紹介文 )

今回は、SQL文のCREATE VIEWを使って、ビューを作成する方法について見ていきます。これは、シリーズの最初の記事です。 もしあなたが初心者で、ビューが何であるかさえ知らないのであれば、心配しないでください。まずは定義から始めて、構文、例、使用例などの基本的なことを説明します。

今回は、SQL文のCREATE VIEWを使って、ビューを作成する方法を学びます。この記事はこのシリーズの最初の記事で、T-SQLでビューを作成、変更、使用するためのプログラム的なアプローチとなります。もしあなたが初心者で、ビューが何であるかさえ知らないとしても、心配しないでください。まずは定義から始めて、構文、例、使用例などの基本的な事柄に進んでいきます。

ビューとは、簡単に言えば仮想のテーブルです。SQL Server上に保存されたクエリで、ユーザーが使用すると、テーブルのように見えますが、テーブルではありません。ビューであり、テーブルの定義や構造を持ちません。その定義と構造は、単に、ボンネットの下で、多くのテーブルまたはテーブルの一部にアクセスすることができるクエリである。

ビューは仮想のテーブルに過ぎません。SQL Server 上にのみ保存され、ユーザーが使用する際にはテーブルのように見え、動作するクエリーと考えることができますが、そうではありません。それは、テーブルの定義や構造を持たないビューなのです。その定義と構造は、バックグラウンドで多くのテーブルやテーブルの一部にアクセスできるクエリに過ぎません。

ビューは、いくつかの理由で使用することができます。主な理由としては、以下のようなものがあります。

ビューは、いくつかの理由で使用することができます。主な理由は以下の通りです。

  • 使用する個人に対してデータベース構造を簡素化するため

    データベースの構造を簡素化し、利用者に分かりやすくする。
  • DBAのセキュリティ・メカニズムとして、基礎となる基本テーブルへの直接アクセスの許可を与えることなく、ユーザーにデータへのアクセスを許可する。

    DBAが、基本テーブルへの直接アクセスを許可することなく、ユーザーにデータへのアクセスを許可するためのセキュリティ機構として。
  • 当社のデータベースを使用しているアプリケーションに後方互換性を提供するため

    当社データベースを使用しているアプリケーションに後方互換性を提供するため

しかし、これらの理由はビューを設計するためのテーマであり、このシリーズでは触れません。この記事では、CREATE VIEW SQL構文を通して、ビューとは何か、そして、ビューで何ができるかを見ていきたいと思います。

とはいえ、これらの理由はビューの設計の対象であり、本連載では触れません。今回は、CREATE VIEW SQL構文を取り上げ、ビューがどのようなものか、そして、ビューで何ができるかを見ていきます。

構文 ( 構文 )

CREATE OR ALTER VIEW schema_name.view_name
WITH <view_attribute>
AS select_statement   
[WITH CHECK OPTION]


私たちは、構文がいかに複雑になるかを知っていますが、ビューの場合はそうではありません。ビューは、CREATE VIEW と言って、名前とビュー属性を指定することで作成することができます。

私たちは皆、構文がいかに複雑になるかを知っていますが、ビューの場合はそうではありません。ビューを作成するには、CREATE VIEW と言い、その後にビューの属性を持つ名前を指定します。

  • エンクリプション - この属性を使用すると、SQL Server レプリケーションの一部としてビューが公開されなくなります。 暗号化 -この属性を使用すると、SQL Server レプリケーションの一部としてビューが公開されません。
  • スキーマバインディング - ビューを基礎となるテーブルのスキーマにバインドします。これは、別の記事で、ビューのインデックスを作成するときに使用します。 スキーマバインディング -ビューを基礎となるテーブルのスキーマにバインドします。これは、ビューのインデックスを作成するときに別の記事で使用します。
  • VIEW_METADATA - SQL Server が DB-Library、ODBC、および OLE DB API にビューに関するメタデータ情報を返すようにします。 VIEW_METADATA -ビューに関するメタデータ情報を SQL Server から DB-Library、ODBC、および OLE DB API に返すようにします。

ASの後に、クエリを定義する実際のSELECT文が入ります。これは通常、ビューとその結果を作成するDML文と呼ばれるクエリの大部分を構成しています。

ASの後、クエリを定義する実際のSELECT文に進みます。これは通常、クエリの大部分(つまり、ビューとその結果を作成するためのDML文)です。

WITH CHECK OPTIONは、ビューを通してデータを挿入するときに非常に便利です。ビューを通して行が変更されるとき、このオプションは挿入されるデータを制御します。 ビューを通して行が変更されるとき、このオプションはビューの定義でWHERE句の後に続くテーブルに挿入されるデータを制御します。

WITH CHECK OPTIONは、ビューを通してデータを挿入するときに便利です。ビューを通して行を変更するとき、このオプションはビューの定義でWHERE句に続くテーブルに挿入されるデータを制御することができます。これについては、次回の記事で詳しく説明します。

CREATE VIEW SQLステートメント ( CREATE VIEW SQLステートメント )

では、さっそく起動してみましょう。 SQL Server Management Studio CREATE VIEW SQLステートメントを使用する前に、次のことを確認してください。 新しいデータベースを作成する から オブジェクトエクスプローラ という SQLShackDB を作成し、以下のスクリプトを実行して、その中にいくつかのテーブルを作成します。

では、さっそく SQL Server マネージメントスタジオ を作成し、ビューの操作を開始します。CREATE VIEW SQL文を使用する前に、まずは オブジェクトエクスプローラ という名前のビューを作成します。 SQLShackDB という新しいデータベースで のスクリプトを実行して、その中にいくつかのテーブルを作成します。

CREATE TABLE Employees
(EmployeeID INT NOT NULL, 
 FirstName NVARCHAR(50) NOT NULL, 
 MiddleName NVARCHAR(50) NULL, 
 LastName NVARCHAR(75) NOT NULL, 
 Title NVARCHAR(100) NULL, 
 HireDate DATETIME NOT NULL, 
 VacationHours SMALLINT NOT NULL, 
 Salary DECIMAL(19, 4) NOT NULL
);
GO
CREATE TABLE Products
(ProductID INT NOT NULL, 
 Name NVARCHAR(255) NOT NULL, 
 Price DECIMAL(19, 4) NOT NULL
);
GO
CREATE TABLE Sales
(SalesID UNIQUEIDENTIFIER NOT NULL, 
 ProductID INT NOT NULL, 
 EmployeeID INT NOT NULL, 
 Quantity SMALLINT NOT NULL, 
 SaleDate DATETIME NOT NULL
);
GO


<イグ

さて、テーブルを含むサンプル・データベースができたので、次のようなビューを作成します。 vEmployeesWithSales を、以下のスクリプトを例として使用します。

テーブルを含むサンプル・データベースができたので、以下のスクリプトを例にして、新しいデータベース vEmployeesWithSales を、次のようなビューで表示します。

USE SQLShackDB;
GO
CREATE VIEW vEmployeesWithSales
AS
     SELECT DISTINCT 
            Employees.*
     FROM Employees
          JOIN Sales ON Employees.EmployeeID = Sales.EmployeeID;
GO


これは、売上がある従業員のリストを返す、シンプルなSELECT文のビューです。実のところ、ビューを作成する前に、CREATE VIEW SQL文のSELECT部分だけを実行して、常にクエリをテストすることができます。 最初に適切なデータベースに接続されていることを確認してから、コードのSELECT部分をマークして、ヒットしてください。 実行する :

これは、売上レコードを持つ従業員のリストを返す、シンプルなSELECT文のビューです。実際、CREATE VIEW SQL文のSELECT部分のみを実行することにより、ビューを作成する前に、常にクエリが何かを返すかどうかをテストすることができます。まず、適切なデータベースに接続することを確認し、コードのSELECT部分をマークして 実行する :

このクエリは結果を返しませんが、返されたカラムのリストを見ることができます。次にできることは、テーブルにデータを挿入することです。これを行うには、次のスクリプトを使用します。

実際には新しいテーブルにデータがないため、このクエリは結果を返しませんが、返されたカラムのリストを見ることができます。次にできることは、テーブルにデータを挿入することです。これを行うには、次のスクリプトを使用します。


USE SQLShackDB;
GO
    
INSERT INTO Employees SELECT 1, 'Ken', NULL, 'Sánchez', 'Sales Representative', '1/1/2016', 2080, 45000;
INSERT INTO Employees SELECT 2, 'Janice', NULL, 'Galvin', 'Sales Representative', '12/11/2016', 2080, 45000;
    
INSERT INTO Products SELECT 1, 'Long-Sleeve Logo Jersey, S', 12.99;
INSERT INTO Products SELECT 2, 'Long-Sleeve Logo Jersey, M', 14.99;
INSERT INTO Products SELECT 3, 'Long-Sleeve Logo Jersey, L', 16.99;
INSERT INTO Products SELECT 4, 'Long-Sleeve Logo Jersey, XL', 18.99;
    
INSERT INTO Sales SELECT NEWID(), 1, 1, 4, '04/15/2016';
INSERT INTO Sales SELECT NEWID(), 2, 1, 1, '02/01/2016';
INSERT INTO Sales SELECT NEWID(), 3, 1, 2, '03/12/2016';
INSERT INTO Sales SELECT NEWID(), 2, 2, 2, '03/18/2016';
INSERT INTO Sales SELECT NEWID(), 3, 2, 1, '04/16/2016';
INSERT INTO Sales SELECT NEWID(), 4, 2, 2, '04/23/2016';

念のため、CREATE VIEW SQL文のSELECT部分を再実行すると、以下のように返されます。

念のため、CREATE VIEW SQL文のSELECT部分を再実行すると、以下のような結果が得られるはずです。

を使用していることに注意してください。 DISTINCT をSELECTで指定することで、2人の社員が複数のレコードを持っているため、重複したレコードが検索されないようにするためです。

なお、2人の社員が複数のレコードを持っているので DISTINCT とSELECTを併用することで、重複したレコードを取得しないようにします。

ビューに戻り、それがデータベース上でどのように見えるかを見てみましょう。もし オブジェクトエクスプローラ を展開し ビュー フォルダを開くと、カラムを持つテーブルのようなビューが見つかるでしょう。

ビューに戻り、データベース上でどのように見えるかを見てみましょう。もし オブジェクトエクスプローラ の下にあるデモ用データベースを展開します。 表示" フォルダに格納すると、ビューはテーブルとまったく同じように見えることがわかります。

これらはすべて、このビューが返すカラムです。このビューをテーブルとして扱うとどうなるか見てみましょう。SELECT文を書きますが、select everything from と言ってからテーブルの名前を書くのではなく、単に from a view と言います。

これらは、このビューから返されるすべてのカラムです。このビューをテーブルとして扱うとどうなるか見てみましょう。select everything from とテーブル名を指定する SELECT ステートメントを書く代わりに、単に from a view と言ってみましょう。

SELECT * FROM vEmployeesWithSales


<イグ

上の図からわかるように、実際のテーブルを使ってデータを問い合わせたときと全く同じ結果になります。

上の図からわかるように、実際のテーブルを使用してデータを照会した場合と全く同じ結果になります。

SQL Server の他のオブジェクトと同様に、ビューにもプロパティがあります。その中で オブジェクトエクスプローラ を選択し、プロパティを表示させたいビューを右クリックし プロパティ :

SQL Server の他のオブジェクトと同様に、ビューにもプロパティがあります。その中で オブジェクトエクスプローラ プロパティを表示したいビューを右クリックし、" を選択します。 プロパティ" :

ここで、ビューが作成された実際のオプションを見ることで、そのデータが実際のテーブルからどのように派生しているかを理解できることに注目してください。

ここで、ビューのデータが実際のテーブルからどのように派生しているかを理解するために、ビューが作成された実際のオプションを見ることができることに注意してください。

  • ANSI NULL - オブジェクトがANSI NULLsオプションで作成されたかどうかを示します。 ANSI NULL -オブジェクトがANSI NULLsオプションで作成されたかどうかを示します。
  • 暗号化 - ビューが暗号化されているかどうかを指定します 暗号化 -ビューが暗号化されているかどうかを指定します
  • 引用された識別子 - オブジェクトが quoted identifier オプションで作成された場合に表示されます。 引用された識別子 -オブジェクトが quoted identifier オプションで作成されたかどうか表示します。
  • スキーマバインド - ビューがスキーマバインドされているかどうかを指定します。 スキーマバインド -ビューがスキーマバインドされているかどうかを指定します。

結論 ( 結論 )

この記事では、CREATE VIEW SQL文の構文に慣れ、基本的なビューを作成することだけを目標としました。アグリゲートを含むビューの作成など、もう少し複雑な内容については、次回の記事で取り上げる予定です。言語)を使って、もう少し高度なSELECTクエリを書いてみましょう。

この記事では、CREATE VIEW SQL文の構文に慣れ、基本的なビューを作成することだけを目標とします。次回の記事では、集約を伴うビューの作成など、より複雑なことに焦点を当てます。つまり、DLM言語(Data Manipulation Language)を使い、より高度なSELECTクエリを書いていきます。

CREATE VIEW SQLステートメントに関するこの記事があなたにとって有益であったならば、私はそれを読むことに感謝します。次回の記事もお楽しみに...

CREATE VIEW SQLステートメントに関するこの記事は、あなたにとって有益なものであったことを願っています。次回の記事もお楽しみに...

目次 ( 目次 )

<テーブル create view sql: SQL Serverでのビューの作成 create view sql: SQL Serverにおけるビューの変更 create view sql: SQL Serverでビューを使用してデータを挿入する create view sql: SQL Serverでインデックス付きビューを使用する <テーブル ビューの作成 SQL: SQL Server でのビューの作成 ビューのSQLを作成する。SQL Server におけるビューの変更 create view sql: SQL Serverでビューを使用してデータを挿入する ビューを作成します。SQL Server におけるインデックス付きビューの使用

Translated from : https://www.sqlshack.com/create-view-sql-creating-views-in-sql-server/