【初入DW之SQL复杂一点的查询1(视图与子查询)】


前言

有关视图、子查询、各种各样的函数、谓词以及CSAE表达式的学习记录如下。


一、视图

“视图不是表,视图是虚表,视图依赖于表。”
表中保存的是实际数据,视图中保存的是SELECT语句。

1.视图的作用

那既然已经有数据表了,为什么还需要视图呢?主要有以下几点原因:

通过定义视图可以将频繁使用的SELECT语句保存以提高效率。
通过定义视图可以使用户看到的数据更加清晰。
通过定义视图可以不对外公开数据表全部字段,增强数据的保密性。
通过定义视图可以降低数据的冗余。

2、创建视图

基本语法(只能用于创建不存在的视图,删除视图可以使用DROP语句,语法为DROP VIEW viewname,想要覆盖或更新视图,必须先删除它,然后再重新创建):

CREATE VIEW <视图名称>(<列名1>,<列名2>,...) AS <SELECT语句>

SELECT 语句中列的排列顺序和视图中列的排列顺序相同, SELECT 语句中的第 1 列就是视图中的第 1 列, SELECT 语句中的第 2 列就是视图中的第 2 列,以此类推。而且视图的列名是在视图名称之后的列表中定义的。 需要注意的是视图名在数据库中需要是唯一的,不能与其他视图和表重名。

视图不仅可以基于真是表,我们也可以在视图的基础上继续创建视图。
在这里插入图片描述
虽然在视图上继续创建视图的语法并没有错误,但是我们还是要尽量避免这种操作。这是因为对多数DBMS(数据库管理系统)来说,多重视图会降低SQL的性能。

注意事项:
1.与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名字)
2. 对于可以创建的视图数目没有限制。
3. 创建视图,必须具有足够的访问权限。这些权限通常由数据库管理人员授予。
4. 视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造视图。所允许的嵌套层数在不同的 DBMS 中有所不同(嵌套视图可能会严重降低查询的性能,因此在产品环境中使用之前,应该对其进行全面测试)
5. 许多 DBMS 禁止在视图查询中使用 ORDER BY 子句。
6. 有些 DBMS 要求对返回的所有列进行命名,如果列是计算字段,则需要使用别名。
…(在创建视图前,有必要花点时间了解必须遵守的规定)

基于单表的视图:
表product:在这里插入图片描述

我们在product表创建一个视图,如下:

CREATE VIEW productsum (product_type, cnt_product)
AS
SELECT product_type, COUNT(*)
  FROM product
 GROUP BY product_type ;

运行结果:
在这里插入图片描述
基于多表创建视图
表shopproduct:
在这里插入图片描述

CREATE 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值