内连接,外连接,自然连接

高级查询

l       内连接

l         外连接

  1.   左外连接
  2.   右外连接
  3.   完全外连接

l         自然连接

 

 

 

内连接

l       连接的多表必须有公共列 ( 相等连接 )

l       通过 INNER JOIN 语法实现

l       语法:

    SELECT   tab_name1.col_name, tab_name2.col_name….

    FROM  tab_name1  (INNER) JOIN   tab_name2

    ON tab_name1.col = tab_name2.col

 

还可以加 Where 。。。。。。。。。。。。。。。。。 其中 col 是两表的公共列

select student_1.studid,marks.studid,studname from student_1 join marks on student_1.studid=marks.studid where studname=' 李四 ';

 

UNION 区别。。。。。。。。。

  UNION 的两个结果集的并集,相同的字段。。

 

 

select student_1.studid,marks.studid mkstudid,studname from student_1 join marks on student_1.studid=marks.studid;// inner join

select student_1.studid,marks.studid mkstudid,studname from student_1 ,marks where student_1.studid=marks.studid; // 相等连接

 

 

内连接 (INNER JOIN) 使用比较运算符进行表间某 ( ) 列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三

 

 

外连接

 

左外连接

l       返回满足连接条件的所有行,而且还会返回不满足连接条件的连接操作符的左边表的其他行

l       语法:

        SELECT   tab_name1.col_name, tab_name2.col_name….

       FROM  tab_name1  LEFT  JOIN   tab_name2

       ON tab_name1.col = tab_name2.col

 

右外连接

l       返回满足连接条件的所有行,而且还会返回不满足连接条件的连接操作符的左边表的其他行

l       语法:

        SELECT   tab_name1.col_name, tab_name2.col_name….

       FROM  tab_name1  RIGHT  JOIN   tab_name2

       ON tab_name1.col = tab_name2.col

 

完全连接

l       不仅返回满足连接条件的所有行,而且还会返回不满足连接条件的所有行

l       语法:

         SELECT   tab_name1.col_name, tab_name2.col_name….

       FROM  tab_name1  FULL  JOIN   tab_name2

       ON tab_name1.col = tab_name2.col

   

自然连接          ---- 自我连接

l       同一张表之间的连接查询

l       主要用于在参照表上显示   上下级关系或层次关系

l       语法:

    select  t1.col_name, t2.col_name

    from  table1  t1  inner join  table1  t2

    on  t1.col_name = t2.col_name

 

 

posted on 2009-06-02 23:24 luofeng225 阅读(1661) 评论(0)  编辑  收藏 所属分类: Oracle


只有注册用户登录后才能发表评论。


网站导航:
 
<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

公告

我曾经听到这么一个故事: 一个年轻的程序员问一个老程序员(一个比较牛逼的公司的CTO) 年轻程序员: 你为什么这么牛X., 就好像没有你不会的。老程序员: 积累的。年轻程序员: 怎么才能积累到您的程度呢。我每天都在积累。但是似乎都没有感觉到进步。老程序员: 我从20岁开始做到了一件事情,直到今天,而且尽可能地保证不间断。年轻程序员: 到底是什么? 老程序员: 我每天保证自己有2个小时在学习新的东西。

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

相册

收藏夹

Java Website

java技术博客

搜索

最新评论

阅读排行榜

评论排行榜