SQL语法-DQL-测试练习

本文介绍了如何使用SQL的DQL语句进行一系列数据查询和分析,包括筛选特定年龄和性别的员工信息、统计人数、排序等,通过实际案例演示了在MySQL数据库中执行的相关操作和练习题目的解答。
摘要由CSDN通过智能技术生成

因篇幅原因,本篇承接此篇->第八篇:SQL语法-DQL-数据查询语言-CSDN博客 

本篇是对于SQL语法DQL语句的练习,因水平和精力有限(就不像前两篇的DDL,DML那样自出练习了)直接照搬了【黑马程序员】在哔哩哔哩的mysql数据库系列课程的练习->21. 基础-SQL-DQL-案例练习_哔哩哔哩_bilibili


一,题目描述

按照需求完成如下DQL语句编写

  1. 查询年龄为20,21,22,23岁的女性员工信息
  2. 查询性别为 男 ,并且年龄在 20-40 岁(含)以内的姓名为三个字的员工
  3. 统计员工表中,年龄小于60岁的,男性员工和女性员工的人数
  4. 查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序
  5. 查询性别为男,且年龄在20-40 岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序


二,表格提供 

创建emp表后执行下面的DML语句,将数据添加到emp表中,以便练习题目

insert into emp (id,workno,name,gender,age,idcard,workaddress,entrydate)
values (1,1,'柳岩','女',20,'123456789012345678','北京','2000-01-01'), 
       (2,2,'张无忌','男',18,'123456789012345670','北京','2005-09-01'),
       (3,3,'韦一笑','男',38,'123456789712345670','上海','2005-08-01'),
       (4,4,'赵敏','女',18,'123456757123845670','北京','2009-12-01'),
       (5,5,'小昭','女',16,'123456769012345678','上海','2007-07-01'),
       (6,6,'杨道','男',28,'12345678931234567X','北京','2006-01-01'),
       (7,7,'范骚','男',40,'123456789212345670','北京','2005-05-01'),
       (8,8,'黛绮丝','女',38,'123456157123645670','天津','2015-05-01'),
       (9,9,'范凉凉','女',45,'123156789012345678','北京','2010-04-01'),
       (10,10,'陈友凉','男',53,'123456789012345670','上海','2011-01-01'),
       (11,11,'张士诚','男',55,'123567897123465670','江苏','2015-05-01'),
       (12,12,'常遇春','男',32,'123446757152345670','北京','2004-02-01'),
       (13,13,'张三丰','男',88,'123656789012345678','江苏','2020-11-01'),
       (14,14,'灭绝','女',65,'123456719012345670','西安','2019-05-01'),
       (15,15,'胡青牛','男',70,'12345674971234567X','西安','2018-04-01'),
       (16,16,'周芷若','女',18,null,'北京','2012-06-01');


三,题解

(一)建表

在自定义的【test】数据库中创建emp表后添加表中相应字段,注意数据类型和长度的合理分配!

(二)添加数据

将本篇【二,表格提供】的DML语句复制到图形化管理工具中执行,添加数据

 (三)查询年龄为20,21,22,23岁的女性员工信息

直接在基础查询语句的基础上限定查询条件为【WHERE gender='女' and age IN (20, 21, 22, 23)】即可,注意两个条件的逻辑关系是并且,用and关键字或&&符号连接

SELECT * FROM emp WHERE gender='女' and age IN (20, 21, 22, 23);

(四)查询性别为 男 ,并且年龄在 20-40 岁(含)以内的姓名为三个字的员工

(三)的基础上对性别和年龄稍作修改,然后多加一个条件【NAME LIKE "___"】使用模糊匹配的下划线(三条下划线)来筛选名字只有三个字的记录,也要用并且的关系连接

SELECT * FROM emp WHERE gender='男' and age BETWEEN 20 AND 40 AND NAME LIKE "___";

(五) 统计员工表中,年龄小于60岁的,男性员工和女性员工的人数

(注,答案不唯一,符合要求即可)

使用【where】关键字限制年龄小于60,使用【group by】关键字按性别分组,对于查询的结果,显示gender字段(性别)和count(*)字段(count聚合函数统计人数)

SELECT gender,COUNT(*) FROM emp WHERE age < 60 GROUP BY gender;

(六) 查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序

使用【where】关键字限制年龄小于等于35,使用【order by】关键字先按年龄升序(asc关键字)再按入职时间 降序(desc关键字),对于查询的结果,显示name和age字段

SELECT NAME, age FROM emp WHERE age<=35 ORDER BY age ASC, entrydate DESC;

(七)查询性别为男,且年龄在20-40 岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序

where条件和(四)一样,order by排序规则和(六)相同,在此基础上需要使用【limit】关键字对查询的结果分页,【limit 0, 5】即查询第一页的内容,每页显示5条记录,其中因为是第一页故索引0可以省略不写,写成【limit 5】即可

另外要注意的是关键字的编写顺序,【order by】关键字应该在【where】之后,【limit】之前

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值