暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL_视图

lin在路上 2020-08-12
295

1 视图

1.1 常见应用场景

  • 重用SQL语句,特别是针对复杂的SQL操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节

  • 保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限

  • 更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据

1.2 视图的规则和限制

  • 视图名称必须唯一,视图数目没有限制

  • 创建视图必须具有足够的访问权限。构建视图的查询语句中涉及的所有表都必须拥有访问权限

  • 视图可以嵌套,即可以利用从其他视图中检索数据的查询来构建一个视图

  • 视图可以使用ORDER BY,但会被覆盖。ORDER BY可以用在视图中,但如果从该视图检索数据SELECT中也含有ORDER BY,那么该视图中的ORDER BY将被覆盖

  • 视图不能索引,也不能有关联的触发器或默认值

  • 视图可以和表一起使用。比如,编写一条联结表和视图的SELECT语句

  • 部署使用视图(特别是量大)的时候需要进行测试,每次使用视图都必须处理检索,如果使用复杂视图(包含多个联结和过滤)、嵌套视图时,性能下降将十分明显。

2 视图的使用

2.1 创建视图

 CREATE VIEW productcustomers AS SELECT
 cust_name,
 cust_contact,
 prod_id
 FROM
 customer,
 `order`,
 order_item
 WHERE
 customer.cust_id = `order`.cust_id
 AND order_item.order_num = `order`.order_num
 #创建视图productcustomers,它联结三个表以便返回已订购了任意产品的所有客户的列表
 #SELECT * FROM productcustomers将列出订购了任意产品的客户
 #生成视图的SELECT语句支持字段格式化、过滤、新增字段(比如计算字段)等语法
 #针对视图的查询跟针对表的查询一样

2.2 查看视图

 SHOW CREATE VIEW productcustomers
 #查看创建视图的语句

2.3 删除视图

 DROP VIEW productcustomers
 #删除视图

2.4 更新视图

 CREATE OR REPLACE VIEW productcustomers AS SELECT
 cust_name,
 cust_contact,
 prod_id
 FROM
 customer,
 `order`,
 order_item
 WHERE
 customer.cust_id = `order`.cust_id
 AND order_item.order_num = `order`.order_num
 #更新视图,可以先DROP再CREATE。也可以使用CREATE OR REPLACE,若视图不存在则新建,若视图存在则更新

2.5 更新数据

针对视图执行INSERT、UPDATE和DELETE,将直接更新其基表。但是如果视图定义中包含如下操作,将不允许进行更新、插入、删除操作

  • 分组(使用GROUP BY和HAVING)

  • 联结

  • 子查询

  • 聚集函数

  • DISTINCT

  • 导出(计算)列


文章转载自lin在路上,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论