黑马程序员技术交流社区

标题: SQL连接语句总结 [打印本页]

作者: xj刘博    时间: 2015-3-30 21:52
标题: SQL连接语句总结
SELECT *FROM A
          id   date
           1    a1
           2    a2
           3    a4
SELECT *FROM b
           id   date
           1     b1
           2     b2
           4     b4


--测试:


--1.内连接 inner join (仅取出匹配的数据)
select *FROM A INNER JOIN b on A.id=b.id




--2.左连接 left join  (首先取出a表中所有数据,然后再加上与a,b匹配的的数据)
select * from a left join b on a.id = b.id
         1   a1 1     b1
         2   a2 2     b2
         3   a3 NULL  NULL
         


--3.右连接 right join (指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据)
select * from a right join b on a.id = b.id
         1    a1  1   b1
2    a2   2   b2
NULL  NULL   4   b4


--4.完整外部连接 FULL JOIN 或 FULL OUTER JOIN
     完整外部联接返回左表和右表中的所有行。
     当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。
     如果表之间有匹配行,则整个结果集行包含基表的数据值。
     select *FROM A FULL JOIN b on A.id=b.id
     
     
--5.交叉链接CROSS JOIN (把表A和表B的数据进行一个N*M的组合,即笛卡尔积。一般不常用)
         select *FROM A CROSS JOIN b
         
         
--6.注意:
          A    left    join    B    表示:连接的记录数与A表的记录数同,即A表是主表
A    right   join    B    表示:连接的记录数与B表的记录数同,即B表是主表
A    left    join    B    等价B    right    join    A


--7.内连接另外一种写法:
             select    *    from    a,b    where    a.id=b.id  
              这个语法是内连接的另外一种写法,其执行结果与inner    join    一样
           
--8.备注:
           select    a.*,b.*    from    a    left    join    b    on    a.k    =    b.k   
  select    a.*,b.*    from    a    left    outer    join    b    on    a.k    =b.k  
   ----------上面两种一样left    join是left     outer    join的简写
   ----------同理,     ritht    join是right    outer    join的简写





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2