文档章节

SQL 左外连接,右外连接,全连接,内连接

整俩硬菜
 整俩硬菜
发布于 2012/11/07 16:44
字数 785
阅读 20
收藏 0

联接条件可在   FROM   或   WHERE   子句中指定,建议在   FROM   子句中指定联接条件。WHERE   和   HAVING   子句也可以包含搜索条件,以进一步筛选联接条件所选的行。   
   
联接可分为以下几类:     
   
内联接(典型的联接运算,使用像   =   或   <>   之类的比较运算符)。包括相等联接和自然联接。    
内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索   students   和   courses   表中学生标识号相同的所有行。   
   
外联接。外联接可以是左向外联接、右向外联接或完整外部联接。    
在   FROM   子句中指定外联接时,可以由下列几组关键字中的一组指定:   
   
LEFT   JOIN   或   LEFT   OUTER   JOIN。    
左向外联接的结果集包括   LEFT   OUTER   子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。   
   
RIGHT   JOIN   或   RIGHT   OUTER   JOIN。    
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。   
   
FULL   JOIN   或   FULL   OUTER   JOIN。    
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。   
   
交叉联接。    
交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。   
   
例如,下面的内联接检索与某个出版商居住在相同州和城市的作者:  
   
  USE   pubs  
  SELECT   a.au_fname,   a.au_lname,   p.pub_name  
  FROM   authors   AS   a   INNER   JOIN   publishers   AS   p  
        ON   a.city   =   p.city  
        AND   a.state   =   p.state  
  ORDER   BY   a.au_lname   ASC,   a.au_fname   ASC   
   
FROM   子句中的表或视图可通过内联接或完整外部联接按任意顺序指定;但是,用左或右向外联接指定表或视图时,表或视图的顺序很重要。有关使用左或右向外联接排列表的更多信息,请参见使用外联接。     
    
例子:  
  a表     id   name     b表     id   job   parent_id  
              1   张3                   1     23     1  
              2   李四                 2     34     2  
              3   王武                 3     34     4  
   
  a.id同parent_id   存在

关系  
   
  内连接  
  select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id  
   
  结果是    
  1   张3                   1     23     1  
  2   李四                2     34     2  
   
  左连接   
  select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id  
   
  结果是    
  1   张3                   1     23     1  
  2   李四                 2     34     2  
  3   王武                 null   

  右连接  
  select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id  
   
  结果是    
  1   张3                   1     23     1  
  2   李四                 2     34     2  
  null                 3     34     4  
   
  完全连接   
  select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id   

  结果是    
  1   张3                   1     23     1  
  2   李四                 2     34     2  
  null                 3     34     4  
  3   王武                 null

© 著作权归作者所有

整俩硬菜
粉丝 30
博文 9
码字总数 3540
作品 0
西安
私信 提问
SQL学习精粹之内外连接以及where和on条件的区别

sql内外连接(重点) 在oracle的SQL语句常用的连接有内连接(inner join),外连接(outer join)等,内连接又包括等值连接,非等值连接,自连接;而外连接又分为左连接和右连接全连接。其中...

颖辉小居
2016/10/31
22
0
PHP面试之复杂MySQL语句的编写

真题 有A(id,sex, par, cl, c2)、B(id,age,c1,c2)两张表,其中A.id与B.id关联,现在要求写出一条SQL语句,将B中age>50的记录的c1,c2更新到A表中统一记录中的c1,c2字段中。 MySQL的关联update操...

openoter
2018/04/20
0
0
mysql 内链接/外链接/交叉链接

1.内链接(典型的链接运算,使用=或<>之类的比较运算)内链接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索students和coursesb表中的学生标识号相同的所有行。 2.外链接...

hyhlinux
2016/07/06
52
0
SQL 多表联合查询

连接查询 通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。 在关系数据库管理系统中,表建立时各数据之间的关系不必确定...

青莲居士
2015/12/09
72
0
SQL 多个表之间联合查询

非常少用join,这次学学,并备忘两篇文章! 转自:http://hcx-2008.javaeye.com/blog/285661 连接查询 通过连接运算符能够实现多个表查询。连接是关系数据库模型的主要特点,也是它差别于其他...

云栖希望。
2018/01/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

windows 远程下载sftp 服务器 文件

下载 putty https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html 把安装后的 psftp.exe 放到需要下载文件的目录 尝试执行远程连接 运行 psftp.exe open : 111:111:111:111 录入...

donald121
5分钟前
1
0
阿里、网易和腾讯面试题 C/C++

一、线程、锁 1、Posix Thread互斥锁 线程锁创建 a.静态创建 pthread_mutex_tmutex = PTHREAD_MUTEX_INITIALIZER; b.动态创建 pthread_mutex_tmutex = pthread_mutex_init(pthread_mutex_t*......

linux服务器架构
6分钟前
3
0
Linux搭建spark单机操作环境

https://blog.csdn.net/king13127/article/details/86528416https://www.cnblogs.com/duanxz/p/4437802.html##spark、Hadoop、java、scalahttps://blog.csdn.net/pucao_cug/article/det......

KYO4321
9分钟前
1
0
C语言动态内存管理和动态内存分配

动态内存管理同时还具有一个优点:当程序在具有更多内存的系统上需要处理更多数据时,不需要重写程序。标准库提供以下四个函数用于动态内存管理: (1) malloc()、calloc() 分配新的内存区...

阿里云云栖社区
13分钟前
7
0
浅谈Java队列Queue

队列Queue就是一个先进先出的数据结构,与List、Set同一级别,继承了Collection接口。 一、Queue的实现 1、阻塞队列(BlockingQueue) ① 插入:队列不满时可执行插入元素线程,直到队列满。...

青衣霓裳
30分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部