oracle查询

1



groud by





按照部门号,给查询出来的结果集进行排序

过滤分组后的数据,


过滤部门平均工资大于2000的工资总和



********相同的部门号deptno合并,只显示一个,然后空格一行,

*


多表查询

1.笛卡尔集


连接条件是去除表中多余的部分,


多表查询就是从这张笛卡尔集表中选择合适条件的结果。

连接条件至少有n-1个,n代表表的个数,


不等值连接


between and ....小值在前,大值在后。



上面查出来的结果没有考虑部门为空部门的情况,所以、、、

要用到右外链接。


这里当部门中的人数为空时就用(+)=

当取右边的表时,就在左边用(+)=

当取左边的表时,就在右边用(+)=


一个笛卡尔集,,,,,,没有where条件的语句。

只有一张表的情况下才不会产生笛卡尔集。





leve树的深度, 要查询他的话,就写上他,

prior表时层次,上一层,

start with 表示从树的那个节点开始, 根节点时,可以用mgr is null这种表时方式,也可以按正常的表时方式 ,







select后面


having后面


这里having 不能换成where,因为,后面有分组函数,avg(sal),

from后面


from后面的结果集被当成了一张表来处理。


使用子查询


使用多表查询

当涉及多表查询的时候,首先要想到,笛卡尔集,然后在想到,连接条件。连接条件至少n-1


完整的语句




rownum为伪列,是数据库自动加上去的,显示行号,上面讲到的lever也是伪列,

要显示伪列,在查询的过程中必须,显式地把它写出来,



默认的顺序,指对表没有排序时,得到的行号,

所以用下面的查询是查不到正确的结果的


要正确查询,必须要用到子查询


得到正确结果。


相关子查询


必须要定义 emp表的别名,avgsal 为子查询结果的别名








单行子查询,必须返回单个结果,不能是集合




deptno,部门号

emp员工表

dept部门表




用多表查询解决这个问题


and优先级比or高,要打括号



等同于




等同于






当mgr包含null空值时,这个where为假,

改正后


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 5.多表查询 多表查询 目的:从多张表获取数据 前提:进行连接的多张表中有共同的列 等连接 通过两个表具有相同意义...
    乔震阅读 5,174评论 0 0
  • 数据控制语言(DCL):系统权限授权、回收。Grant,revoke 数据定义语言(DDL):创建、删除、修改。C...
    石宏俐阅读 4,153评论 0 0
  • 幕课oracle学习笔记 --!!!scott用户 --一.分组查询 --1.常用的分组函数:AVG(平均数),S...
    xiaoxiao苏阅读 5,065评论 0 5
  • 查询是数据的一个重要操作。用户发送查询请求,经编译软件变异成二进制文件供服务器查询,后返回查询结果集给用户,查询会...
    产品小正阅读 5,278评论 0 2
  • 上周的某天晚上,堂妹突然发消息来说问我做生意不,然后发了一长串关于她口中的生意,大概意思就是让我去拉人办卡,拉10...
    淘米日记本阅读 3,916评论 3 1