ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

二、数据查询语言(六)

2021-12-03 23:59:32  阅读:253  来源: 互联网

标签:WHERE employees 查询 department 查询语言 数据 id SELECT


MySQL


一、初识数据库
二、数据查询语言(一)
二、数据查询语言(二)
二、数据查询语言(三)
二、数据查询语言(四)
二、数据查询语言(五)

二、数据查询语言(六)

数据查询语言包括: 基础查询 条件查询 排序查询 分组查询 连接查询 子查询 分页查询 联合查询

前言


提示:以下是本篇文章正文内容,下面案例可供参考
且所用数据表为:可自行下载

子查询-经典案例

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;

总结

期待大家和我交流,留言或者私信,一起学习,一起进步!

标签:WHERE,employees,查询,department,查询语言,数据,id,SELECT
来源: https://blog.csdn.net/CltCj/article/details/121700839

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有