整理了一份较全的数据库联结与大家共享


在项目中,数据库联结用的最多的是内联结,除了内联结外,联结还分为外联结、交叉联结。下面的讲解以如下两个表为例
 
 
 
a表记录如下:
    编号 姓名
    ---- ----------
    1000 张三
    2000 李四 
    3000 王五 
 
  
 
b表记录如下:
    编号 商品
    ---- ----------
    1000 电视机
    2000 录像机
    4000 自行车

 
1. 内联结(inner join):根据所使用的比较方式不同,内连接又分为等值联结、自然联结和不等联结
 
   1)等值联结:在联结条件中使用等号运算符比较被联结的列值,其查询结果中列出被联结表中的所有列,包括其中的重复列
 
          select a.*,b.* from a inner join b on a.编号=b.编号
    编号 姓名       编号 商品
    ---- ---------- ---- ----------
    1000 张三       1000 电视机
    2000 李四       2000 录像机
 
 
 
   2)不等联结:在联结条件使用除等于运算符以外的其他比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<>
 
 
 
   3)自然联结:在联结条件中使用等于运算符比较被联结的列值,但它使用选择列表指出查询结果集中所包含的列,并删除联结表的重复列
 
 
 
2. 外联结:分为左外联结(left Join)、右外联结(right join)和全外联结(full join)
 
   1)左联结:包含所有的左表中的记录甚至是右表中没有和它匹配的记录
 
    select a.*,b.* from a left join b on a.编号=b.编号
 
    编号 姓名       编号 商品
    ---- ---------- ---- ----------
    1000 张三       1000 电视机
    2000 李四       2000 录像机
    3000 王五        null   null
 
 
 
   2)右联结:包含所有的右表中的记录甚至是左表中没有和他匹配的记录
 
    select a.*,b.* from a right join b on a.编号=b.编号
    编号 姓名       编号 商品
    ---- ---------- ---- ----------
    1000 张三       1000 电视机
    2000 李四       2000 录像机
    null   null         4000 自行车
 

 
 
   3)全联结:左表和右表中的所有记录都会选出来
 
    select a.*,b.* from a full join b on a.编号=b.编号
    编号 姓名       编号 商品
    ---- ---------- ---- ----------
    1000 张三       1000 电视机
    2000 李四       2000 录像机
    3000 王五       null   null         
    null   null          4000 自行车
 

 
 
3. 交叉联结(cross join):没有where子句,它返回联结表中所有数据行的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(a表和b表交叉连接产生3*3=9条记录) 

    select * from a  cross join b
 
    编号 姓名       编号 商品
    ---- ---------- ---- ----------
    1000 张三       1000 电视机
 
    1000 张三       2000 录像机
 
    1000 张三       4000 自行车
 
    2000 李四       1000 电视机
 
        2000 李四       2000 录像机
 
        2000 李四       4000  自行车
    3000 王五       1000 电视机
 
        3000 王五       2000 录像机    
 
        3000 王五       4000 自行车          
    

http://www.beidaqingniao.com/%E5%8C%97%E5%A4%A7%E9%9D%92%E9%B8%9F-%E5%8C%97%E5%A4%A7%E9%9D%92%E9%B8%9F%E6%80%BB%E6%A0%A1%E3%80%81%E5%B0%B1%E4%B8%9A%E5%9F%BA%E5%9C%B0%E3%80%81%E5%B8%88%E8%B5%84%E5%9F%B9%E8%AE%AD%E5%9F%BA%E5%9C%B0%EF%BC%81.files/toppic.gif

5 个解决方案

#1


#2


该回复于2012-03-08 17:35:43被版主删除

#3


恩,链接用的还是挺多的,基本上都是连接

#4


#5


多谢分享

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2018 ITdaan.com 粤ICP备14056181号