select查询之分组函数和多表查询

1.分组函数

  • 类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
  • 隐藏实现细节,提高代码重用性
  • 作用于一组数据,并对一组数据返回一个值

1.1 组函数类型

AVG 、COUNT、MAX、MIN、SUM

select AVG (salary),COUNT(salary),MAX(salary),MIN(salary),SUM(salary),
from employees where job_id like ‘%REP%’;
在这里插入图片描述

1.2 分组数据

group by 将数据分成若干组

  • 查询列表比较特殊,要求是分组函数和group by后出现的字段
  • 包含在group by 子句中的列不必包含在select列表中
  • select AVG(salary) from employees group by department_id;
  • 各部门平均薪水:select department_id,AVG(salary) from employees group by department_id;
    在这里插入图片描述
  • 查询每个领导手下的员工平均工资
    在这里插入图片描述

非法使用组函数

  • 不能在where子句中使用组函数
  • 可以在having子句中使用组函数

1.3 过滤分组having

  • 使用having过滤分组
  • 行已经被分组
  • 使用了组函数
  • 满足having子句中条件的分组将被显示
  • select department_id,MAX(salary) from employees group by department_id having Max(salary)>10000;

2.多表查询

2.1 多表连接

  • 笛卡尔集
    省略连接条件
    连接条件无效
    所有表中的所有行互相连接
  • 为避免笛卡尔集,可以在where加入有效的连接条件

2.1.1 Mysql连接,等值连接

注意:
使用连接在多个表中查询数据
在where子句中写入连接条件
在表中有相同列时,在列名之前加上表名前缀
在这里插入图片描述

  • 区分重复的列名
    使用表名前缀在多个表中区分相同的列
    在不同表中具有相同列名的列可以用表的别名加以区分
  • 连接n 个表,至少需要n-1个连接条件
    select last_name,departments.department_id,city from employees,departments,locations
    where departments.location_id = locations.location_id and
    employees.department_id = departments.department_id;

2.2 使用on子句创建连接

1.自然连接中是以具有相同名字的列为连接条件的
2.可以使用on子句指定额外的连接条件
3.这个连接条件是与其它条件分开的
3.on子句使语句具有更高的易读性

2.2.1 Join连接

内连接:[inner]join on
外连接:
左外连接 left [outer] join on
右外连接 right [outer] join on

在这里插入图片描述

在这里插入图片描述

  • 举例
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值