欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL数据库表操作多表连接查询

程序员文章站 2022-06-23 14:24:07
本篇介绍了如何通过 MySQL 连接查询(JOIN)从多个表中返回关联数据,具体包括内连接INNER JOIN、左外连接LEFT OUTER JOIN、右外连接RIGHT OUTER JOIN、交叉连接CROSS JOIN、自然连接NATURAL JOIN)以及自连接等。...



18.1 连接查询

关系型数据库通常采用规范化的设计方式,将不同的实体对象和它们之间的联系存储到多个表中。比如员工的个人信息存储在 employee 表中,部门相关的信息存储在 department 表中,同时 employee 表中存在一个外键字段(dept_id),引用了 department 表的主键字段。

因此,当我们想要查看员工的个人信息以及他/她所在的部门信息,就需要同时查询 employee 和 department 表中的信息。此时,我们需要使用连接查询。连接查询(join)可以基于两个表中的连接字段将数据行拼接到一起,返回两个表中的相关数据。

以下查询返回了人力资源部门中的所有员工信息:

select d.dept_id, e.dept_id, dept_name, e.emp_name, e.sex from employee e join department d on e.dept_id = d.dept_id where dept_name = '人力资源部'; 

其中, JOIN 表示连接查询,连接 employee 表和 department 表;ON 用于指定连接条件,这里表示 employee 中的部门编号等于 department 的部门编号。另外,查询语句中的 e 和 d 都是表的别名,当存在两个同名的字段时可以通过别名指定字段的来源。

该查询返回的结果如下:

dept_id|dept_id|dept_name |emp_name |sex| -------|-------|-------------|-----------|---| 2| 2|人力资源部 |诸葛亮 || 2| 2|人力资源部 |黄忠 || 2| 2|人力资源部 |魏延 || 

以上示例使用 JOIN 和 ON 关键字指定表的连接查询,属于 ANSI SQL/92 标准语法;对于该查询,也可以使用 FROM 和 WHERE 实现如下:

select d.dept_id, e.dept_id, dept_name, e.emp_name, e.sex from employee e, department d where dept_name = '人力资源部' and e.dept_id = d.dept_id; 

这种使用 FROM 和 WHERE 关键字指定表的连接属于 ANSI SQL/86 标准。


相关标签: MySQL 连接查询