高级查询

本文介绍了SQL中的关联查询、外联接及分组查询的基本概念与语法,并通过实例讲解了如何实现跨表查询、左外联接、右外联接及自关联,同时还详细解释了分组查询的方法及注意事项。

1.关联查询

作用:可以跨越多表查询

语法:

select 列,列,列

from 表1 join 表2

on 表1外键=表2主键

2.外联接

左外联[left outer join]

以关联的左边为准,即使右边没有与之匹配的记录,则左边的记录也要

出现在结果集中,右边全部以NULL值显示。

右外联[right outer join]

以关联的右边为准,即使左边没有与之匹配的记录,则右边的记录也要

出现在结果集中,左边全部以NULL值显示。

自关联:

-- 查询出所有的员工名以及员工的上司名

select e.first_name,m.first_name from s_emp e left join s_emp m on e.manager_id = m.id;

注:关联的条件不一定总是做等值比较的。

3.分组查询

定义:利用内置的分组函数来查询

所谓分组,就是看待数据的“角度”不同。

也就是把某类值相同的看做一组。

语法:

select 列名,组函数(列名)...from 表名

where 条件

group by 列

having 字句

order by 列

分组函数:

SUM([distinct] 列|表达式|值) 求和

AVG([distinct] 列|表达式|值) 求平均值

MAX(列|表达式|值) 求最大值

MIN(列|表达式|值) 求最小值

COUNT([distinct] 列|*) 求个数(包含null)

注意1:只有出现在group by 后面的列[用来做为分组条件的列],才有资格,写在SELECT的后面,除非使用组函数进行修饰。

注意2:having 和where 都是条件

区别:

WHERE 子句中是不能使用 组函数的,因为它在GROUP BY 之前。

但是,HAVING 子句中可以使用组函数,因为它在GROUP BY 之后。

转载于:https://www.cnblogs.com/wangqun1234/p/7815524.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值