数据库查询语言(2)DQL——零散知识

在上一个博文中,已经记录了一些基本的select查询相关函数,在本博文中竟会继续整理下一轮常见的函数。
(1)goup by 分组函数
group by功能就是在select查询中,为了进行统计(比如平均工资,每一个部门的人数等等)都需要进行分组统计,在分组过程中一定要切记,凡是在select查询中存在非聚合函数,在group by中一定要有,如果select没有非聚合字段,那么group by也可以有非聚合函数字段,如果group by中存在两个或者以上时,那就把这些作为一个整体进行分组,示例如下所示:

select job,count(*) from O_Myemp group by Job;

还有一种情况就是,假设我想寻找某一个部门的员工个数,那么我必然先进行分组,再筛选制定部门的员工,那么由于where只能用在查询条件判断语句中,根本不适合用在group by语句中,所以需要使用关键字having来进行分组之后进行筛选操作,主要示例如下所示:

select job,count(*) from O_Myemp group by Job having job='CLERK'

(2)关联查询
关联查询就是对于两个级两个以上表进行操作,也就是对两个及以上表进行联合查询,主要示例如下所示:

select * from O_Myemp,O_Dept

虽然能够进行两个表的联合查询,但是有一个缺点就是不能体现一对一的查询关系,那么我们需要条件限制以及各种连接操作
1.内连接
内连接就是两个表连接进行一对一关系,有两种写法,一种是where判断,另外一种是(inner) join on,主要示例如下所示:

Select * From O_Myemp Inner Join O_Dept On O_Myemp.Deptno=O_Dept.Deptno;
select * from o_myemp,o_dept where O_Myemp.Deptno=O_Dept.Deptno;

2.左外连接(a left join b on 条件)
左外连接就是a表数据信息完整显示,b表数据信息跟a表数据信息进行一对一关联关系,只要b表所有数据在a表数据中不能对应,那么就显示空,有两种写法,一种是a left join b on 条件,另外一种是where中的a=b(+),主要示例如下所示:

Select * From O_Myemp left Join O_Dept On O_Myemp.Deptno=O_Dept.Deptno;


select * from o_myemp,o_dept where O_Myemp.Deptno=O_Dept.Deptno(+);

3.右外连接(a right join b on 条件)
右外连接就是b表中的数据完整显示,a表数据与b表进行一比一关联关系,只要a表中的数据不存在,那么就显示为空,跟上面一样,也有两种方式,一种是a right join b on 条件,另外一种是‘+’具体如下所示:

Select * From O_Myemp right Join O_Dept On O_Myemp.Deptno=O_Dept.Deptno;

select * from o_myemp,o_dept where O_Myemp.Deptno(+)=O_Dept.Deptno

4.自连接
自连接就是一个表中自己跟自己进行连接,但是容易造成混乱,不知道字段所代表,为了进行区分,我们通常在表名后面添加标识符(其实在任何查询语句都可以使用,还有一点值得注意的是,就是在标识符得用“”包起来),另外自连接可以使用示例如下所示:

select * from o_myemp  a join O_Myemp b on A.Empno=B.Mgr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值