zoukankan      html  css  js  c++  java
  • Oracle 的内连接、外连接、自连接、左连接、右连接

    http://www.cnblogs.com/star-studio/archive/2011/06/25/2090000.html

    内连接     (JOIN 
    SELECT a.*,b.* FROM table_1 a,table_2 b WHERE a.name=b.name --写法一
    SELECT a.*,b.* FROM table_1 a JOIN table_2 b ONa.name=b.name --写法二
    SELECT a.*,b.* FROM table_1 a  INNER JOIN table_2 b ONa.name=b.name --写法三


    外连接   外连接有三种方式  左连接、 右连接、 全连接

    左连接   LEFT JOIN) 左连接是根据最左表的记录,在被连接右表中找出符合条件的记录与之匹配,找不到与左表匹配的,用null填充
    SELECT a.*,b.*FROM table_1 a LEFT JOIN table_2 b ONa.name=b.name--左连接写法一
    SELECT a.*,b.*FROM table_1 a LEFT OUTER JOIN table_2 b ONa.name=b.name--左连接写法二
    SELECT a.*,b.*FROM table_1 a, table_2 b  where  a.name=b.name(+) --左连接写法三


    右连接   RIGHT JOIN) 右连接则是根据最右表的记录,在被连接的左表中找出符合条件的记录与之匹配,找不到匹配的,用null填充
    SELECT a.*,b.*FROM table_1 a RIGHT JOIN table_2 bON a.name=b.name--右连接写法一
    SELECT a.*,b.*FROM table_1 a RIGHT OUTER JOIN table_2 b ON a.name=b.name--右连接写法二
    SELECT a.*,b.*FROM table_1 a , table_2 b  where  a.name(+)=b.name --连接写法三

    全连接   FULL JOIN返回符合条件的所有表的记录,没有与之匹配的,用null填充
    SELECT*FROM table_1 a FULL JOIN table_2 b ONa.name=b.name--全连接写法一
    SELECT a.*,b.*FROM table_1 a FULL OUTER JOIN table_2 b ONa.name=b.name--全连接写法二 


    交叉连接  CROSS JOIN 笛卡尔积,结果集的记录数将等于第一个表的记录数乘以第二个表中的记录数。
    SELECT a.*,b.*FROM table_1 a CROSS JOIN table_2 b --交叉连接
    SELECT a.*,b.*FROM table_1 a,table_2 b --内连接


    自连接   连接的表都是同一个表。同样可以有内连接、外连接各种组合方式,按实际应用去组合。

    SELECT a.*,b.*FROM table_1 a,table_1 b WHERE  a.[name]=b.[name] --连接的两表是同一个表,别称不一样
    SELECT a.*,b.*FROM table_1 a  LEFT  JOIN table_1 b ON a.[name]=b.[name]--左连接写法
    等等


    自然连接  

    自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件按的结果

    SELECT a.*,b.* FROM table_1 a NATURAL JOIN table_2 b   

    自然连接等效于内连接

    SELECT a.*,b.* FROM table_1 a JOIN table_2 b ON a.name=b.name  


    也可以将自然连接理解为内连接的一种。
    有关自然连接的一些注意事项:
    (1).如果做自然连接的两个表的有多个字段都满足有相同名称个类型,那么他们会被作为自然连接的条件。
    (2).如果自然连接的两个表仅是字段名称相同,但数据类型不同,那么将会返回一个错误。














  • 相关阅读:
    一次事务过程与数据库管理过程
    如何连接oracle数据库及故障解决办法
    存储过程从入门到熟练(多个存储过程完整实例及调用方法)
    ASP.NET:通过反射填充泛型集合List的静态方法
    UTC datetime values in SQL Server 2000
    Datable 添加到Dataset 并且重新命名
    sp_help sp_helptext 存储过程的返回结果导出到表
    【转】目录 aspnet_client是什么?
    Javascript to generate excel 2
    Javascript verify integer or float value from textbox
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276441.html
Copyright © 2011-2022 走看看