sql联接查询

SQL Joins combine two or more tables together based on the corresponding common column among them.

SQL Join根据其中的对应公共列将两个或多个表组合在一起。

Note: All the below mentioned queries are executed with reference to MySQL Database.

注意: 下面提到的所有查询都是参照MySQL数据库执行的



SQL连接的类型 (Types of SQL Joins)

  • INNER JOIN内部联接
  • LEFT OUTER JOIN左外连接
  • RIGHT OUTER JOIN右外连接
  • FULL OUTER JOIN全外连接
  • SELF JOIN自我加入


1.内联 (1. INNER JOIN)

SQL INNER JOIN basically serves as the intersection of two or more tables. It returns elements that are common to both of the tables.

SQL INNER JOIN基本上用作两个或多个表的交集。 它返回两个表共有的元素。

SQL Joins – Inner JoinSQL连接–内部连接

Let’s use the following tables to serve and understand the purpose of SQL Joins.

让我们使用下表来服务和理解SQL连接的目的。

Table name: Information

表名:信息

Employee Id Manager Id Batch
1 1 A
2 2 B
3 5 A
员工ID 经理编号 批量
1个 1个 一个
2 2
3 5 一个

Table name: Manager_Details

表名称:Manager_Details

Manager Id Name City Age
1 Safa Mulani Pune 52
2 Aman Mulani Satara 25
3 Divya Trivedi Mumbai 24
经理编号 名称 年龄
1个 萨法·穆拉尼(Safa Mulani) 浦那 52
2 阿曼·穆拉尼(Aman Mulani) 萨塔拉 25
3 迪维亚·特里维迪(Divya Trivedi) 孟买 24

Syntax:

句法:

SELECT Column_Names
FROM Table1
INNER JOIN Table2
ON Table1.Column_Name = Table2.Column_Name;

Example:

例:


SELECT Information.Employee_Id, Manager_details.Manager_Id, Manager_details.Name
FROM Information
INNER JOIN Manager_details ON Information.Manager_Id = Manager_details.Manager_Id;

Output:

输出:

1   1   Safa Mulani
2   2   Aman Mulani


2.左外连接 (2. LEFT OUTER JOIN)

SQL LEFT OUTER JOIN returns all the elements from the left table(i.e. Table1) and the corresponding matched elements from the right table(i.e. Table2).

SQL LEFT OUTER JOIN返回左表(即Table1)中的所有元素和右表(即Table2)中的对应匹配元素。

If the appropriate match isn’t found, it returns NULL values for the unmatched right table column values.

如果找不到合适的匹配项,则它为不匹配的右表列值返回NULL值。

SQL Joins – Left JoinSQL联接–左联接

Syntax:

句法:

SELECT Column_Names
FROM Table1
LEFT JOIN Table2
ON Table1.Column_Name = Table2.Column_Name;

Example:

例:


SELECT Information.Employee_Id, Manager_details.Manager_Id, Manager_details.Name
FROM Information
LEFT JOIN Manager_details ON Information.Manager_Id = Manager_details.Manager_Id;

Output:

输出:

1 1   Safa Mulani
2   2   Aman Mulani
3   NULL    NULL


3.右外连接 (3. RIGHT OUTER JOIN)

SQL RIGHT OUTER JOIN returns all the elements from the right table(i.e. Table2) and the corresponding matched elements from the left table(i.e. Table1).

SQL RIGHT OUTER JOIN返回右表(即Table2)中的所有元素和左表(即Table1)中的对应匹配元素。

If the appropriate match isn’t found, it returns NULL values for the unmatched left table column values.

如果找不到合适的匹配项,则它为不匹配的左表列值返回NULL值。

SQL Joins – Right JoinSQL连接–右连接

Syntax:

句法:

SELECT Column_Names
FROM Table1
RIGHT JOIN Table2
ON Table1.Column_Name = Table2.Column_Name;

Example:

例:


SELECT Information.Employee_Id, Manager_details.Manager_Id, Manager_details.Name
FROM Information
RIGHT JOIN Manager_details ON Information.Manager_Id = Manager_details.Manager_Id;

Output:

输出:

1   1   Safa Mulani
2   2   Aman Mulani
NULL    3   Divya Trivedi


4.完整的外部连接 (4. FULL OUTER JOIN)

SQL FULL JOIN basically represents all the elements which either matches the elements from the left table or the right table.

SQL FULL JOIN基本上表示与左表或右表中的元素匹配的所有元素。

If the rows of either of the tables do not match each other, still the elements will be represented with NULL values attached to it.

如果两个表中的任何一个表的行都不匹配,则仍将使用NULL值来表示元素。

SQL JOINS – Full JoinSQL联接–完全联接

Syntax:

句法:

SELECT Column_Names
FROM Table1
FULL OUTER JOIN Table2
ON Table1.Column_Name = Table2.Column_Name;

Most of the Databases such as SQLite, MySQL, etc do not support FULL OUTER Joins.

大多数数据库,例如SQLiteMySQL等,都不支持FULL OUTER Joins。

In order to serve the purpose, we need to modify the query and make use of UNION clause to provide the functionalities of the FULL OUTER JOIN.

为了达到目的,我们需要修改查询并利用UNION子句来提供FU​​LL OUTER JOIN的功能。

Syntax:

句法:

SELECT Column_Names
FROM Table1
LEFT OUTER JOIN Table2
ON Table1.Column_Name = Table2.Column_Name
UNION
SELECT Column_Names
FROM Table1
RIGHT OUTER JOIN Table2
ON Table1.Column_Name = Table2.Column_Name;

Example:

例:


