MySQL使用状況ビュー

ビューは仮想テーブルであり、データを含むテーブルとは異なります。ビューは、SQLクエリの後で結果グラフのみをカプセル化します

まず、ビューの作成

  1. CREATE VIEWステートメントを使用してビューを作成する
  2. SHOW CREATE VIEW viewnameを使用して、ビューを作成したステートメントを表示します。
  3. DROP VIEW viewnameを使用してビューを削除します
  4. ビューを更新するには、まずDROPしてからCREATEを使用します。CREATE OR REPLACE VIEW viewnameを直接使用することもできます。更新するビューが存在しない場合、2番目の更新ステートメントはビューを作成し、存在する場合は元のビューを置き換えます。

 

次に、ビューを使用します

1.ビューを使用して複雑な接続をカプセル化する

CREATE VIEW productcustomer AS 
SELECT cust_name,cust_contact,prod_id
FROM customers,orders,orderitems
WHERE customers.cust_id=orders.cust_id AND orderitems.order_num = orders.order_num

このステートメントは、productcustomerというビューを作成します。このビューは3つのテーブルを結合し、アイテムを注文した顧客のリストを返します。

以下は、ビューを直接使用して、TNT2を注文した顧客を取得できます。このビューにより、複雑なSQLステートメントの使用が大幅に簡略化されることがわかります。このビューを使用すると、基本的なSQLを一度に作成して再利用できます

SELECT * FROM productcustomer WHERE prod_id = 'TNT2'

 

2.ビューを使用して、取得したデータを再フォーマットします

ビューのもう1つの一般的な用途は、取得したデータを再フォーマットすることです。次のSELECTはベンダー名と場所を返します

SELECT CONCAT(vend_name,'(',RTRIM(vend_country),')') AS vend_title
FROM vendors
ORDER BY vend_name

このフォーマットを頻繁に使用する場合は、この目的でビューを作成して、毎回使用できます。

CREATE VIEW vendorlocation AS
SELECT CONCAT(vend_name,'(',RTRIM(vend_country),')') AS vend_title
FROM vendors
ORDER BY vend_name

 

今後使用する必要があるたびに、ビューをクエリするだけで済みます

SELECT * FROM vendorlocation

 

3.ビューを使用して不要なデータをフィルタリングする

メールアドレスのない顧客をフィルタリングするビューを定義して、メーリングリストにメールを送信するときに、メールアドレスのないユーザーを除外できるようにします

CREATE VIEW customeremaillist AS
SELECT * FROM customers 
WHERE cust_email IS NOT NULL

 

4.ビューと計算フィールドを使用する

各アイテムの合計価格を取得して計算するビューorderitemstotalを作成します。

CREATE VIEW orderitemstotal AS
SELECT 
order_num,
prod_id,
quantity,
item_price,
quantity * item_price AS total_price
FROM orderitems

以下では、注文20005の詳細を取得できます。

SELECT * FROM orderitemstotal
WHERE order_num = 20005

 

3番目に、ビューを更新します

一般ビューの目的は、更新ではなく、取得を単純化することです。

ただし、ビューも更新可能であり、INSERT \ UPDATEおよびDELETEを使用できます。ビューを更新すると、そのベーステーブルが更新されます。

次の操作がビュー定義にある場合、ビューを更新できません

  • グループ化
  • 接続
  • サブクエリ
  • そして
  • 集計関数
  • 明確な
  • 列をエクスポート
公開された156元の記事 ウォン称賛34 ビュー15万+

おすすめ

転載: blog.csdn.net/bbj12345678/article/details/105592762