WEB开发网
开发学院网站运营SEO推广 SQL 左外连接,右外连接,全连接,内连接 阅读

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

 2009-11-13 16:45:58 来源:WEB开发网   
核心提示:联接条件可在 FROM 或 WHERE 子句中指定,建议在 FROM 子句中指定联接条件,SQL 左外连接,右外连接,全连接,内连接,WHERE 和 HAVING 子句也可以包含搜索条件,以进一步筛选联接条件所选的行,表或视图的顺序很重要,有关使用左或右向外联接排列表的更多信息, 联接可分为以下几类: 内联接(典型的联
联接条件可在  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

Tags:SQL 左外 连接

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接