ホームページ >データベース >mysql チュートリアル >MySQLビューの役割を詳しく解説(2) ~データのフィルタリング、フィールドの計算、ビューの更新~

MySQLビューの役割を詳しく解説(2) ~データのフィルタリング、フィールドの計算、ビューの更新~

巴扎黑
巴扎黑オリジナル
2017-05-17 16:40:123244ブラウズ

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

ビューは、通常の WHERE 句を適用するのにも役立ちます。たとえば、電子メール アドレスのない顧客をフィルターする customeremaillist ビューを定義できます。この目的のために、次のステートメントを使用できます:

入力:

create view customeremaillist as select cust_id,cust_name,cust_email from customers where cust_email is not null;

分析: 明らかに、メーリング リストに電子メールを送信するときは、電子メール アドレスを持たないユーザーを除外する必要があります。ここの WHERE 句は、cust_email 列に NULL 値を含む行をフィルタリングして、それらの行が取得されないようにします。

これで、ビュー customeremaillist を他のテーブルと同様に使用できるようになりました。

入力:

select * fromcustomeremaillist;

出力:

MySQLビューの役割を詳しく解説(2) ~データのフィルタリング、フィールドの計算、ビューの更新~

WHERE 句と WHERE 句 ビューからデータを取得するときに WHERE 句が使用される場合、2 つの句セット (1 つはビュー内にあり、もう 1 つは ) が渡されます。ビューに自動的に結合されます。

計算フィールドでのビューの使用

ビューは、計算フィールドの使用を簡素化するのに特に役立ちます。以下は第 10 章で紹介された SELECT ステートメントです。特定の順序でアイテムを取得し、各アイテムの合計価格を計算します:

入力:

select prod_id,quantity,item_price,quantity*item_price as expanded_price from orderitems where order_num = 20005;

出力:

MySQLビューの役割を詳しく解説(2) ~データのフィルタリング、フィールドの計算、ビューの更新~

ビューに変換するには、次の手順を実行します:

入力:

create view orderitemsexpanded as select prod_id,quantity,item_price,quantity*item_price as expanded_price from orderitems;

Toオーダー 20005 の詳細 (上記の出力) を取得するには、次のように進めます:

入力:

select * from orderitemsexpanded where order_num = 20005;

出力:

MySQLビューの役割を詳しく解説(2) ~データのフィルタリング、フィールドの計算、ビューの更新~

ご覧のとおり、ビューは非常に簡単に作成でき、使いやすいです。ビューを正しく使用すると、複雑なデータ処理を大幅に簡素化できます。


ビューの更新

これまでのビューはすべて SELECT ステートメントで使用されています。ただし、ビューのデータは更新できますか?答えは状況によって異なります。

通常、ビューは更新可能です (つまり、ビューに対して INSERT 、 UPDATE 、および DELETE を使用できます)。ビューを更新すると、そのベース テーブルが更新されます (ビュー自体にはデータがないことを思い出してください)。ビューに行を追加または削除すると、実際にはそのベーステーブルに行が追加または削除されます。

ただし、すべてのビューが更新できるわけではありません。基本的に、MySQL が更新されるベース データを正しく判断できない場合、更新 (挿入と削除を含む) は許可されないと言えます。これは、実際には、ビュー定義に次の操作がある場合、ビューを更新できないことを意味します:

2. 結合 (GROUP BY および HAVING を使用); 3. サブクエリ。そして;

5. 集計関数 (Min()、Count()、Sum() など);

6.DISTINCT;

言い換えれば、この章の例の多くのビューは更新可能ではありません。これは重大な制限のように聞こえるかもしれませんが、ビューは主にデータの取得に使用されるため、そうではありません。

考えられる変更点 上記の制限事項は、MySQL 5 の時点で正しいものです。ただし、MySQL の将来のバージョンでは、いくつかの制限が解除される可能性があります。

取得にはビューを使用する 一般に、ビューは更新 (INSERT、UPDATE、DELETE) ではなく取得 (SELECT ステートメント) に使用する必要があります。

概要:

View は仮想テーブルです。これらにはデータではなく、必要に応じてデータを取得するためのクエリが含まれています。ビューは、データ処理を簡素化し、基になるデータを再フォーマットまたは保護するために使用できる MySQL SELECT ステートメントの階層的なカプセル化を提供します。

以上がMySQLビューの役割を詳しく解説(2) ~データのフィルタリング、フィールドの計算、ビューの更新~の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。