)
https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/563c21b272f8709b264327ebf3dc664e_0.png在本节课中我们将学习SQL中一个非常强大的功能连接表。通过连接我们可以将数据库中不同表的信息组合起来从而获得更全面、更有价值的查询结果。概述上一节我们学习了如何使用SQL进行查询和过滤。本节中我们将介绍如何通过连接操作从多个表中提取和组合数据。这在网络安全分析中非常有用例如将员工信息表与机器信息表连接可以快速识别出使用特定操作系统的员工。连接表的基本语法当我们同时操作两个表时SQL需要明确知道我们引用的列属于哪个表。解决方法是使用表名.列名的格式。例如在示例数据库中employee_id列同时存在于employees表和machines表中。为了区分它们我们这样写employees.employee_id表示employees表中的员工ID列。machines.employee_id表示machines表中的员工ID列。理解了如何引用不同表中的列之后我们就可以开始应用连接操作了。使用内连接假设我们想更深入地了解公司中访问机器的员工情况。通过连接employees表和machines表我们可以实现这个目标。首先我们需要确定用于连接两个表的共享列。通常我们会使用一个表中的主键去连接另一个表中对应的外键。在employees表中employee_id是主键因为它为每一行提供了唯一且非空的值。在machines表中employee_id是外键它引用自employees表的主键。作为外键它不一定满足唯一和非空的约束。接下来我们将使用一种称为内连接的连接方式。内连接会返回在指定列上匹配的行这些行必须同时存在于两个表中。为了更清晰地解释内连接我们来看一个简化的例子。假设我们只关注两个表中的各四行数据。我们选择在两个表中都存在的employee_id列来执行内连接。观察匹配的行两个表在employee_id列上都有值1188和1189因此它们被认为是匹配的。连接的结果就是包含1188和1189的这两行数据以及两个表中的所有列。在继续学习查询之前我们需要了解表中的空值。在SQL中NULL代表由于任何原因导致的缺失值。在我们的例子中这可能代表尚未分配给任何员工的机器。在SQL中执行内连接现在让我们在SQL中对完整的表执行内连接。https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/563c21b272f8709b264327ebf3dc664e_2.png假设我们希望通过连接表获得一个显示用户名、办公室位置及其机器操作系统的列表。employee_id是这两个表之间的公共列我们可以用它来连接。但在最终结果中我们不需要显示这个列。以下是构建查询的步骤首先编写一个基础查询指明我们要选择username、office和operating_system列。我们希望employees表作为第一个左表因此在FROM语句中使用它。接着编写查询中告诉SQL将machines表与employees表连接的部分。让我们分解这个查询INNER JOIN告诉SQL执行内连接。然后我们命名想要与第一个表组合的第二个表这被称为右表。在本例中我们想要连接machines表和FROM后面已指定的employees表。最后我们告诉SQL基于哪一列进行连接。在我们的例子中我们使用employee_id列。由于涉及两个表我们必须指明表名后跟列名即employees.employee_id和machines.employee_id。完整的查询语句如下SELECTusername,office,operating_systemFROMemployeesINNERJOINmachinesONemployees.employee_idmachines.employee_id;让我们回顾一下输出结果。很好我们已经成功连接了两个表。查询结果显示的是在employee_id列上匹配的记录。请注意这些记录包含了来自两个表的列但仅限于我们通过SELECT语句指定的那些列。总结https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/563c21b272f8709b264327ebf3dc664e_4.png本节课中我们一起学习了SQL中的表连接操作。我们首先了解了在涉及多表时需要使用表名.列名的语法来明确引用列。接着我们重点学习了内连接它能够基于两个表共有的列通常是主键-外键关系来合并匹配的行。通过一个具体的查询示例我们实践了如何使用INNER JOIN ... ON ...语句来组合employees和machines表从而获得包含用户信息及其对应机器操作系统的结果集。除了内连接SQL还支持其他类型的连接它们不要求严格的匹配就能合并表。我们将在下一个视频中讨论这些连接类型。08239_02_连接类型https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/8bc77e9f4da4905f176f46941fd08614_0.pnghttps://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/8bc77e9f4da4905f176f46941fd08614_0.png概述在本节课中我们将要学习 SQL 中的外连接。上一节我们介绍了内连接本节中我们来看看如何通过外连接来获取更完整的数据集。外连接简介内连接仅返回在指定列中具有匹配值的记录。然而在某些情况下我们可能需要获取一个或两个表中的所有条目。这时就需要使用外连接。外连接有三种类型左连接、右连接和全外连接。与外连接类似外连接也是将两个表组合在一起。但是它们不要求列之间必须匹配才能返回行。返回哪些行取决于连接的类型。左连接左连接返回第一个表的所有记录但只返回第二个表中在指定列上有匹配的行。让我们通过查看两个只有少量列和四行数据的表来研究这种连接类型。employees表是左表第一个表machines表是右表第二个表。我们以employee_id列进行连接。该列在两表中只有两条记录有匹配值。当我们执行连接时SQL 会返回这些具有匹配值的行、左表的所有其他行以及两个表的所有列。来自employees表但未匹配的记录通过左连接返回时在来自machines表的列中会包含空值。以下是左连接的语法结构SELECT*FROMtable1LEFTJOINtable2ONtable1.columntable2.column;右连接右连接返回第二个表的所有记录但只返回第一个表中在指定列上有匹配的行。使用上一个例子进行右连接完整的结果会返回两个表的匹配行、第二个表的所有行以及两个表的所有列。对于任一表中不存在的值我们会得到一个空值。以下是右连接的语法结构SELECT*FROMtable1RIGHTJOINtable2ONtable1.columntable2.column;全外连接最后我们来讨论全外连接。全外连接返回两个表中的所有记录。使用我们相同的例子全外连接返回所有表的所有列。如果某一行在特定列上没有值则返回空值。例如machines表中没有任何employee_id为 1190 的行因此该行在来自machines表的列中的值就是空值。以下是全外连接的语法结构SELECT*FROMtable1FULLOUTERJOINtable2ONtable1.columntable2.column;https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/8bc77e9f4da4905f176f46941fd08614_2.png总结本节课中我们一起学习了 SQL 中三种外连接左连接、右连接和全外连接。它们在语法结构上与内连接相似但使用LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN这些关键字。作为安全分析师你不需要死记硬背所有这些内容。一旦理解了所需的连接类型你可以快速搜索并找到执行这些查询所需的全部信息。掌握了这些关于连接的知识我们就涵盖了作为使用 SQL 的安全分析师所需的一些非常重要的信息。https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/8bc77e9f4da4905f176f46941fd08614_2.png083总结回顾https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/f7f0592c3db859dcee9317a7c03e8c3e_0.pnghttps://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/f7f0592c3db859dcee9317a7c03e8c3e_0.png在本节课中我们将一起回顾并总结SQL部分所学的全部核心知识与技能。恭喜你我们已经共同完成了SQL部分的学习。你付出了很多努力并掌握了一项对安全分析师职业生涯至关重要的工具。现在让我们花点时间回顾一下你在本部分学到的所有主题。 本部分学习内容回顾上一节我们完成了SQL连接的学习现在我们来整体回顾一下学习路径。以下是我们在本部分涵盖的核心主题关系数据库与SQL基础我们首先学习了关系数据库的结构以及如何使用SQL查询语言来访问它们。动手编写SQL查询我们通过实践练习了如何编写自己的SQL查询语句。**应用SQL进行信息检索**我们使用SQL来提取作为分析师在工作中可能需要的信息。掌握SQL过滤器我们深入学习了SQL过滤。从简单的字符串条件开始到最后我们学会了如何在一个查询中使用多个过滤器。使用SQL连接表我们以SQL连接作为本单元的结尾学习了如何连接多个表从而一次性获取更多信息。https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/f7f0592c3db859dcee9317a7c03e8c3e_2.pnghttps://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/f7f0592c3db859dcee9317a7c03e8c3e_2.png 学习成果与后续建议完成本课程意味着你在未来成为安全分析师的职业生涯中迈出了非常重要的一步。你已经接触到了一个能在工作中为你提供强大助力的工具。学习像SQL这样的查询语言需要时间。因此无论何时你需要我都鼓励你重新回顾本课程的材料。再次感谢你与我一同完成这段学习旅程。希望你也能像我一样享受使用SQL的过程。https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/f7f0592c3db859dcee9317a7c03e8c3e_4.pnghttps://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/f7f0592c3db859dcee9317a7c03e8c3e_4.png总结本节课中我们一起回顾了SQL部分的学习历程从数据库基础、查询编写、数据过滤到多表连接巩固了作为安全分析师所需的核心数据操作技能。请记住持续练习是掌握SQL的关键。084课程总结 https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/2219e1718d6a44727f98210acf3a89dc_0.png在本节课中我们将回顾《工具之道Linux与SQL》这门课程的核心内容总结所学知识并为后续学习做好准备。课程概述您已经完成了本课程的学习。恭喜您取得了这一成就。希望您为所学到的一切感到自豪。本课程的重点是计算基础。理解计算基础是您转型为安全分析师过程中的一项宝贵技能。课程内容回顾上一节我们介绍了课程的整体目标本节中我们来具体回顾一下所学内容。以下是本课程涵盖的核心主题操作系统基础我们首先关注操作系统及其与应用程序和硬件的关系。理解您所保护的系统如何运作对于有效完成工作至关重要。Linux操作系统这引导我们进入Linux操作系统。在安全领域工作时熟悉Linux非常重要。我们首先讨论了它的体系结构和各种发行版。Linux命令行实践然后我们使用Linux命令行来执行安全分析师可能遇到的任务。SQL数据库查询最后我们探讨了另一个有用的工具并使用SQL来查询数据库。学习收获与展望https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/2219e1718d6a44727f98210acf3a89dc_2.png完成本课程后希望您能更好地理解这些计算基础如何支持安全分析师的日常工作。同时也希望您能继续在这个专业项目中前进。前方还有许多其他有用且令人兴奋的主题。再次恭喜您。您完成了又一项课程。掌握技能是值得自豪的事情。请在本项目的后续学习中继续保持。总结https://github.com/OpenDocCN/sec-notes-zh/raw/master/docs/ggl-cbrsec-4/img/2219e1718d6a44727f98210acf3a89dc_4.png本节课中我们一起学习了《工具之道Linux与SQL》课程的核心要点包括操作系统原理、Linux体系结构与命令行操作以及SQL数据库查询。这些基础知识是您未来在网络安全领域深入发展的坚实起点。请带着这些收获自信地迎接后续的挑战。