sqljoinexample.有一个旧的笑话。SQL查询散到栏中,看到两个表。他走遍了,问他是否可以加入它们......笑话来自“如果你没有笑,你会哭”的编程。对于某些人使用SQL连接示例的课程是他们放弃数据库编程和学习SQL时的点,而且可以找到一个酒吧!

SQL连接可能有点棘手。但请不要戒烟 - 一旦你有“GOTCHA”时刻,你会想知道所有的大惊小怪是什么!首先,如果您是新的,或生锈的基本SQL - 请查看此SQL简介

你已经相信我 - 什么加入?

关系数据库的整点是以消除重复的方式将数据分组在表中。它有效。如果您认为人事部门现在被称为人力资源 - 这是一件好事,你只需要在部门表中更改一次名称,而不是人事表中的300次,为本部门的每个员工。

因此,在设计一个您要分隔不同数据的关系数据库时。我们将员工留在一张桌子上,我们将工作任务保持在另一个桌子上需要技能。在现实生活中,它可能会比这更复杂,但在这里和我在一起,我正在说大局。如果您想了解详细信息,请查看SQL数据库介绍初学者课程。

但是,一旦您设计了一个精美的高效或规范化的数据库,沿着讨厌的用户讨论讨厌的查询。查询或报告总是需要来自多个表的数据。

在我们的示例中,老板希望了解她的哪些员工有匹配客户的工作请求的技能。这是否意味着您需要重新设计您的数据库?如果您将所有内容下载到电子表格中并在那里组成新桌子?noooooo!

你需要什么是一个加入。加入是一种跨表查询的方法,并使用生成的临时表来报告结果。

SQL连接示例#1内联连接

内连接有时被称为简单的连接。这样想:在左边你有一束有一些技能的员工,在右边你有一些需要一些需要为员工分配的特定技能的工作。你检查工作人员技能和工作要求之间的重叠,这是老板想要的报告。

如果问题所在的问题是“哪些员工有技能进行这些作业?”- 答案是内部连接。

我们将在SQL连接示例中使用几个荒谬的简单数据表。

职员

名称 哈希尔
玛丽 网页设计
何塞 PHP.
鲍勃 SQL.

工作

乔迪 skillreq.
J001. 文案
J002. SQL.
J003 PHP.

内部连接:

选择员工.Name,员工.Hasskill,Job.jobid从员工内心加入工作员工.Hasskill = Job.skillreq;

会返回:

名称 哈希尔 乔迪
何塞 PHP. J003
鲍勃 SQL. J002.

SQL连接示例#2外连接

这是一个更包含的东西 - 外部连接有几个版本:完整,左右。

为我们的目的,让我们的人民留在左边和客户的工作。

全外连接示例

完整的外部连接是非常包容的,温暖且政治上的正确,SQL加入。The result of a full outer join in our example is a long list of every person in the office, matching any job that required their skills, plus those employees with skills that don’t match any jobs (woops time to upskill!), plus jobs that require skills that no one has (time to hire!). Not every row will be complete, there will blanks (nulls) for the columns where there was no match in the other table.

选择员工.Name,员工.Hasskill,Job.skillreq,job.jobid从员工完整的外部加入工作员工.Hasskill = Job.skillreq;
名称 哈希尔 skillreq. 乔迪
玛丽 网页设计
何塞 PHP. PHP. J003
鲍勃 SQL. SQL. J002.
文案 J001.

左外连接示例

或者我们可能是一个工人友好的工作场所 - 并实施左外连接。这将包括办公室中的每个人,即使他们的技能是不需要的,也加上了所需技能所涵盖的技能。所以我们的左边加入有点社会主义者!它们包括所有员工,但只包括需要技能员工的工作。

选择员工.Name,员工.Hasskill,Job.Jobid从员工留下外部加入工作员工.Hasskill = Job.skillreq;
名称 哈希尔 乔迪
玛丽 网页设计
何塞 PHP. J003
鲍勃 SQL. J002.

右外连接示例

如果我们有点担心底线,也许我们使用正确的外连接。这次我们只列出了那些有工作所需技能的员工,以及任何有技能要求的工作我们与员工不匹配。现在重点是右边和有点保守!

选择员工.Name,Job.skillreq,job.jobid从员工的外部加入工作员工.Hasskill = Job.skillreq;
名称 skillreq. 乔迪
何塞 PHP. J003
鲍勃 SQL. J002.
文案 J001.

SQL连接示例#3自行连接

这略微向内了解。但如果你想到我们的热衷工作者并考虑其中一些人可能是主管。自我加入可能很有用,可以识别所有有技能的人都有所做的工作加上的人是监事。或许我们在澳大利亚和纽约的其他人有一些员工。我们需要一个自助,以确定我们在澳大利亚生活的哪些熟练的SQL程序员。

你为什么要关心SQL加入

如果您没有自信使用加入,那么您当然不是唯一的一个。大量的程序员试图避免加入并寻找替代方案。其中一个最受欢迎的替代方案是嵌套的选择语句。这是懒惰的编程。当您的表填充数据时,这将变得明显,要求机器在查询上对递归查询进行递归查询时,它很慢,真实慢。用连接替换查询,数据库性能会显着提高。

了解SQL Joins可以为您做什么

想要添加复杂的搜索表格到您的网站?您需要了解SQL连接。

想要学习许多大公司使用的行业标准数据库语言,雇用您需要知道的程序员Oracle及其SQL版本

另外,一旦您掌握了SQL Joins - 您将获得该旅程到酒吧!

SQL中的顶级课程

SQL棘手的面试问题准备课程
知识专业房间!
4.4 (199)
SQL和PostgreSQL:完整的开发人员指南
斯蒂芬格莱德里
4.7 (1,264)
收视率最高
完整的SQL Bootcamp 2021:从零到英雄
何塞波罗拉
4.7 (96,882)
畅销书
Ultimate MySQL BootCamp:从SQL初学者到专家
Colt Steele,Ian Schoonover
4.6 (53,072)
畅销书
SQL - 用于数据分析和商业智能的MySQL
365职业
4.6 (26,979)
畅销书
完整的SQL和数据库Bootcamp:零掌握[2021]
安德烈Neageie,Mo Binni
4.6 (1,355)
SQL for初学者:使用MySQL和数据库设计学习SQL
Tim Buchalka的学习编程学院,Jon Avis - SQL教练
4.5 (8,991)
SQL&PostgreSQL为初学者:成为一个SQL专家
Jon Avis - SQL教练
4.5 (3,115)
畅销书
为SQL Server管理员学习高级T-SQL
Raphael Asghar.
4.4 (415)
使用BigQuery应用数据分析/数据科学的SQL
杰夫·詹姆斯
4.8 (20)
收视率最高

更多SQL课程

SQL学生还学习

赋予你的团队。引领行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求演示