select简单查询(排序、聚合、分组、having)

SELECT-2

排序

单列排序语法格式如下:

select 要查询列名 from 表名 order by 列名 desc/asc;

注:

  • 若只在order by后接列名不指定排序规则则默认为asc升序
  • asc/desc表示排序规则asc代表升序desc代表降序
  • order by子句相对位置始终在最后

简单示例如下:

在这里插入图片描述

多列排序语法格式如下:

--按照order by后边的列名次序决定排序次序
select 要查询列名 from 表名 order by 列名1 desc/asc... ,列名n desc/asc;

注:

  • 排序顺序如下先按照列名1和其排序规则排序,若列名1中有相同值则按照列2和排序规则排序(从左到右)

示例如下:
在这里插入图片描述

聚合函数

--查询表中一共有多少条数据
select count(*) from emp;
select count(1) from emp;
select count(deptno) from emp;

运行效果如下:

在这里插入图片描述

注:三种方式虽写法一样,但运行效率不同*>常树>普通列,当表中设置主键或索引后索引效率最高

--max(列名)——求该列的属性值中最大的属性值
select max(sal) from emp;

运行效果如下:

在这里插入图片描述

--min(列名)——求该列的属性值中最小的属性值
select min(sal) from emp;

运行效果如下:

在这里插入图片描述

--avg(列名)——求平均值
select avg(sal) from emp;

运行效果如下:

在这里插入图片描述

--sum(列名)——求和
select sum(sal) from emp;

运行效果如下:

在这里插入图片描述

--distinct去重关键字,试比较以下三种语句的不同
select distinct deptno from emp;
select distinct deptno,empno from emp;

运行效果如下:

在这里插入图片描述

分组

--语法格式如下
select 列名,列名,...,列名 from 表名
where 条件
group by 分组列
order by 排序列 asc|desc;
--查看每个部门人数
select deptno,count(*) from emp group by deptno;

运行效果如下:

在这里插入图片描述
注:

  • 必须保证group by后字段出现在select与from中且不能有多余字段,聚合函数除外

示例如下:
在这里插入图片描述

  • group by 字段1,字段2的执行原理为根据字段1,字段2同时相等的条件分组

  • 若有聚合函数可以不在select与from之中显示group by后字段
    示例如下:
    在这里插入图片描述

having

having与group by 通常成对出现
--查看部门人数大于四的部门人数
select deptno,count(*) from emp group by deptno having count(*)>4

运行效果如下:

在这里插入图片描述

拓:where与having的不同如下

  • where中不能使用聚合函数,having可以使用聚合函数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值