2012-04-07 12 views
0

私が最初にこのことをmysql(sakilaサンプルのmysql dbが持っている)と聞いたときの検索語はgoogle'dでしたが、検索結果は本当に助けになりませんでした。とにかく、まさにそれは何ですか?それを使用する利点と欠点とともにそれを説明するチュートリアルがありますか?mysqlデータベース内の「ビュー」テーブルとは何ですか?

+1

[http://en.wikipedia.org/wiki/View_(database)](http://en.wikipedia.org/wiki/View_(database)) – zerkms

答えて

3

ビューは、それがテーブルであるかのように他のクエリで使用できる名前付きストアドクエリです。

時々ビューはテーブル内の行のサブセットを提示する:

CREATE VIEW v1 AS 
    SELECT Column1, Column2, ..., ColumnN 
     FROM AnotherTable WHERE SomeColumn = 234; 

時々ビューはテーブル内の列のサブセットを提示する:

CREATE VIEW v2 AS 
    SELECT Column2, Column3, Column5, Column7 
     FROM AnotherTable; 

さらに複雑なクエリを結合などで使用することもできます。

CREATE VIEW OrderInfo AS 
    SELECT o.order_num, c.customer_num, c.customer_name, 
      o.order_date, o.invoice_num, i.product_code, p.product_name 
     FROM Orders  AS o 
     JOIN Customers AS c ON c.customer_num = o.customer_num 
     JOIN OrderItems AS i ON i.order_num = o.order_num 
     JOIN Products AS p ON p.product_code = i.product_code 

ユーザーは次のようなクエリを書くことができます。

SELECT * 
    FROM OrderInfo 
WHERE Order_Date BETWEEN DATE '2012-01-01' AND DATE '2012-01-31' 
    AND Product_Code LIKE "%23491%"; 

すべてのテーブルを一緒に結合する方法を知る必要はありません。

ビューを使用してデータへのアクセスを制御することもできます。ビュー定義者の権限によって、ユーザーは、それ以外の場合には禁止される表にアクセスできます。ビューを使用して、データベースのスキーマを変更した後に下位互換性を提供することもできます。新しいスキーマ内のテーブルの名前と定義を変更しますが、スキーマが変更されていないかのように、変更されていないプログラムでもデータベースを読み取ることができるようになります。

一部のビューは更新できます。他の人はできません。 DBMSに依存できないものとできないもの

+0

+1非常にいいサンプル –