码迷,mamicode.com
首页 > 其他好文 > 详细

表连接

时间:2016-01-22 03:24:05      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:表连接


SQL> select * from t1;


        ID NAME

---------- ----------

         1 zs

         2 ls

         3 ww

         1 aaa



SQL> select * from t2;


        ID NAME

---------- ----------

         1 haha

         2 hehe



一. 内连接(Inner Join/Join)


1.内连接查询

SQL> select a.id,a.name,b.name from t1 a inner join t2 b on a.id=b.id;


        ID NAME       NAME

---------- ---------- ----------

         1 zs         haha

         2 ls         hehe

         1 aaa        haha


2.内连接省略inner

SQL> select a.id,a.name,b.name from t1 a  join t2 b on a.id=b.id;

        ID NAME       NAME

---------- ---------- ----------

         1 zs         haha

         2 ls         hehe

         1 aaa        haha


3.多表查询


SQL> select a.id,a.name,b.name from t1 a,t2 b where a.id=b.id;


        ID NAME       NAME

---------- ---------- ----------

         1 zs         haha

         2 ls         hehe

         1 aaa        haha


(三种查询方法现实的内容是一样的)



========================================================

二. 外连接(Outer Join)

外连接分为三种: 左外连接,右外连接,全外连接。 对应SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常省略outer 这个关键字。 写成:LEFT/RIGHT/FULL JOIN。


对于外连接, 也可以使用“(+) ”来表示

注意:

(+)操作符只能出现在where子句中

 当使用(+)操作符执行外连接时,如果在where子句中包含有多个条件,则必须在所有条件中都包含( +)操作符

(+)操作符只适用于列,而不能用在表达式上。

(+)操作符不能与or和in操作符一起使用。

(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。 



2.1左外连接(Left outer join/ left join)


SQL> select * from t1 a left join t2 b on a.id=b.id;


        ID NAME               ID NAME

---------- ---------- ---------- ----------

         1 aaa                 1 haha

         1 zs                  1 haha

         2 ls                  2 hehe

         3 ww

(以左面的为基表都显示,右面的只显示匹配的,t1为基表,t2为匹配表)



SQL> select * from t1 a,t2 b where a.id=b.id(+);  (+ 那个表有加号位匹配表)


        ID NAME               ID NAME

---------- ---------- ---------- ----------

         1 aaa                 1 haha

         1 zs                  1 haha

         2 ls                  2 hehe

         3 ww

(上两种结果一致)


2.2 右外连接(right outer join/ right join)



SQL> select * from t1 a right join t2 b on a.id=b.id;


        ID NAME               ID NAME

---------- ---------- ---------- ----------

         1 zs                  1 haha

         2 ls                  2 hehe

         1 aaa                 1 haha

(右面的表为基表,左面的为匹配表)



SQL> select * from t1 a ,t2 b where a.id(+)=b.id;


        ID NAME               ID NAME

---------- ---------- ---------- ----------

         1 zs                  1 haha

         2 ls                  2 hehe

         1 aaa                 1 haha



2.3 全外连接(full outer join/ full join)

SQL> insert into t2 values(5,‘heihei‘);


SQL> select * from t1 a full join t2 b on a.id=b.id;


        ID NAME               ID NAME

---------- ---------- ---------- ----------

         1 aaa                 1 haha

         1 zs                  1 haha

         2 ls                  2 hehe

         3 ww

                               5 heihei


(显示两个表全部内容)













本文出自 “linux” 博客,谢绝转载!

表连接

标签:表连接

原文地址:http://chenjisong.blog.51cto.com/7858025/1737386

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!