基础课-数据库4
c. 分组语句
1)group by 列名(进行分组时用)
查询语句中使用group by,意味着在select中必须出现分组聚合函数对某列数据进行统计
查询中当出现每种、每个和每类,最高、最低、和、平均等字眼,就使用group by 列名语句
格式:select 列名
from 表名
group by 列名
2)order by 列名(进行排序时用)
查询语句中使用order by,意味着在select中出现需要排序
asc代表升序,默认可不写,desc代表降序
格式:select 列名
from 表名
order by 列名
3)limit a,b
a:限定的起始行;0代表第一行,1代表第二行,4代表第五行以此类推
b:代表限定的行数数量;5代表从从起始行往后数5行
格式:select 列名
from 表名
limit a,b
LIMIT的意义:
①实现分页查询(0代表第一行),起始行数=(当前页数-1)*每页的数据行数
例如:SELECT *
From emp
LIMIT 0,5;
②实现TOPN查询;先排序再进行限定
例如:查询入职日期最早的三名员工的名字和入职日期
SELECT *
From emp
ORDER BY hiredate ASC
LIMIT 0,3;
查询公司工资前五名的人名
SELECT ename,sal
FROM emp
ORDER BY sal DESC
LIMIT 0,5;
7.查询语句书写顺序及执行顺序
书写顺序:
1. select
2. from
3. where
4. group by
5. order by
6. limit
执行循序:
1. from 确定数据表
2. where 筛选行
3. group by 分组
4. select 确定列
5. order by 排序
6. limit 限定行
执行顺序就是编写复杂查询语句的思路
8.子查询
一个独立的查询语句作为另外一个查询语句中的一部分存在
语法上子查询需要被一对小括号括起来
主查询
运行时子查询先于主查询运行
例如:查询工资比姜旭工资高的员工姓名,职位,工资
SELECT ename,job,sal
FROM emp
WHERE sal>(SELECT sal FROM emp WHERE ename='姜旭');
查询工资最低的员工姓名
SELECT ename
FROM emp
WHERE sal=(SELECT min(sal) FROM emp );
查询入职日期比何福瑞晚并且和王硕同一部门的员工姓名,入职日期,部门编号
SELECT ename,hiredate,deptno
FROM emp
WHERE hiredate>(SELECT hiredate FROM emp WHERE ename='何福瑞')
AND deptno=(SELECT deptno FROM emp WHERE ename='王硕');
浙公网安备 33010602011771号