SELECT Information.Employee_Id, Manager_details.Manager_Id, Manager_details.Name
FROM Information
LEFT OUTER JOIN Manager_details ON Information.Manager_Id = Manager_details.Manager_Id
UNION
SELECT Information.Employee_Id, Manager_details.Manager_Id, Manager_details.Name
FROM Information
RIGHT OUTER JOIN Manager_details ON Information.Manager_Id = Manager_details.Manager_Id;

Output:

输出:

1   1   Safa Mulani
2   2   Aman Mulani
3   NULL    NULL
NULL    3   Divya Trivedi


5.自我加入 (5. SELF JOIN)

SQL SELF JOIN represents a join to itself. i.e it renames the table, gives alias names to the corresponding table.

SQL SELF JOIN表示自身的联接。 即,它重命名表,为相应的表提供别名。

Syntax:

句法:

SELECT Column_Name
FROM Table1 A, Table1 B
WHERE condition;

Here, A and B are the alias names given to the same Table1.

此处,A和B是赋予同一表1的别名。

Example:

例:


SELECT  a.Manager_Id, b.Name, a.City
FROM Manager_details a, Manager_details b
WHERE a.Age > 24 AND b.Age > 24;

Output:

输出:

1   Safa Mulani Pune
2   Safa Mulani Satara
1   Aman Mulani Pune
2   Aman Mulani Satara


结论 (Conclusion)

Thus, in this article, we have understood the functionalities of SQL Joins.

因此,在本文中,我们了解了SQL Joins的功能。



参考 (Reference)

  • MySQL DocumentationMySQL文档

翻译自: https://www.journaldev.com/34084/sql-joins

sql联接查询

sql联接查询_SQL联接相关推荐

  1. sql镶嵌查询_sql数据库的嵌套查询

    实验四:数据库的嵌套查询实验 学号: 姓名: 实验四:数据库的嵌套查询实验 实验目的: 加深对嵌套查询语句的理解. 实验内容: 使用 IN . 比较符. ANY 或 ALL 和 EXISTS 操作符进 ...

  2. sql三表查询_SQL第五关:多表查询

    学习内容: 表的加法 表的联结 联结应用案例 case表达式 表的加法 学校数据库里的课程表(course),新建课程表(course 1),数据结果一样,新建数据内容不一样. 加法:把两个表的数据按 ...

  3. sql镶嵌查询_SQL语句 - 嵌套查询

    嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询.其中外层查询也称为父查询,主查询.内层查询也称子查询,从查询. ...

  4. sql镶嵌查询_SQL数据查询之——嵌套查询

    一.概念描述 在SQL语言中,一个 SELECT-FROM-WHERE 语句称为一个查询块.将一个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的条件中的查询称为 嵌套查询.例如: ...

  5. sql镶嵌查询_SQL 嵌套查询

    说到嵌套查询,首先得理解嵌套查询是什么意思,简单来说就是,一个查询语句可以嵌套在另外一个查询语句的where子句中.外层的查询称为父查询(主查询),内层的查询称为子查询(从查询). 嵌套查询的工作方式 ...

  6. 多表查询【联接查询】

    六.多表查询[联接查询] 联接查询是又笛卡尔乘积运算再加一个选取运算构成的查询.首先用笛卡尔乘积完成对两个数据集合的乘运算,然后对生成的结果集合进行选取运算,确保只把分别来自两个数据集合并且有重叠部分 ...

  7. 表的联接查询之连接查询

    外连接 外联接主要分为3个 语法基本与内联接一致,关键字不同,作用不同 1. 左外联接 left outer join - on - 取左表全部记录与右表匹配,保证左表全部在新的表当中含有,不匹配的用 ...

  8. SQL语句汇总(终篇)—— 表联接与联接查询

    上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需要用到表联接. 和之前的UNION组合查询不同,UNION是将不同的表组合起来,也就是纵向联接,说白了就是竖着拼起来. ...

  9. SQL Sever联接查询

    联接查询:是有一个笛卡尔乘积运算再加一个选取运算构成的查询. 首先用笛卡尔乘积完成对两个数据集合的乘运算,然后对生成的结果集合进行选取运算,确保只把分别来自两个数据集合并且具有重叠部分的行合并在一起. ...

最新文章

  1. 物联网设备天线设计与选型指南
  2. 手低眼高 初学者学习Hibernate的方法
  3. Linux下Bash入门学习笔记
  4. boost::geometry::util::calculation_type用法的测试程序
  5. Shell学习笔记 - 环境变量配置文件(转)
  6. 操作系统--中断和异常
  7. Java-OpenCV(一)准备工作
  8. 存储过程-----DECLARE---实用注意事项
  9. sublime3使用笔记
  10. 定制Dynamics CRM标准导出功能:不能导出指定列的值
  11. java 反射 getClass()
  12. Xshell远程连接服务器
  13. windows系统中如何新建桌面
  14. 爬虫-12306余票查询
  15. Simulink基于level 2的s-function C语言编写
  16. Code Complete《代码大全》读书笔记
  17. Java实现火车购票系统功能
  18. 双目立体匹配_DispNet网络
  19. 使用数据库连接池建立数据库连接
  20. 操作系统之文件管理(一)

热门文章

  1. 唱吧DevOps的落地,微服务CI/CD的范本技术解读
  2. Educational Round 26 C. Two Seals
  3. 编译器在构造函数里都做了些什么?
  4. java io读书笔记(8)FileInputStream/FileOutputStream的应用
  5. ComBox 绑定数据库
  6. [转载] lstm时间序列预测_pytorch入门使用PyTorch进行LSTM时间序列预测
  7. [转载] Python全栈(1)—— Python如何快速下载库与jupyter notebook 的基本使用
  8. [带权并查集] Jzoj P1503 体育场
  9. Eclipse------新建文件时没有JSP File解决方法
  10. Postman界面介绍及实例(转)