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语句操作时为什么取别名以及作用
推荐阅读
-
Access数据库多表连接查询
-
MySQL之终端Terminal(dos界面)管理数据库、数据表、数据的基本操作_MySQL
-
C++对Mysql数据库的访问查询(基于Mysql5.0的API,vs2010中操作
-
mysql-msql的索引和表查询的操作
-
安装好MySQL数据库之后的操作步骤及建表命令
-
远程打开mysql很卡,是什么原因?特别是打开数据库表的时候或是打开查询框的时候。
-
PHP使用数据库永久连接方式操作MySQL的是与非
-
Java Maven:spring boot + Mybatis连接MySQL,通用mapper的增删改查,映射实现多表查询
-
Java连接MySQL 数据库的正确操作流程
-
求一将mysql一数据库下多表循环合并查询语句?该怎么处理