Mysql8.0习题系列
软件下载地址
提取码:7v7u
数据下载地址
提取码:e6p9
1. 基本select语句
1.1 题目
- 1.查询员工12个月的工资总和,并起别名为ANNUAL SALARY
- 2.查询employees表中去除重复的job_id以后的数据
- 3.查询工资大于12000的员工姓名和工资
- 4.查询员工号为176的员工的姓名和部门号
- 5.显示表 departments 的结构,并查询其中的全部数据
1.2答案
1.查询员工12个月的工资总和,并起别名为ANNUAL SALARY
SELECT
last_name,
12 * salary * (1+ IFNULL(commission_pct, 0)) 'annual salary' # ifnull函数判断是否有年薪
FROM
employees ;
2.查询employees表中去除重复的job_id以后的数据
SELECT DISTINCT(job_id) FROM employees;
3.查询工资大于12000的员工姓名和工资
SELECT last_name, salary FROM emoloyees
WHERE salary > 12000;
4.查询员工号为176的员工的姓名和部门号
SELECT last_name, department_id
FROM employees
WHERE employee_id = 176;
5.显示表 departments 的结构,并查询其中的全部数据
DESC departments;
SELECT * FROM departments;
2. 运算符
2.1题目
- 1.选择工资不在5000到12000的员工的姓名和工资
- 2.选择在20或50号部门工作的员工姓名和部门号
- 3.选择公司中没有管理者的员工姓名及job_id
4.选择公司中有奖金的员工姓名,工资和奖金级别
- 5.选择员工姓名的第三个字母是a的员工姓名
- 6.选择姓名中有字母a和k的员工姓名
- 7.显示出表 employees 表中 first_name 以 'e'结尾的员工信息
- 8.显示出表 employees 部门编号在 80-100 之间的姓名、工种
- 9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id
2.2答案
1.选择工资不在5000到12000的员工的姓名和工资
SELECT last_name,salary
FROM employees
WHERE salary NOT BETWEEN 5000 AND 12000;
2.选择在20或50号部门工作的员工姓名和部门号
'SELECT last_name, department_id
FROM employees
WHERE department_id BETWEEN 20 AND 50;
3.选择公司中没有管理者的员工姓名及job_id
SELECT job_id FROM employees
WHERE manager_id IS NULL;
SELECT * FROM employees;
4.选择公司中有奖金的员工姓名,工资和奖金级别
SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
5.选择员工姓名的第三个字母是a的员工姓名
SELECT last_name FROM employees
WHERE last_name LIKE '__a%' ; # _表示单个字符,%表示任意多个字符
6.选择姓名中有字母a和k的员工姓名
SELECT last_name FROM employees
WHERE last_name LIKE '%a%k%' OR last_name LIKE '%k%a%';
7.显示出表 employees 表中 first_name 以 'e'结尾的员工信息
SELECT * FROM employees
WHERE first_name LIKE '%e';
8.显示出表 employees 部门编号在 80-100 之间的姓名、工种
SELECT last_name,job_id
FROM employees
WHERE department_id BETWEEN 80 AND 100;
9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id
SELECT last_name,salary,manager_id
FROM employees
WHERE manager_id IN (100,101,110);