表一:employees

USE yggl
SELECT * FROM employees
INSERT into employees VALUES
('102201','刘明','本科',19721018,1,3,'虎踞路100-2','83606608',5),
('102208','朱骏','硕士',19650928,1,2,'牌楼巷5-3-106','84708817',5),
('108991','钟敏','硕士',19790810,0,4,'中山路10-3-105','83346722',3),
('111006','张石兵','本科',19741001,1,1,'解放路34-1-203','84563418',5),
('210678','林涛','大专',19770402,1,2,'中山北路24-35','83467336',3),
('302566','李玉珉','本科',19680920,1,3,'热河路209-3','58765991',4),
('308759','叶凡','本科',19781118,1,2,'北京西路3-7-52','83308901',4),
('504209','陈林琳','大专',19690903,0,5,'汉中路120-4-12','84468158',4)

表二:salary

SELECT * FROM salary
INSERT into salary VALUES
('000001',2100.8,123.09),
('010008',1582.62,88.03),
('020010',2860,198),
('020018',2347.68,180),
('102201',2569.88,185.65),
('102208',1980,100),
('108991',3259.98,281.52),
('111006',1987.01,79.58),
('210678',2240,121),
('302566',2980.7,210.2),
('308759',2531.98,199.08),
('504209',2066.15,108)

表三:departments


SELECT * FROM departments
INSERT into departments VALUES
(1,"财务部",NULL),
(2,"人力资源部",NULL),
(3,"经理办公室",NULL),
(4,"研发部",NULL),
(5,"市场部",NULL)

练习题及答案:

---1、查询empioyees表的员工部门号和性别,要求消除重复行

SELECT DISTINCT 性别,员工部门号 FROM employees

---2、计算每个雇员的实际收入(实际收入=收入-支出)

SELECT 员工编号,收入-支出 as 实际收入 from salary

---3、查询employees表中的姓名和性别,要求性别值为1时显示为“男”,为0时显示为“女”

SELECT 姓名,性别 from employees WHERE 性别=1 as '男' 

---4、查询每个雇员的地址和电话号码,显示的列标题为adress,telephone

SELECT 地址 AS "adress",电话号码 AS "telephone" from employees 

---5、计算salary表中员工月收入的平均数

SELECT avg(收入) as 员工月收入的平均数 from salary

---6、计算所有员工的总支出

SELECT sum(支出) as 所有员工的总支出 from salary

---7、显示女雇员的地址和电话号码

SELECT 地址,电话号码 from employees where 性别=0

---8、计算员工总数

SELECT count(*) as 员工总数 from employees

---9、显示最高收入和最低收入的员工的员工编号

SELECT max(收入) as 最高收入,min(收入) as 最低收入 FROM salary

二、条件查询

---1、显示月收入高于2000元的员工编号

SELECT 员工编号 from salary where 收入>2000

---2、查询1970年以后出生的员工的姓名和地址

SELECT 姓名,地址 from employees where 出生日期>19700000

---3、显示工作年限3年以上(含3年),学历在本科以上(含本科)的男性员工的信息

SELECT * from employees where 工作年限>=3 and 学历 in("本科","硕士") and 性别=1

---4、查找员工编号中倒数第2个数字为0的姓名,地址和学历

SELECT 姓名,地址,学历 from employees where 员工编号 like "%0_"

---5、查询月收入在2000远~3000远的员工编号

SELECT 员工编号 from salary where 收入 BETWEEN 2000 and 3000

三.多表查询

---1、查询“王林”的基本情况和所工作的部门名称

SELECT employees.*,departments.部门名称 FROM employees
JOIN departments ON employees.员工部门号=departments.部门编号
WHERE employees.姓名='王林'

---2、查询财务部、研发部、市场部的员工信息。

SELECT employees.*,departments.部门名称 FROM employees
JOIN departments ON employees.员工部门号=departments.部门编号
WHERE departments.部门名称 IN ('财务部','研发部','市场部')

---3、查询每个雇员的基本情况和薪水情况。

SELECT employees.*,salary.* FROM employees
JOIN salary ON employees.员工编号=salary.员工编号

---4、查询研发部在1970年以前出生的员工姓名和薪水情况。

SELECT e.姓名,s.* FROM employees e,salary s,departments d
WHERE e.员工编号=s.员工编号 AND e.员工部门号=d.部门编号
AND e.出生日期 < '1970' AND 部门名称='研发部'

---5、查询员工的姓名、住址和收入水平,要求2 000元以下显示为“低收入”,
2000元~3000元显示为“中等收入”,3000元以上时显示为“高收入”。

SELECT e.姓名,e.地址,
CASEWHEN 收入 < '2000' THEN '低收入'WHEN 收入 BETWEEN '2000' AND '3000' THEN '中等收入'WHEN 收入 > '3000' THEN '高收入'
END AS '收入等级'
FROM employees e,salary s
WHERE e.员工编号=s.员工编号

四、分类汇总与排序

---1、按部门列出该部门工作的员工人数。

SELECT count(*),d.部门编号 FROM employees e JOIN departments d
ON e.员工部门号=d.部门编号 GROUP BY 员工部门号

---2、分别统计男性员工和女性员工人数。

