![20b42c9c036c1a928256438bb6da890d.png](https://i-blog.csdnimg.cn/blog_migrate/2d78416f722ad59e4b3f9d940d27770d.jpeg)
1. 视图
在数据库中有很多张表,表里存放的是实际数据,而视图中存放的是sql查询语句,当通过客户端连接数据库开始使用视图时,会运行视图里的sql查询语句创建出一张临时表。
视图不存放数据,存放的是sql查询语句。
创建视图:
create view 视图名称(<视图列名1>,<视图列名2>,…) as <select查询语句>;
![8191eeb3711607ae933b1b1211352e6a.png](https://i-blog.csdnimg.cn/blog_migrate/5c6e04a2796aaabd368dfa1720e0fc61.png)
![88814a004974a3eec59643e486b202eb.png](https://i-blog.csdnimg.cn/blog_migrate/3c4e8c2d079b7907fb7057427cb867a9.png)
在from子句中可以使用视图名称代替表名称:
![b17eae537d2f2ef02fa7e57d03e67434.png](https://i-blog.csdnimg.cn/blog_migrate/22a18029952fda1290ac8346db8a2825.png)
使用视图的好处:
①如果某些sql查询语句需要频繁使用,可以保存成视图,这样就不用每次都重新写一遍sql了,特别是当查询语句非常庞大的时候,使用视图可以帮助我们提高效率;
②视图中的数据随着原表的变化自动更新,可以保证数据的最新状态;
③视图不需要保存数据,可以节省存放数据设备的空间。
注意事项:
①避免在视图的基础上再创建视图,多重视图会降低sql的性能和效率;
②不能往视图中插入数据,不然会报错。
2.子查询
子查询实际上是一次性视图,在sql查询子句中,直接写定义视图的sql查询语句,在一个select语句中嵌套另一个select语句,可以把子查询看成是一个临时表,在sql语句运行结束后临时表就消失了。
sql运行顺序:先运行子查询,再运行外部查询语句。
in(子查询):
找出每门课程里成绩最低的学号:
![4e97e2318175e2c5ef50c4c27080cddc.png](https://i-blog.csdnimg.cn/blog_migrate/26f1790d9996ec4bb3104f3971bd865c.png)
any(子查询),all(子查询)必须与比较运算符一起使用
any(子查询)与some(子查询)相同
哪些学生的成绩比课程“0002”的全部成绩里的任意一个高:
![fd32e3748912fe6611df0d175055f3e9.png](https://i-blog.csdnimg.cn/blog_migrate/adcea27ce9b54690926281b13e605702.png)
哪些学生的成绩比课程“0002”的全部成绩里的都高:
![74fea7b8d075e1d3995816b1239b196f.png](https://i-blog.csdnimg.cn/blog_migrate/d086959ea7f76f56e1c2575d03a06540.png)
使用情况:偶尔使用某个查询,不用保存为视图直接使用子查询就可以了。
注意事项:
①子查询得到的不是一个数值,而是一个集合;
②避免使用多层嵌套子查询。
3.标量子查询
标量子查询在子查询做了一个特殊的限制,必须而且只能返回一行一列的查询结果,即返回的是一个单一的值,因此标量子查询返回值可以和比较运算符一起使用。
大于平均成绩学生的学号和成绩:
![8e3a91a7f6ee059fa392b7db88d40b4d.png](https://i-blog.csdnimg.cn/blog_migrate/7a1868d8029783698602a1488c1b2a82.png)
成绩小于等于60的为差生,成绩大于80的为优等生,成绩介入差生平均成绩和优等生平均成绩的有哪些:
![0781b91fc1e9e223a21a544fd8d20988.png](https://i-blog.csdnimg.cn/blog_migrate/279d0de97a9571dcb0112871bdf82ea2.png)
标量子查询是子查询的一种,它返回的只有单一的值,可以和比较运算符和in、all、any、between等一起使用,实现复杂的查询条件。
4.关联子查询
查找出每个课程中大于对应课程平均成绩的学生:
![339383fbedce0f2b42117acb166fbc5f.png](https://i-blog.csdnimg.cn/blog_migrate/e98ef0ee27a1f9afdba3138887cb8376.png)
使用情况:在每个组里进行比较(关联条件)
5.如何用SQL解决业务问题
![23f519edf08b957a4858e99df297d5ea.png](https://i-blog.csdnimg.cn/blog_migrate/4305b704b509009119b9990926c8078e.jpeg)
6.各种函数
函数可分为汇总函数、算术函数、字符串函数、日期函数等。
![7648367d18c3838e30e1d456c3a42b40.png](https://i-blog.csdnimg.cn/blog_migrate/b3e837a9105206f4db558e8d1548d637.jpeg)
![2f08db51657615ce2ac48575814fede8.png](https://i-blog.csdnimg.cn/blog_migrate/79e4669bc274bcb5b380b44ab614770c.png)
![35ea319538639d7011b78448f1704a96.png](https://i-blog.csdnimg.cn/blog_migrate/b144a1427fe906f0827e6e1b0062f24b.jpeg)
![1099a97dc128a7011ab84388992a2d88.png](https://i-blog.csdnimg.cn/blog_migrate/68f4871d81f2a661778c44d23c09574a.jpeg)
7.sql练习(sqlzoo)
![0fcb39b8e9e496deae4001589499277f.png](https://i-blog.csdnimg.cn/blog_migrate/cbb6f2d7946f7fe799bfbec16cd2502d.jpeg)
![be3fcb06dd94369647549d1477c45bdb.png](https://i-blog.csdnimg.cn/blog_migrate/0d3315ff11470acf243e17542818e11d.jpeg)
![2dcbd7c94d24be66dd9aeec9a3dc5ba0.png](https://i-blog.csdnimg.cn/blog_migrate/1634cfcccc193c3cf9f3fd2a4a4b00bd.jpeg)
![5c5140865d2f5c1387c50b1cf418b28a.png](https://i-blog.csdnimg.cn/blog_migrate/1ed560842f8c09656b7f3763bbbb9d92.jpeg)
![1483468f05a56d9b4ace6afb866e3fc4.png](https://i-blog.csdnimg.cn/blog_migrate/03bcbbf72283fa0857d558f79145871a.jpeg)
![715bd9215ceafd1d7486269e974e2245.png](https://i-blog.csdnimg.cn/blog_migrate/9c8d50fbee7b551c45b6aa3d4e353a35.jpeg)
![869875658bfe24496ed4db8ca3414a1d.png](https://i-blog.csdnimg.cn/blog_migrate/314b49b19e46520f7055cfcf5fab46aa.jpeg)
![60599c9e67101b94637716177866eada.png](https://i-blog.csdnimg.cn/blog_migrate/78e983d13bfed53190a3b6553dbe45ae.jpeg)
![3aab422d78fcf29ba7439e65b75ed85f.png](https://i-blog.csdnimg.cn/blog_migrate/83cdab37673294e944c228d81c860fe7.jpeg)
![f78b7703714d09a84554d91364b6a5f6.png](https://i-blog.csdnimg.cn/blog_migrate/dbc661ddca0fdd12b61503960e8c5ccc.jpeg)