MySQL-多表查询-练习

文章展示了多个SQL查询实例,涉及雇员的lastname、department、job、commission、location等信息,包括通过JOIN操作获取员工与其经理的相关数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习


1.写一个查询显示所有雇员的 last name、department id、anddepartment name。

SELECT
e.LAST_NAME,e.DEPARTMENT_ID,d.DEPARTMENT_NAME
FROM employees e,departments d
WHERE e.DEPARTMENT_ID = d.DEPARTMENT_ID;

在这里插入图片描述

2.创建一个在部门 80 中的所有工作岗位的唯一列表,在输出中包括部门的地点。

SELECT DISTINCT
e.JOB_ID,d.LOCATION_ID
FROM employees e,departments d
WHERE e.DEPARTMENT_ID = d.DEPARTMENT_ID
AND e.DEPARTMENT_ID = 80;

在这里插入图片描述

3.写一个查询显示所有有佣金的雇员的 last name、departmentname、location ID 和城市

SELECT
e.LAST_NAME,d.DEPARTMENT_NAME,d.LOCATION_ID,l.CITY
FROM employees e,departments d,locations l
WHERE e.DEPARTMENT_ID = d.DEPARTMENT_ID
AND d.LOCATION_ID = l.LOCATION_ID
AND e.COMMISSION_PCT is not null;

在这里插入图片描述

4.显示所有在其 last names 中有一个小写 a 的雇员的 last name 和departmentname。

select
e.LAST_NAME,d.DEPARTMENT_NAME
FROM employees e,departments d
where e.DEPARTMENT_ID = d.DEPARTMENT_ID
AND e.LAST_NAME like '%a%';

在这里插入图片描述

5.用sql99的内连接写一个查询显示那些工作在 Toronto 的所有雇员的 last name、job、department number 和 departmentname。

SELECT
e.LAST_NAME,e.JOB_ID,e.DEPARTMENT_ID,d.DEPARTMENT_NAME
WHERE l.CITY = 'Toronto';

在这里插入图片描述

6.显示雇员的 last name 和 employee number 连同他们的经理的last name 和manager number。列标签分别为 Employee、Emp#、Manager 和 Mgr#

SELECT
w.LAST_NAME empname,w.DEPARTMENT_ID
empid,m.LAST_NAME mgrname,m.EMPLOYEE_ID mgrid
FROM employees w INNER JOIN employees m
ON w.MANAGER_ID = m.EMPLOYEE_ID;

在这里插入图片描述

好的,我很乐意为您介绍MySQL查询查询练习。这些是数据库操作中非常重要的技能,可以帮助您更好地理解操作复杂的数据关系。让我们来看看一些常见的练习: 1. 查询(JOIN操作): 练习1: 使用INNER JOIN查询两个中的相关数据 << 假设我们有两个:employees(员工)departments(部门)。employees包含employee_id, employee_namedepartment_id;departments包含department_iddepartment_name。 要查询每个员工及其所属部门名称,我们可以使用INNER JOIN: SELECT employees.employee_name, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.department_id; >> 练习2: 使用LEFT JOIN查询包含空值的数据 << 假设我们想查询所有员工及其部门名称,包括那些尚未分配部门的员工。我们可以使用LEFT JOIN: SELECT employees.employee_name, departments.department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.department_id; >> 2. 子查询: 练习1: 使用IN子查询 << 假设我们想查询所有工资高于平均工资的员工。我们可以使用子查询来首先计算平均工资,然后在主查询中使用这个结果: SELECT employee_name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees); >> 练习2: 使用EXISTS子查询 << 假设我们想查询所有有下属的员工。我们可以使用EXISTS子查询: SELECT employee_name FROM employees e WHERE EXISTS (SELECT 1 FROM employees WHERE manager_id = e.employee_id); >> 3. 组合查询: 练习: 使用UNION合并结果集 << 假设我们想查询所有销售部门研发部门的员工。我们可以使用UNION操作符合并两个查询的结果: SELECT employee_name FROM employees WHERE department_id = 1 UNION SELECT employee_name FROM employees WHERE department_id = 2; >> 这些练习涵盖了MySQL查询查询的一些基本中级应用。通过练习这些例子,您可以提高对SQL查询的理解技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blue刂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值