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

文章目录

    • 18.1 连接查询
    • 18.2 内连接
    • 18.3 左外连接
    • 18.4 右外连接
    • 18.5 全外连接
    • 18.6 交叉连接
    • 18.7 自然连接
    • 18.8 自连接
    • 18.9 多表连接

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 标准。

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