本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql;
一、视图是什么
视图是一个虚拟的表,不同于直接操作数据表,视图是依据SELECT语句来创建的,所以操作视图时会根据创建视图的SELECT语句生成一张虚拟表,然后在这张虚拟表上做SQL操
二、视图存在的原因
- 通过定义视图可以将频繁使用的SELECT语句保存以提高效率。
- 通过定义视图可以使用户看到的数据更加清晰。
- 通过定义视图可以不对外公开数据表全部字段,增强数据的保密性。
- 通过定义视图可以降低数据的冗余。
三、创建视图
创建视图的语法:CREATE VIEW <视图名称>(<列名1>,<列名2>,...) AS <SELECT语句>
注意:视图名在数据库中需要是唯一的,不能与其他视图和表重名。
注意:在一般的DBMS中定义视图时不能使用ORDER BY语句,例如
CREATE VIEW productsum (product_type, cnt_product)
AS
SELECT product_type, COUNT(*)
FROM product
GROUP BY product_type
ORDER BY product_type;
四、修改视图结构
修改视图结构的语法:ALTER VIEW <视图名> AS <SELECT语句>
注意:视图名在数据库中需要是唯一的,不能与其他视图和表重名。
五、更新视图及删除
对于一个视图来说,如果包含以下结构的任意一种都是不可以被更新的:
- 聚合函数 SUM()、MIN()、MAX()、COUNT() 等。
- DISTINCT 关键字。
- GROUP BY 子句。
- HAVING 子句。
- UNION 或 UNION ALL 运算符。
- FROM 子句中包含多个表。
注意:视图是一个虚拟表,所以对视图的操作就是对底层基础表的操作,所以在修改时只有满足底层基本表的定义才能成功修改。
删除视图的语法:DROP VIEW <视图名1> [ , <视图名2> …]
注意:需要有相应的权限才能成功删除。
六、函数的分类
- 算术函数 (用来进行数值计算的函数)
- 字符串函数 (用来进行字符串操作的函数)
- 日期函数 (用来进行日期操作的函数)
- 转换函数 (用来转换数据类型和值的函数)
- 聚合函数 (用来进行数据聚合的函数)
七、谓语
谓词就是返回值为真值的函数
- LIKE
- BETWEEN
- IS NULL、IS NOT NULL
- IN
- EXISTS
八、CASE 表达式
CASE 表达式是函数的一种。
CASE 表达式是在区分情况时使用的,这种情况的区分在编程中通常称为(条件)分支。CASE表达式的语法分为简单CASE表达式和搜索CASE表达式两种。
搜索CASE表达式语法:CASE WHEN <求值表达式>
THEN <表达式>
WHEN <求值表达式>
THEN <表达式>
WHEN <求值表达式>
THEN <表达式>
. . .
ELSE <表达式>
END