MYSQL学习笔记(十八)使用视图

  1. 视图
    视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询
  2. 视图的应用
    (1)重用SQL语句。
    (2)简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道其基本查询细节。
    (3)使用表的一部分而不是整个表。
    (4)保护数据。可以授予用户访问表的特定部分的权限,而不是整个表的访问权限。
    (5)更改数据格式和表示。视图可返回与底层表的表示和格式不同的数
  3. 视图的规则和限制
    (1)与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字)。
    (2)对于可以创建的视图数目没有限制。
    (3)创建视图,必须具有足够的访问权限。这些权限通常由数据库管理人员授予。
    (4)视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图。
    (5)ORDER BY可以用在视图中,但如果从该视图检索数据SELECT中也含有ORDER BY, 那么该视图中的ORDER BY将被覆盖。
    (6)视图不能索引,也不能有关联的触发器或默认值。
    (7)视图可以和表一起使用。
  4. 利用视图简化复杂的联结
    CREATE VIEW ProductCustomers 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;
    创建一个名为ProdectCustomers的视图,它联结三个表
    此时若检索订购产品RGAN01顾客,可如下:
    SELECT cust_name, cust_contact
    FROM ProductCustomers
    WHERE prod_id = ‘RGAN01’;
  5. 用视图重新格式化检索出的数据
    若经常需要一种格式的结果,可创建一个视图,需要时使用
    CREATE VIEW VendorLocations AS
    SELECT RTRIM(vend_name) + ’ (’ + RTRIM(vend_country) + ‘)’
    AS vend_title
    FROM Vendors;
    使用如下:
    SELECT *
    FROM VendorLocations;
  6. 用视图过滤不想要的数据
    定义CustomerEMailList视图,过滤没有电子邮件地址的顾客
    CREATE VIEW CustomerEMailList AS
    SELECT cust_id, cust_name, cust_email
    FROM Customers
    WHERE cust_email IS NOT NULL;
    使用如下:
    SELECT *
    FROM CustomerEMailList;
  7. 使用视图与计算字段
    创建视图,检索某个订单中的物品,计算每种物品的总价格
    CREATE VIEW OrderItemsExpanded AS
    SELECT order_num,
    prod_id,
    quantity,
    item_price,
    quantity*item_price AS expanded_price
    FROM OrderItems;
    检索订单20008的详细内容,如下:
    SELECT *
    FROM OrderItemsExpanded
    WHERE order_num = 20008;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值