一、初识数据库
二、数据查询语言(一)
二、数据查询语言(二)
二、数据查询语言(三)
二、数据查询语言(四)
二、数据查询语言(五)
提示:以下是本篇文章正文内容,下面案例可供参考
且所用数据表为:可自行下载
1. 查询和 Zlotkey 相同部门的员工姓名和工资
USE myemployees SELECT last_name,salary,department_id FROM employees WHERE department_id=( SELECT department_id FROM employees WHERE last_name='Zlotkey');#标量子查询用=
2. 查询工资比公司平均工资高的员工的员工号,姓名和工资
SELECT AVG(salary) FROM employees;#标量 SELECT employee_id,last_name,salary FROM employees WHERE salary>( SELECT AVG(salary) FROM employees);
3. 查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资
#分两步,①先查各部门的平均工资, SELECT AVG(salary),department_id FROM employees GROUP BY department_id; #②连接①的结果集和employyees表,进行筛选 SELECT employee_id,Last_name,salary FROM employees e INNER JOIN ( SELECT AVG(salary) AS ag,department_id FROM employees GROUP BY department_id )AS ag_dep ON e.`department_id`=ag_dep.department_id WHERE salary>ag_dep.ag;
4. 查询和姓名中包含字母 u 的员工在相同部门的员工的员工号和姓名
#多行查询用in #①查询姓名中包含字母u的员工的部门,②查询部门号=①中任意一个的员工号和姓名 SELECT DISTINCT department_id#使用DISTINCT去重 FROM employees WHERE Last_name LIKE '%u%'; SELECT employee_id,last_name FROM employees WHERE department_id IN( SELECT DISTINCT department_id FROM employees WHERE Last_name LIKE '%u%');
5. 查询在部门的 location_id 为 1700 的部门工作的员工的员工号
#第一步 SELECT DISTINCT department_id FROM departments WHERE location_id=1700 #结合第一步 SELECT employee_id FROM employees WHERE department_id IN( SELECT DISTINCT department_id FROM departments WHERE location_id=1700);
6. 查询管理者是 K_ing 的员工姓名和工资
SELECT last_name,salary FROM employees WHERE manager_id IN( SELECT employee_id FROM employees WHERE last_name='K_ing');
7. 查询工资最高的员工的姓名,要求 first_name 和 last_name 显示为一列,列名为 姓名
SELECT CONCAT(first_name,last_name) "姓.名" FROM employees WHERE salary=( SELECT MAX(salary) FROM employees);
应用场景:当要显示的数据一页显示不全,需要分页提交sql请求 语法: select 查询列表 from 表 【join type join 表2 on 连接条件 where 筛选条件 group By 分组字段 having 分组后筛选 order by 排序的字段】 limit offest,size; offest要显示条目的起始索引(起始索引从0开始) 特点: ①limit语句放在查询语句的最后 ②公式 要显示的页数 page, 每页的条目数 select 查询列表 from 表 limit (page-1)*size,size; size=10 page 1 0 2 10 3 20
案例1:查询前五条员工信息
SELECT * FROM employees LIMIT 0,5; SELECT * FROM employees LIMIT 5;#offset的值从第一条开始的支持省略0
案例2:查询第11到25条
SELECT * FROM employees LIMIT 10,15;
案例3:有奖金的员工信息,并且工资较高的前10名显示出来
SELECT * FROM employees WHERE commission_pct IS NOT NULL ORDER BY salary DESC LIMIT 10;
期待大家和我交流,留言或者私信,一起学习,一起进步!