登录 |  注册
首页 >  面试合集 >  Java面试宝典(第三部分·高级) >  MySQL的内连接、左连接、右连接的区别

MySQL的内连接、左连接、右连接的区别

基本定义:   

  • left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。

  • right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。

  • inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。

  • full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。

1、内联接

(典型的联接运算,使用像 =  或 <> 之类的比较运算符)。包括相等联接和自然联接。     

内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。   

2、外联接

外联接可以是左向外联接、右向外联接或完整外部联接。     

在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:    

1)LEFT  JOIN或LEFT OUTER JOIN     

左向外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。      

2)RIGHT  JOIN 或 RIGHT  OUTER  JOIN     

右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。       

3)FULL  JOIN 或 FULL OUTER JOIN

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。   

3、交叉联接   

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。    

FROM 子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关使用左或右向外联接排列表的更多信息,请参见使用外联接。     

示例:

A表          
    id   name  
   1  小王
   2  小李
   3  小刘
B表
  id  A_id  job
  1  2    老师
  2  4    程序员

内连接:(只有2张表匹配的行才能显示)

select a.name,b.job from A a  inner join B b on a.id=b.A_id
   只能得到一条记录
   小李  老师

左连接:(左边的表不加限制)

select a.name,b.job from A a  left join B b on a.id=b.A_id
   三条记录
   小王  null
   小李  老师
   小刘  null

右连接:(右边的表不加限制)

select a.name,b.job from A a  right join B b on a.id=b.A_id
  两条记录
   小李  老师
   null  程序员

全外连接:(左右2张表都不加限制)

select a.name,b.job from A a  full join B b on a.id=b.A_id
   四条数据
   小王  null
   小李  老师
   小刘  null
   null  程序员

注:在sql中l外连接包括左连接(left join )和右连接(right join),全外连接(full join),等值连接(inner join)又叫内连接。

上一篇: MySQL中字段类型float和double的区别
下一篇: Mysql 索引实现原理
推荐文章
  • ASP.NET教程ASP.NET又称为ASP+,基于.NETFramework的Web开发平台,是微软公司推出的新一代脚本语言。ASP.NET是一个使用HTML、CSS、JavaScript和服务器脚本创建网页和网站的开发框架。ASP.NET支持三种不一样的开发模式:WebPages(Web页面)、
  • C# 判断判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。下面是大多数编程语言中典型的判断结构的通常形式:判断语句C#提供了以下类型的判断语句。点击链接查看每个语句的细节。语句描述if语句一个 if语句 由一个布尔表达式后跟
  • C#循环有的时候,可能需要多次执行同一块代码。通常情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的通常形式:循环类型C#提供了以下几种循环类型
  • C#数组(Array)数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,一般认为数组是一个同一类型变量的集合。声明数组变量并不是声明number0、number1、...、number99一个个单独的变量,而是声明一个就像numbers这样的变量,然后使用numbers[0]
  • ASP.NET是一个由微软公司开发的用于构建Web应用程序的框架,它是.NETFramework的一部分。它提供了一种模型-视图-控制器(MVC)架构、Web表单以及最新的ASP.NETCore中的RazorPages等多种开发模式,可以用来创建动态网页和Web服务。以下是一些基础的ASP.NET编
  • 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.Arithmeti
学习大纲