一、视图
1、视图不存放数据,存放的是SQL查询语句,便用视图时,会运行视图里的SQL查询语句创建出一张临时表。
2、视图的作用
- 对于经常使用的SQL语句保存成视图,这样可以重复使用,可以提高效率。
- 随着原表的变化,视图自动更新,保持最新的状态
- 视图不需要保存数据,可以节省存放的空间。
3、如何创建视图
create view 视图名称(<视图列名1>,<视图列名2>,.....)
as
<select查询语句>;
4、注意事项
- 避免在视图的基础上再创建视图
- 不能往视图里插入数据
二、子查询
一次性的视图,在select查询语句中嵌套了另一个select查询语句。
先运行子查询再运行外部的查询语句。
from(子查询)
![88787ddb6fd59f992642b6ddf7ea86b8.png](https://i-blog.csdnimg.cn/blog_migrate/d98dd96083773b133dc7a42c346e0aa8.png)
where...in(子查询)
![79572b6ea29bbcab7186ff759ecf953a.png](https://i-blog.csdnimg.cn/blog_migrate/5ad598fec278ce0004d8220fa2c8eef4.png)
where...any(子查询) where ...some(子查询)
![43b194da5ed30198eee1623bb7002a6c.png](https://i-blog.csdnimg.cn/blog_migrate/a7048b3e16040db572d8063d5db71291.png)
where...all(子查询)
![f2d74ec7ade13aee244b1dd1dfeecbc5.png](https://i-blog.csdnimg.cn/blog_migrate/f560915d2dd2627c752b124d1fa78cb0.png)
注意事项:
1、 a >3*all(b) a/3 >all(b) 这两种表达方式应采取第二种
2、select...from(子查询(子查询)) 避免使用多层嵌套
3、select...from...
子查询 as 子查询名称 as 不省略
三、标量子查询
在子查询上做出限制,只返回一行一列的查询结果,是一个单一的值。
![93b401a8a319c6d7a6b8ca5e1ab0bb75.png](https://i-blog.csdnimg.cn/blog_migrate/2abaf112d7525c88c2359490bdf45fb1.png)
四、关联子查询
关联子查询适应在每个组里进行比较,关联条件写在子查询中
例:查找出每个课程中大于对应课程平均成绩的学生
![77e175b9941375227022c57c1c3eed97.png](https://i-blog.csdnimg.cn/blog_migrate/31af06145e84de5ab313d1bc96973197.png)
关联条件 where s1.课程号 = s2.课程号
五、各种函数
1、汇总函数
- count() 求列的行数
- sum()求和
- avg()求平均值
- max()求最大值
- min()求最小值
2、算术函数
- round(数值,保留小数的位) 对数据进行四舍五入
- abs() 绝对值
- mod(被除数,除数)
3、字符串函数
- length() 求长度
- lower() 转换为小写
- upper() 转换为大写
- concat(字符串1,字符串2) 字符串拼接
- replace(字符串,被替换的字符串,用什么字符串替换) 字符串替换
- substring(字符串,截取的起始位置,截取长度) 字符串截取
4、日期函数
- current_date 当前时期
- current_time 当前时间
- current_timestamp 当前日期和时间
- year() 年份
- month() 月份
- day() 日期
- dayname() 日期对应星期几