SELECT count(*),
CASEWHEN 性别='1' THEN '男'WHEN 性别='0' THEN '女'
END AS '性别'
FROM employees e GROUP BY 性别

---3、查找雇员数超过2人的部门名称和员工数量。

SELECT COUNT(*),d.部门名称 FROM employees e JOIN departments d ON e.员工部门号=d.部门编号
GROUP BY 员工部门号 HAVING COUNT(e.员工部门号) > 2

---4、按员工学历分组统计各种学历人数。

SELECT COUNT(*),e.学历 FROM employees e GROUP BY 学历

---5、将员工信息按出生日期从大到小排序。

SELECT * FROM employees ORDER BY 出生日期 DESC

---6、将员工薪水按收入多少从小到大排序。

SELECT * FROM salary ORDER BY 收入

---7、按员工的工作年限分组,统计各个工作年限的人数,并按人数从小到大排序。

SELECT COUNT(*),employees.工作年限 FROM employees GROUP BY 工作年限
ORDER BY COUNT(工作年限)

MySQL:数据库练习题-1相关推荐

  1. 六、MySQL 数据库练习题1(包含前5章练习题目及答案)

    文章目录 一.数据库概述练习题 二.MySQL 环境搭建练习题 三.查询练习 MySQL 数据库练习题(包含前5章所有知识点及答案) 前置知识: 一.数据库开发与实战专栏导学及数据库基础概念入门 二. ...

  2. MySQL 数据库练习题记录01

    文章目录 前言 一.数据库练习题一 1.1 表结构 1.2 查询所有学生的信息(学号,姓名,性别,班级名称) 1.3 查询所有人(包括没有成绩的学生)的课程分数(学号,姓名,性别,班级名称,语文分数, ...

  3. mysql存储过程练习题,2016年计算机二级考试MySQL数据库练习题模拟

    一.编程题 在数据库db_test中创建一个存储过程,用于实现给定表content中一个留言人的姓名即可修改表content中该留言人的电子邮件地址为一个给定的值. 二.简答题 1.请解释什么是存储过 ...

  4. MySQL 数据库 练习题

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...

  5. Mysql数据库练习题之商品库

    设有如下所示的三个关系模式: 商店Shop(Sno,Sname,City)//Sno (商店编号).Sname (商店名).City (所在城市) Sno和Sname为联合主键 商品Product(P ...

  6. mysql中商品与商店关系,Mysql数据库练习题之商品库

    设有如下所示的三个关系模式: 商店Shop(Sno,Sname,City)//Sno (商店编号).Sname (商店名).City (所在城市) Sno和Sname为联合主键 商品Product(P ...

  7. mysql数据库作业_mysql数据库操作练习

    mysql数据库练习题 温馨提示:多刷新表! ​ 多刷新表!!! ​ 多刷新表!!!!! 1查询每个 学生成绩大于60且成绩总和小于200的班级编号以及成绩和并根据成绩和降序 update sg se ...

  8. MySQL数据库入门学习教程(mysql基础+高级)

    今天这篇文章将详细列出Mysql的学习流程,这是学习mysql数据库前你要了解的~~~ 大部分的小伙伴自己在网上找mysql资料.还有数据库的视频教程,但是都过于碎片化,没有体系,导致大家不知道如何系 ...

  9. MySQL数据库总结

    文章目录 一.数据库简介 二.MySQL数据类型(5.5版本) 三.Sql语句 (1)Sql语句简介 (2)数据定义语言DDLcreate,alter,drop (3)数据操纵语言DMLupdate, ...

最新文章

  1. SAP QM 主检验特性主数据关键字段解释
  2. noip2005 过河
  3. 泛域名PHP,泛域名实现无限二级域名功能
  4. spring boot中SpringBootCondition框架
  5. 信息系统项目管理知识--知识产权与标准化
  6. 华为鸿蒙备胎转正,华为鸿蒙是备胎系统,但已经实现上网随时能转正?
  7. 【JavaScript】如何将JS中的数据提交到Servlet服务器中
  8. Java设计模式(8)组合模式(Composite模式)
  9. 大数据开发你需要知道的十个技术
  10. 04.MyBatis别名的设置和类型转换器
  11. 生成器应用及知识推广
  12. Qt网络(二)HTTP编程
  13. 高一计算机基础知识ppt课件,高一信息技术课件
  14. java round指令_java中Math.round()的用法
  15. Bazel 与 gtest:构建一个最简单的测试驱动开发环境
  16. 学习html的心得体会
  17. ms office excel2013教程 - 数据有效性
  18. Alacritty主题配置
  19. JavaScript execCommand函数
  20. win10控制面板快捷键_你没玩过的全新版本Win10,这些操作你知多少?

热门文章

  1. 2022双十一喵果Autojs脚本
  2. 3.7 来电显示号码归属地
  3. WPS JS 宏实现表间导入
  4. 贝叶斯分析——分布之分布(beta分布)
  5. 用DAEMON TOOLS打开rational ross 的bin文件并安装过程梳理
  6. [AHK]WinAutoHide – 让窗口贴边隐藏
  7. 基于PHP+MySQL汽车租赁管理系统的设计与实现
  8. Android 扬声器与听筒的切换
  9. 为什么360浏览器兼容模式文档模式默认以ie7标准渲染
  10. JavaScript高级程序设计第四版学习--第二十四章