ホームページ >データベース >mysql チュートリアル >SQLビューの詳細
ビュー
ビューは仮想テーブルです。含まれるデータ テーブルとは異なり、ビューにはクエリで使用されるときに動的に取得されるデータのみが含まれます。ビューとしては、列やデータは含まれず、クエリのみが含まれます。
ビューを使用する理由?
1: SQL ステートメントを再利用します。
2: 複雑な SQL 操作を簡素化します。クエリを作成した後は、その基礎となるクエリの詳細を知らなくても、そのクエリを簡単に再利用できます。
3: テーブル全体ではなく、テーブルの一部を使用します。
4: データを保護します。ユーザーには、テーブル全体ではなく、テーブルの特定の部分へのアクセスを許可できます。
5: データ形式と表現を変更します。ビューは、基になるテーブルとは異なる形式で表現されたデータを返すことがあります。
ビューを作成した後は、基本的にテーブルと同じように使用できます。ビューに対して SELECT 操作を実行したり、データをフィルタリングおよび並べ替えたり、ビューを他のビューやテーブルに結合したりできます。
ビューは、別の場所に保存されているデータを表示するための単なる設定であることを理解しておくことが重要です。ビュー自体にはデータが含まれていないため、返されるデータは他のテーブルから取得されます。これらのテーブルのデータを追加および変更すると、ビューは変更されたデータを返します。
ビューの作成と使用に関する最も一般的なルールと制限のいくつか
(1) テーブルと同様、ビューには一意の名前を付ける必要があります
(2) 作成できるビューの数に制限はありません
(3) ) ビューを作成するには、十分なアクセス権が必要です。これらの権限は通常、データベース管理者によって付与されます。
(4) ビューはネストできます。つまり、他のビューからデータを取得するクエリを使用してビューを構築できます。
(5) 多くの DBMS は、ビュー クエリでの ORDER BY 句の使用を禁止しています。
(6) 一部の DBMS では、返されるすべての列に名前を付ける必要があります。列が計算フィールドの場合は、エイリアスを使用する必要があります。
(7) ビューにはインデックスを付けることができず、トリガーやデフォルト値を関連付けることもできません。
(8) 一部の DBMS はビューを読み取り専用クエリとして使用します。つまり、ビューからデータを取得できますが、基になるテーブルにデータを書き込むことはできません。
(9) 一部の DBMS では、行がビューに属さなくなるような挿入や更新を許可しないビューの作成を許可しています。
ビューの作成
ビューは、CREATE VIEW ステートメントを使用して作成されます。
ビューを削除するには DROP ステートメントを使用します。構文は次のとおりです: DROP VIEW viewname;
ビューを使用して複雑な接続を簡素化します
CREATE VIEW ProductCustomers ASSELECT cust_name,cust_contact,prod_idFROM Customers,Orders, OrderItemsWHERE Customers.cust_id = Order.cust_id AND OrderItems.order_num = Order.order_num;
このステートメントは ProductCustomers という名前のビューを作成し、3 つのテーブルを結合して順序付けされた A リストを返しますあらゆる製品のすべての顧客の。
製品 RGAN01 を注文した顧客を取得します
SELECT cust_name,cust_contactFROM ProductCustomersWHERE prod_id = 'RGAN01';
用视图重新格式化检索出的数据
创建格式化视图
CREATE VIEW VendorsLocations ASSELECT RTRM(vend_name) || ' ( ' || RTRIM(vend_country) || ' ) ' AS vend_titleFROM Vendors;
用试图过滤不想要的数据
定义CustomerEMailList 视图,过滤没有电子邮件地址的客户。
CREATE VIEW CustomerEMailList ASSELECT cust_id, cust_name, cust_emailFROM CustomersWHERE cust_email IS NOT NULL;
使用视图与计算字段
检索某个特定订单中的物品,计算每种物品的总价格
CREATE VIEW OrderItemExpanded ASSELECT order_num, prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM OrderItems;
根据视图检索订单20008的详细内容
SELECT *FROM OrderItemsExpandedWHERE order_num = 20008;
以上就是SQL视图 详细介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!