复杂查询
2020年7月30日
20:48
复杂查询
-
- 视图
- 子查询
- 标量子查询
- 关联子查询
- 如何用sql解决业务问题
- 各种函数
![76064dae963d0a7cc7e3910cab17a312.png](https://img-blog.csdnimg.cn/img_convert/76064dae963d0a7cc7e3910cab17a312.png)
说明:子查询与视图可以达到相同的目的,可以根据使用频次来判断使用哪种;
-
- 视图
- 数据库的表中存放的是实际数据
视图中存放的是SQL语句
使用视图是,会运行视图里的sql查询语句,创建出一张临时表
-
- 如何创建视图:
Create view 视图名称(视图列名1,视图列名2……)
As
<select 查询语句>
备注:SQL查询中的列顺序与视图中的列顺序是一一对应的,列名称可以不一致,但是两个的对关系是一一对应的。
![09029e568a541e8ff78db160bc07412d.png](https://img-blog.csdnimg.cn/img_convert/09029e568a541e8ff78db160bc07412d.png)
-
- 使用视图注意事项
避免在视图的基础上再次创建视图
不能向视图中插入数据,否则会报错
操作步骤:新建查询的地方写视图——直接运行——右击视图——刷新即可
-
- 视图的作用:1. 需要频繁使用的sql语句可以保存为视图,提高效率;2. 会跟着原表数据的变化自动更新;3. 不需要保存数据,节省存储空间
- 子查询
- 一次性的视图,在sql查询字句中直接定义的sql查询语句。即在一个select查询语句中嵌套了另一个了select查询语句
- 如何使用:在from子句中使用视图名称代替表名称。
- SQL运行顺序:先运行子查询得到一个临时表,将第一个查询结果作为外部查询的一部分。
![7090423039ffd860618c05b0f42b1371.png](https://img-blog.csdnimg.cn/img_convert/7090423039ffd860618c05b0f42b1371.png)
-
- 如何使用子查询:...in/any/all(子查询)从而构建复杂查询条件
- in子查询
![c98fbe52281871b23033e27d01593530.png](https://img-blog.csdnimg.cn/img_convert/c98fbe52281871b23033e27d01593530.png)
-
- any(子查询)和some(子查询)一样的用法:一般需要与比较运算符一起使用
Select列名1
From 表名1
Where 列名1 >any(子查询)
-
- 子查询作用:偶尔使用,直接用没必要保存为视图
- 使用子查询的注意事项:
1. all得到的是数据是一个集合,所以不能直接运算;
2. 避免使用多层嵌套子查询,很难读、不好维护、性能差;
3. as 子查询名称不省略,方便大家看懂,养成良好的书写习惯