3分钟快速了解内连接,左连接,右连接,全外连接

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。3分钟快速了解内连接,左连接,右连接,全外连接,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

假设我们有两个表:employeesdepartmentsemployees 表包含员工信息,departments 表包含部门信息。下面是这两个表的简化结构:

employees 表:

  • employee_id (员工ID)
  • first_name (名字)
  • last_name (姓氏)
  • department_id (部门ID)

departments 表:

  • department_id (部门ID)
  • department_name (部门名称)

我们将使用四种类型的连接操作演示如何将这两个表的数据关联起来。使用以下示例数据进行操作:

employees 表数据:

employee_id first_name last_name department_id
1 John Doe 1
2 Jane Smith 2
3 Mike Johnson 2
4 Sarah Brown NULL

departments 表数据:

department_id department_name
1 HR
2 IT
3 Finance

我们将使用别名(e 表示 employeesd 表示 departments)重写上述查询,并展示查询结果:

  1. INNER JOIN(内连接):
SELECT e.first_name, e.last_name, d.department_name
FROM employees AS e
INNER JOIN departments AS d ON e.department_id = d.department_id;

查询结果:

first_name last_name department_name
John Doe HR
Jane Smith IT
Mike Johnson IT

此查询将列出所有员工及其所属部门。INNER JOIN 只返回两个表中都有匹配的行。

  1. LEFT JOIN(左连接):
SELECT e.first_name, e.last_name, d.department_name
FROM employees AS e
LEFT JOIN departments AS d ON e.department_id = d.department_id;

查询结果:

first_name last_name department_name
John Doe HR
Jane Smith IT
Mike Johnson IT
Sarah Brown NULL

此查询将列出所有员工及其所属部门。如果某个员工没有部门,将显示 NULL 值。LEFT JOIN 返回左表中的所有行,即使在右表中没有匹配。

  1. RIGHT JOIN(右连接):
SELECT e.first_name, e.last_name, d.department_name
FROM employees AS e
RIGHT JOIN departments AS d ON e.department_id = d.department_id;

查询结果:

first_name last_name department_name
John Doe HR
Jane Smith IT
Mike Johnson IT
NULL NULL Finance

此查询将列出所有员工及其所属部门。如果某个部门没有员工,将显示 NULL 值。RIGHT JOIN 返回右表中的所有行,即使在左表中没有匹配。

  1. FULL OUTER JOIN(全外连接):
SELECT e.first_name, e.last_name, d.department_name
FROM employees AS e
FULL OUTER JOIN departments AS d ON e.department_id = d.department_id;

查询结果:

first_name last_name department_name
John Doe HR
Jane Smith IT
Mike Johnson IT
Sarah Brown NULL
NULL NULL Finance

全外连接(FULL OUTER JOIN)是一种连接操作,它返回两个表中所有的行。如果某一行在另一个表中没有匹配项,则结果集中将显示 NULL 值。换句话说,全外连接将返回左连接(LEFT JOIN)和右连接(RIGHT JOIN)的结果的并集。

在上述示例中,FULL OUTER JOIN 查询结果包含了 employeesdepartments 表中的所有行。以下是查询结果:

first_name last_name department_name
John Doe HR
Jane Smith IT
Mike Johnson IT
Sarah Brown NULL
NULL NULL Finance

如您所见,全外连接返回了以下内容:

  1. 两个表中都有匹配项的行:John Doe(HR)、Jane Smith(IT)和 Mike Johnson(IT)。
  2. 只在 employees 表中存在的行:Sarah Brown。这个员工没有与之关联的部门,所以 department_name 列显示 NULL。
  3. 只在 departments 表中存在的行:Finance。这个部门没有与之关联的员工,所以 first_namelast_name 列显示 NULL。

总之,全外连接查询返回了两个表中所有可能的关联行,无论它们是否实际关联。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/181635.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!