浅谈数据库中join操作

1. Join分为内连接(inner join) 和 外连接(outer join)

两者之间的区别在于:前者返回连接表中符合连接条件和查询条件的信息。
	                后者不仅返回 连接表中符合连接条件和查询条件的数据行,还返回一些更多的信息。
	两者join的基础都是,笛卡尔积连接。
	笛卡尔积连接,最简单的连接方式,即,仅仅满足连接条件。A表中的每行数据与B表中的每行数据做连接。 	
	假设A表有m条记录, B表有n条记录,那么笛卡尔积之后就有m*n条记录。
	为了清晰地表达,以维基上的例子作为本文的例子。
              
	以下是笛卡尔积连接的结果:
 

2. 内连接(inner join)

1)内连接,是默认的连接方式。有两种语法形式:显式以及隐式。 显示语法
  1. <span style="white-space:pre">  </span>select *  
  2.     from   employee   
  3.         inner join department   
  4.         on employee.DepartmentID = department.DepartmentID  
  1.   
(join,on的语法)等价于:
   
   
  1. <span style="white-space:pre">  </span>select *  
  2.     from employee,department  
  3.     where employee.DepartmentID = department.DepartmentID  
这便是隐式语,即我们常常使用的连接方式即为默认的内连接方式。
      结果显示如下
	
2)内连接分三种:相等连接、自然连接、以及交叉连接

a. 相等连接
    两表之间用等号=相连接,而不是用其他比较操作符(<)。前面的查询语句就是相等连接
    语法:
     
   
   
  1. select *  
  2. from employee  
  3. inner join department  
  4. on employee.DepartmentID = department.DepartmentID  
=>等价于(专门表示方法)
    
    
  1. <span style="white-space:pre">  </span>select  *  
  2. <span style="white-space:pre">  </span>from employee  
  3. <span style="white-space:pre">  </span>inner join department  
  4. <span style="white-space:pre">  </span>using (DepartmentID)  
【结果显示跟上面一样)】
b. 自然连接    
   是相等连接的特例,再特殊化,即如果连接的两表有相同属性名称,则这个相同的属性将会自动做相等连接、 并且最终显示结    果,相同的属性仅显示一次,不重复。    
   语法:   
   
   
  1. <span style="white-space:pre">  </span>select *      
  2. <span style="white-space:pre">  </span>from employee natual   
  3. <span style="white-space:pre">  </span>join department    
    结果显示如下:    
        

c. 交叉连接

即 笛卡尔积连接,上面有讲述,不累述。
语法:	
    
    
  1. select *  
  2. from employee cross join department  
=>
  1. select *  
  2. from employee, department.  
【隐式的笛卡尔积连接,无连接条件下】

3. 外连接(outer join)

外连接分成三种:左外连接、右外连接以及全外连接。
a. 左外连接: 将左表中除了满足连接条件的行显示在结果中之外,不满足的行也同样显示在结果中(额外信息).
语法:

    
    
  1.  select *  
  2.  from employee  
  3. left outer join department  
  4. on  employee.DepartmentID = department.DepartmentID  
  1.   
【注意:join on 是连在一起的语句块】
 结果显示如下
b. 右外连接: 与上述操作不同在于’左‘改成’右‘;
right outer join ...on	
结果显示如下:
【注:左外连接=》右外连接,表的位置变换下】	
c. 全连接: 左外连接+右外连接
full outer join … on
结果显示如下:
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值