数据库之高级查询

数据库之高级查询_第1张图片
数据库之高级查询_第2张图片
数据库之高级查询_第3张图片
数据库之高级查询_第4张图片
数据库之高级查询_第5张图片
数据库之高级查询_第6张图片
数据库之高级查询_第7张图片

注意:第一个包含空,第二句不包含空

数据库之高级查询_第8张图片

注意:第二句是错的,聚合函数不能出现在where中。

数据库之高级查询_第9张图片
数据库之高级查询_第10张图片
数据库之高级查询_第11张图片
数据库之高级查询_第12张图片
数据库之高级查询_第13张图片
数据库之高级查询_第14张图片

注意:相当于,按照分组属性,求出每个组的聚合函数值,所以肯定不能放单个属性有冲突

with rollup是最后一行的汇总效果

数据库之高级查询_第15张图片

注意:虽然之前说过的单个个体不能和分组函数和聚合函数一起用,但是这里引出新方法,把满足的一组的所有个题,通过函数全部体现出来,就不会冲突.

数据库之高级查询_第16张图片
数据库之高级查询_第17张图片

这样是会报错的,改变处理方法如下。

数据库之高级查询_第18张图片

HAVING子句:相当于先确定分组,然后再确定出每组应该满足的条件,符合的留下,不符合的剔除

数据库之高级查询_第19张图片

数据库之高级查询_第20张图片
数据库之高级查询_第21张图片

注意:此时select语句中只能放入一个正常的字段,因为后面有聚合函数,1代表用此字段分组

数据库之高级查询_第22张图片

优化:

数据库之高级查询_第23张图片
数据库之高级查询_第24张图片
数据库之高级查询_第25张图片
数据库之高级查询_第26张图片
数据库之高级查询_第27张图片
数据库之高级查询_第28张图片
数据库之高级查询_第29张图片

数据库之高级查询_第30张图片

总结:多个表之间的连接,三张表应该一个一个的加入,可以最后写SELECT,并且每次加入设置加入条件,因此这样写更清楚

SELECT e.empno,e.ename,d.dname,e.sal,e.job,s.grade
FROM t_emp e 
JOIN t_dept d ON e.deptno=d.deptno
JOIN t_salgrade s ON e.sal BETWEEN s.losal AND S.hisal;
数据库之高级查询_第31张图片
数据库之高级查询_第32张图片
数据库之高级查询_第33张图片
数据库之高级查询_第34张图片
数据库之高级查询_第35张图片
数据库之高级查询_第36张图片
数据库之高级查询_第37张图片
数据库之高级查询_第38张图片
数据库之高级查询_第39张图片
数据库之高级查询_第40张图片

把一个聚合函数的运算结果的表进行与其他表进行表连接。

数据库之高级查询_第41张图片
数据库之高级查询_第42张图片

注意:

LEFT JOIN :保留左表

RIGHT JOIN :保留右表

JOIN :丢失不满足连接的记录

数据库之高级查询_第43张图片
数据库之高级查询_第44张图片
数据库之高级查询_第45张图片
数据库之高级查询_第46张图片
数据库之高级查询_第47张图片
数据库之高级查询_第48张图片
数据库之高级查询_第49张图片
数据库之高级查询_第50张图片
数据库之高级查询_第51张图片
数据库之高级查询_第52张图片
数据库之高级查询_第53张图片
数据库之高级查询_第54张图片
数据库之高级查询_第55张图片
数据库之高级查询_第56张图片
数据库之高级查询_第57张图片

注意:any是只要有一条满足就行

数据库之高级查询_第58张图片
数据库之高级查询_第59张图片

你可能感兴趣的:(Database,principle,数据库)