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. Lab 6:uC/OS II
  2. spring security 认证与权限控制
  3. BiSeNet V2论文及源码
  4. 大数据学习笔记24:利用MR改造Zebra项目
  5. python把文件中的邮箱分类 保存到相应的文件里面
  6. java 数组存入数据库_哔站播放量高达三百万的Java视频教程,如此惊人,还不来学?...
  7. crt测试显示器软件,MonitorTest(显示器性能测试软件)
  8. MySQL - SELECT LAST_INSERT_ID() 使用总结
  9. 前方高能!公司来了一个low逼程序员
  10. MFS分布式文件系统
  11. xml分页php采集,海洋cms自动采集脚本可分页
  12. 一位女测试工程师的成长
  13. 洗牌 --网易有道2017内推编程题
  14. Leetcode-至多包含两个不同字符的最长子串
  15. C#中的作用Read()和ReadLine()
  16. Android 应用A开启应用B
  17. 天下数据支招如何防范域名被劫持
  18. 更进阶的实战效率、更准确的研究成果——欢迎参加材料计算PWmat进阶小组会
  19. split()方法,limit参数作用
  20. 电脑双屏显示变单屏后部分程序无法在当前屏幕显示的问题

热门文章

  1. (分治)7617:输出前k大的数
  2. 解决百度 ueditor v1.4.3 编辑器上传图片失真的bug?
  3. ASP.NET:插件化机制
  4. 排序1+3:基数排序(RadixSort),希尔排序(ShellSort)和快速排序(QuickSort)
  5. [转载] 卷积神经网络做mnist数据集识别
  6. [转载] Python-类变量,成员变量,静态变量,类方法,静态方法,实例方法,普通函数
  7. RIA and volta
  8. ROS工作空间和程序包创建
  9. hibernate Day1 案例代码
  10. JavaScript正则表达式补充