首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

13.单表查询测试

前几节内容中我们为大家介绍了MySQL中数据表查询的基础知识,为了帮助大家更好的理解数据查询的知识,在这里特意整理了一些练习题,希望可以对大家有所帮助。

准备工作

如上就是我们本节测试题目用到的测试表 emp, 当然这张数据表仅供大家参考,具体这张数据表的建表语句如下

CREATE TABLE emp(

empid int primary key auto_increment,

ename varchar(32) not null,

sex int default 0,

sal double default 0.0,

job varchar(32),

deptid int not null,

foreign key(deptid) references dept(deptid)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '员工表';

同时在这里我也为大家整理了一些数据表的测试数据,大家可以将这些插入语句粘贴下来,然后直接插入到数据表中

INSERT INTO emp (ename, sex, sal, job, deptid) VALUES ('宋清', 0, 30000.00, '人事部主任', 3);

INSERT INTO emp (ename, sex, sal, job, deptid) VALUES ('吴用', 0, 20000.00, '人事部秘书', 3);

INSERT INTO emp (ename, sex, sal, job, deptid) VALUES ('公孙胜', 0, 10000.00, '人事部秘书', 3);

INSERT INTO emp (ename, sex, sal, job, deptid) VALUES ('王定六', 0, 3000.00, '销售员', 1);

INSERT INTO emp (ename, sex, sal, job, deptid) VALUES ('陶宗旺', 0, 2000.00, '销售员', 1);

INSERT INTO emp (ename, sex, sal, job, deptid) VALUES ('张青', 0, 4000.00, '销售部副主任', 1);

INSERT INTO emp (ename, sex, sal, job, deptid) VALUES ('孙二娘', 1, 3500.00, '销售部副主任', 1);

INSERT INTO emp (ename, sex, sal, job, deptid) VALUES ('扈三娘', 1, 4000.00, '销售部主任', 1);

INSERT INTO emp (ename, sex, sal, job, deptid) VALUES ('卢俊义', 0, 8000.00, '财务部主任', 2);

INSERT INTO emp (ename, sex, sal, job, deptid) VALUES ('柴进', 0, 5000.00, '财务部副主任', 2);

到这里为止,我们的准备工作已经完成了,如下为大家提供的练习题目正是使用的这张数据表和测试数据。

测试题目

1. 查询员工编号为6的员工姓名、性别、薪水、职位信息。

【分析】

这是一个最简单的单表查询的案例,我们只要正确的书写列名,以 empid = 6 为查询条件就可以得到期望的答案了。

【答案】

SELECT ename, sex, sal, job FROM emp WHERE empid = 6;

2. 查询出职位是销售员的所有员工的员工编号、员工姓名、性别、年薪、职位信息。

【分析】

对于这道题目我们需要注意两点,首先员工的职位是销售员查询的条件,其次就是在查询的时候薪水要乘以12,计算得到员工的年薪。

【答案】

SELECT empid, ename, sex, sal*12, job FROM emp WHERE job = '销售员';

3. 查询名为 mike 的员工编号、员工姓名、性别、薪水、职位信息(同时数据表中有名为 Mike的员工)。

【分析】

设置这个题目的目的是为了让大家牢记,MySQL中默认是不区分大小写的,这点和其他版本的数据库有所区别的。

【答案】

SELECT empid, ename, sex, sal, job FROM EMP WHERE ename = 'mike';

4. 查询薪水在 2000~5000 之间的员工编号、员工姓名、性别、薪水、职位信息。

【分析】

这是一个典型的关于查询范围的题目,我们可以使用 BETWEEN……AND……结构来实现

【答案】

SELECT empid, ename, sex, sal, job FROM EMP WHERE sal BETWEEN 2000 AND 5000;

【拓展】

除了使用BETWEEN……AND……结构外,我们还可以使用一般操作符和AND关键字实现。

SELECT empid, ename, sex, sal, job FROM EMP WHERE sal >= 2000 AND sal

5. 查询薪水不在 3500~5000 之间的员工编号、员工姓名、性别、薪水、职位信息。

【分析】

这是和第四个题目对应的题目,对指定的范围进行取反,NOT……BETWEEN……AND……就可以得到最终结果了。

【答案】

SELECT empid, ename, sex, sal, job FROM EMP WHERE NOT sal BETWEEN 3500 AND 5000;

【拓展】

除了使用NOT……BETWEEN……AND……结构外,我们还可以使用一般操作符和OR关键字实现。

SELECT empid, ename, sex, sal, job FROM EMP WHERE sal 5000;

6. 查询出没有设置员工岗位的员工编号、员工姓名、性别、薪水、职位信息,并且按照薪水降序排列。

【分析】

所谓没有设置员工岗位就是在 emp 表中 job 这一列数据值为NULL

【答案】

SELECT empid, ename, sex, sal, job FROM EMP WHERE job IS NULL ORDER BY sal DESC;

7. 查询出员工是张姓的员工编号、员工姓名、性别、薪水、职位信息。

【分析】

这是一个典型的模糊查询案例,之前介绍模糊查询时候也为大家做过相应的演示。

【答案】

SELECT empid, ename, sex, sal, job FROM emp WHERE ename LIKE '张%';

8. 查询出每个部门的平均工资并且按照降序排列。

【分析】

这是一个明显的分组查询的题目,以 emp 表中的 deptid 列作为分组标识列,然后利用 AVG() 求取分组之后每个部门的平均工资,就可以得到最终的结果了。

【答案】

SELECT deptid, avg(sal) FROM emp GROUP BY deptid;

9. 查询出每个部门员工的人数。

【分析】

这个题目和上一个题目类似,以 emp 表中的 deptid 列作为分组标识列,然后利用 count() 函数就可以获取每个部门的总人数了。

【答案】

SELECT deptid, count(*) FROM emp GROUP BY deptid;

10. 查询出每个岗位最高薪水、最低薪水以及人数。

【分析】

相比之前两个分组查询来说,要实现这个查询我们需要用到 max()、min()、count(),可以帮助大家更好的理解分组查询。

【答案】

SELECT job, max(sal), min(sal), count(*) FROM emp GROUP BY job;

PS:关于MySQL数据库的基础内容已经为大家介绍完了,如果您如想要了解更多MySQL数据库操作内容的话,可以点击公众号中的菜单查看相关的视频课程,希望这些内容可以为您提供一定的帮助,当然也欢迎您将这些内容转发给您周围的同事或朋友,感谢您的支持和帮助!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181224G06ODN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券