ビューを使用して不要なデータをフィルタリングする
ビューは、通常の 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;
出力:
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;
出力:
ビューに変換するには、次の手順を実行します:
入力:
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;
出力:
ご覧のとおり、ビューは非常に簡単に作成でき、使いやすいです。ビューを正しく使用すると、複雑なデータ処理を大幅に簡素化できます。
ビューの更新
これまでのビューはすべて 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 サイトの他の関連記事を参照してください。