mysql--子查询、连表查询

在 MySQL 中,子查询连表查询(又叫联接查询)是两种常见的数据查询方式。
 

子查询(Subquery)

1.标量子查询

SELECT name
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

--这个查询查找那些薪水高于平均薪水的员工。

 

2.列子查询

SELECT name 
FROM employees 
WHERE department_id IN (SELECT department_id FROM departments WHERE location = 'New York');

--这个查询查找所有在 "New York" 办公地点的部门中的员工。

 

3.行子查询

SELECT name 
FROM employees 
WHERE (department_id, job_id) = (SELECT department_id, job_id FROM departments WHERE location = 'New York' LIMIT 1);

--这个查询查找所有与特定部门和工作匹配的员工。

 

2. 连表查询(Join)

连表查询(Join)是将多个表按某些条件连接在一起查询的方式。MySQL 支持多种类型的联接操作,包括 INNER JOINLEFT JOINRIGHT JOINFULL OUTER JOIN

  • INNER JOIN:返回两个表中符合连接条件的记录(交集)。
  • LEFT JOIN:返回左表所有记录和右表匹配的记录,如果右表没有匹配的记录,结果中会包含 NULL
  • RIGHT JOIN:返回右表所有记录和左表匹配的记录,如果左表没有匹配的记录,结果中会包含 NULL

 

INNER JOIN

SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.department_id;

这个查询返回员工和他们所属部门的名字,只有那些在部门中有记录的员工才会被返回。

 

 

LEFT JOIN

 以左驱动表employees为主 

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.department_id;

这个查询返回所有员工的名字以及他们所属部门的名字。如果某个员工没有部门,会显示 NULL

 RIGHT JOIN
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.department_id;

这个查询返回所有部门的名字以及部门中所有员工的名字。如果某个部门没有员工,会显示 NULL

 

posted @ 2025-03-26 16:49  蜗牛般庄  阅读(12)  评论(0)    收藏  举报
Title
页脚 HTML 代码