• 分组函数
    – sum 求和

    – avg 平均值

    – max 最大值

    – min 最小值

    – count 计算个数
  • 分组查询
    – 语法: select 分组函数 ,列(要求出现在group by 的后面)
    from 表
    【where 筛选条件】
    group by 分组的列表
    【having】
    【order by 子句】
    – 注意:查询列表必须特殊,要求是分组函数和grounp by后出现的字段(分组条件)
    – 特点:
    1.分组查询中的筛选条件分为两类
    -------------------------------- 数据源 ---------------- 位置 ---------------------- 关键字
    分组前筛选                     原始表               group by子句的前面           where
    分组后筛选            分组后的结果集          group by子句的后面          having
    2.分组函数做条件肯定是放在having子句中
    3.能用分组前筛选的,就优先考虑使用分组前筛选

–案例1 查询每个部门的最高工资

– 案例2 查询哪个部门的员工个数大于2
分析:1:查询每个部门的员工个数

2:根据1的结果再进行筛选,查询哪个部门的员工个数大于2

– 案例3 查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资
分析:1查询每个工种有奖金的员工的最高工资

2.根据1结果继续筛选,最高工资>12000

–案例4 按多个字段分组
查询每个部门每个工种的员工的平均工资

  • 连接查询
    – 含义:又称多表查询,当查询的字段来自于多个表,就会用到连接查询·
    – 笛卡儿积乘积现象:表1 有m行 ,表2有n行,结果为m*n行
    发生原因:没有有效的连接条件
    如何避免:添加有效的连接条件
    – 分类
    1.按年代分类
    *sql192标准:仅仅支持内连接
    *sql199标准【推荐】:在mysql中支持内连接+ 外连接(左外和右外)+交叉连接
    2.按功能分类:
    *内连接
        等值连接
        非等值连接
        自连接
    *外连接
        左外连接
        右外连接
        全外连接
    *交叉连接
    – sql192标准
    1.等值连接
    特点:1.多表等值连接的结果为多个表的交集部分
    2.n表连接,至少需要n-1个连接条件
    3.多表的顺序没有要求
    4.一般需要为表起别名
    5.可以搭配起前面介绍的所以子句使用,比如排序,分组等
    案例1:
    表1
    表2
    查询女神和对应的男神名

    为表起别名
    1.当表名特别长时,就可以起别名,提高语句的简洁度
    2.区分多个重名字段
    注意:如果为表起了别名,则查询的字段就不能使用原来的表名去限定

    2.非等值连接
    表1
    表2
    表3

    案例1:
    查询员工的工资和工资级别

    查询员工的工资和工资级别并进行升序排序

    3.自连接(类似于等值连接,但是不是多表,而是单表,自己连接自己,比较特殊)
    案例1:
    表1
    查询 员工名和上级的名称