目录
本期接着上一期的内容继续学习SQL语句中的DQL数据查询语句,这部分内容相当多,也是SQL语句中最为重要的一部分,比较数据库的操作有百分之80都是查询操作。好了废话不多说,继续回来学习吧。(上一期内容MySQL基础-----SQL语句之DQL数据查询语句(上篇)-CSDN博客)
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组
后过滤条件 ];
注意事项:
- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
- 执行顺序: where > 聚合函数 > having 。
- 支持多字段分组, 具体语法为 : group by columnA,columnB
A. 根据性别分组 , 统计男性员工 和 女性员工的数量
select gender,count(*) from emp group by gender;
B. 根据性别分组 , 统计男性员工 和 女性员工的平均年龄
select gender, avg(age) from emp group by gender ;
C. 查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址
select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;
D. 统计各个工作地址上班的男性及女性员工的数量
select gender,workaddress,count(*) from emp group by gender, workaddress;
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;
注意事项:
- 如果是升序, 可以不指定排序方式ASC ;
- 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;
A. 根据年龄对公司的员工进行升序排序
select * from emp order by age asc; select * from emp order by age;
B. 根据入职时间, 对员工进行降序排序
select * from emp order by entrydate desc ;
C. 根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序
select * from emp order by age asc ,entrydate desc ;
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ; 1
注意事项:
- 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
- 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
A. 查询第1页员工数据, 每页展示10条记录
select * from emp limit 0,10; select * from emp limit 10;
B. 查询第2页员工数据, 每页展示10条记录 --------> (页码-1)*页展示记录数
select * from emp limit 10,10;
select name , age from emp where age > 15 order by age asc;
select e.name , e.age from emp e where e.age > 15 order by age asc; 1
select e.name ename , e.age eage from emp e where eage > 15 order by age asc;
select e.name ename , e.age eage from emp e where e.age > 15 order by eage asc;
1.查询年龄为 20,21,22,23 岁的员工信息。select * from emp where gender = '女' and age in(20,21,22,23);
2.查询性别为 男 ,并且年龄在 20-40 岁(含)以内的姓名为2个字的员工。
select * from emp where gender='男' and age between 20 and 40 and name like '__';
3.统计员工表中, 年龄小于60岁的 , 男性员工和女性员工的人数。
select gender,count(*) from emp where age<60 group by gender;
4.查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
select name,age from emp where age<=35 order by age asc ,entrydate desc ;
5.查询性别为男,且年龄在20-40 岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。
select * from emp where age between 20 and 40 order by age asc ,entrydate desc limit 0,5;
以上就是本期的全部内容了,我们下次见咯!
分享一张壁纸:
更多【oracle-MySQL基础-----SQL语句之DQL数据查询语句(下篇)】相关视频教程:www.yxfzedu.com