ORACLE SQL AND ANSI SQL (common)


子查询

SQL> select * from t3 where exists (select 1 from t4 where t3.object_id=t4.object_id);

 OBJECT_ID OBJECT_TYPE         STATUS
---------- ------------------- -------
        13 UET$                SYS
         9 I_FILE#_BLOCK#      SYS
        43 I_FILE1             SYS

SQL> select * from t3 where exists (select 1 from t4 where t4.object_id  in t3.object_id);  

 OBJECT_ID OBJECT_TYPE         STATUS
---------- ------------------- -------
        13 UET$                SYS
         9 I_FILE#_BLOCK#      SYS
        43 I_FILE1             SYS

SQL> select * from t3 where exists (select 1 from t4 where t3.object_id!=t4.object_id);

 OBJECT_ID OBJECT_TYPE         STATUS
---------- ------------------- -------
        13 UET$                SYS
         9 I_FILE#_BLOCK#      SYS
        43 I_FILE1             SYS
        88 zbk                 zbk

SQL> select * from t3 where exists (select 1 from t4 where t4.object_id not  in t3.object_id);   

 OBJECT_ID OBJECT_TYPE         STATUS
---------- ------------------- -------
        13 UET$                SYS
         9 I_FILE#_BLOCK#      SYS
        43 I_FILE1             SYS
        88 zbk                 zbk


等值连接


SQL> select * from t3,t4 where t3.object_id=t4.object_id;                                                                                           

 OBJECT_ID OBJECT_TYPE         STATUS   OBJECT_ID OBJECT_NAME                    OWNER
---------- ------------------- ------- ---------- ------------------------------ ------------------------------
        13 UET$                SYS             13 UET$                           SYS
         9 I_FILE#_BLOCK#      SYS              9 I_FILE#_BLOCK#                 SYS
        43 I_FILE1             SYS             43 I_FILE1                        SYS

SQL> select * from t3 join t4 using (object_id);

 OBJECT_ID OBJECT_TYPE         STATUS  OBJECT_NAME                    OWNER
---------- ------------------- ------- ------------------------------ ------------------------------
        13 UET$                SYS     UET$                           SYS
         9 I_FILE#_BLOCK#      SYS     I_FILE#_BLOCK#                 SYS
        43 I_FILE1             SYS     I_FILE1                        SYS

SQL> select * from t3 join t4  on  (t3.object_id=t4.object_id);

 OBJECT_ID OBJECT_TYPE         STATUS   OBJECT_ID OBJECT_NAME                    OWNER
---------- ------------------- ------- ---------- ------------------------------ ------------------------------
        13 UET$                SYS             13 UET$                           SYS
         9 I_FILE#_BLOCK#      SYS              9 I_FILE#_BLOCK#                 SYS
        43 I_FILE1             SYS             43 I_FILE1                        SYS


外连接

SQL> select * from t3 left outer join t4  on (t3.object_id=t4.object_id);

 OBJECT_ID OBJECT_TYPE         STATUS   OBJECT_ID OBJECT_NAME                    OWNER
---------- ------------------- ------- ---------- ------------------------------ ------------------------------
        13 UET$                SYS             13 UET$                           SYS
         9 I_FILE#_BLOCK#      SYS              9 I_FILE#_BLOCK#                 SYS
        43 I_FILE1             SYS             43 I_FILE1                        SYS
        88 zbk                 zbk

SQL> select * from t3 left  join t4  on (t3.object_id=t4.object_id);

 OBJECT_ID OBJECT_TYPE         STATUS   OBJECT_ID OBJECT_NAME                    OWNER
---------- ------------------- ------- ---------- ------------------------------ ------------------------------
        13 UET$                SYS             13 UET$                           SYS
         9 I_FILE#_BLOCK#      SYS              9 I_FILE#_BLOCK#                 SYS
        43 I_FILE1             SYS             43 I_FILE1                        SYS
        88 zbk                 zbk

SQL> select * from t3,t4 where t3.object_id=t4.object_id(+);

 OBJECT_ID OBJECT_TYPE         STATUS   OBJECT_ID OBJECT_NAME                    OWNER
---------- ------------------- ------- ---------- ------------------------------ ------------------------------
        13 UET$                SYS             13 UET$                           SYS
         9 I_FILE#_BLOCK#      SYS              9 I_FILE#_BLOCK#                 SYS
        43 I_FILE1             SYS             43 I_FILE1                        SYS
        88 zbk                 zbk

SQL> select * from t3 right outer join t4  on (t3.object_id=t4.object_id);

 OBJECT_ID OBJECT_TYPE         STATUS   OBJECT_ID OBJECT_NAME                    OWNER
---------- ------------------- ------- ---------- ------------------------------ ------------------------------
        13 UET$                SYS             13 UET$                           SYS
         9 I_FILE#_BLOCK#      SYS              9 I_FILE#_BLOCK#                 SYS
        43 I_FILE1             SYS             43 I_FILE1                        SYS
                                               38 I_OBJ3                         SYS
                                               51 I_CON1                         SYS
                                                7 I_TS#                          SYS
                                               56 I_CDEF4                        SYS

7 rows selected.

SQL> select * from t3 right  join t4  on (t3.object_id=t4.object_id);      

 OBJECT_ID OBJECT_TYPE         STATUS   OBJECT_ID OBJECT_NAME                    OWNER
---------- ------------------- ------- ---------- ------------------------------ ------------------------------
        13 UET$                SYS             13 UET$                           SYS
         9 I_FILE#_BLOCK#      SYS              9 I_FILE#_BLOCK#                 SYS
        43 I_FILE1             SYS             43 I_FILE1                        SYS
                                               38 I_OBJ3                         SYS
                                               51 I_CON1                         SYS
                                                7 I_TS#                          SYS
                                               56 I_CDEF4                        SYS

7 rows selected.

SQL> select * from t3,t4 where t3.object_id(+)=t4.object_id;

 OBJECT_ID OBJECT_TYPE         STATUS   OBJECT_ID OBJECT_NAME                    OWNER
---------- ------------------- ------- ---------- ------------------------------ ------------------------------
        13 UET$                SYS             13 UET$                           SYS
         9 I_FILE#_BLOCK#      SYS              9 I_FILE#_BLOCK#                 SYS
        43 I_FILE1             SYS             43 I_FILE1                        SYS
                                               38 I_OBJ3                         SYS
                                               51 I_CON1                         SYS
                                                7 I_TS#                          SYS
                                               56 I_CDEF4                        SYS

7 rows selected.


全连接

SQL> select * from t3 full outer join t4 on (t3.object_id=t4.object_id);

 OBJECT_ID OBJECT_TYPE         STATUS   OBJECT_ID OBJECT_NAME                    OWNER
---------- ------------------- ------- ---------- ------------------------------ ------------------------------
        13 UET$                SYS             13 UET$                           SYS
         9 I_FILE#_BLOCK#      SYS              9 I_FILE#_BLOCK#                 SYS
        43 I_FILE1             SYS             43 I_FILE1                        SYS
                                               51 I_CON1                         SYS
                                               38 I_OBJ3                         SYS
                                                7 I_TS#                          SYS
                                               56 I_CDEF4                        SYS
        88 zbk                 zbk

8 rows selected.

SQL> select * from t3 full  join t4 on (t3.object_id=t4.object_id);

 OBJECT_ID OBJECT_TYPE         STATUS   OBJECT_ID OBJECT_NAME                    OWNER
---------- ------------------- ------- ---------- ------------------------------ ------------------------------
        13 UET$                SYS             13 UET$                           SYS
         9 I_FILE#_BLOCK#      SYS              9 I_FILE#_BLOCK#                 SYS
        43 I_FILE1             SYS             43 I_FILE1                        SYS
                                               51 I_CON1                         SYS
                                               38 I_OBJ3                         SYS
                                                7 I_TS#                          SYS
                                               56 I_CDEF4                        SYS
        88 zbk                 zbk

8 rows selected.


ORACLE不支持这种写法,而应用上面的full jjoin

QL> select * from t3 ,t4 where t3.object_id(+)=t4.object_id(+);
select * from t3 ,t4 where t3.object_id(+)=t4.object_id(+)
                                          *
ERROR at line 1:
ORA-01468: a predicate may reference only one outer-joined table


SQL> select * from t3,t4 where t3.object_id(+)=t4.object_id
  2  union 
  3  select * from t3,t4 where t3.object_id=t4.object_id(+);

 OBJECT_ID OBJECT_TYPE         STATUS   OBJECT_ID OBJECT_NAME                    OWNER
---------- ------------------- ------- ---------- ------------------------------ ------------------------------
         9 I_FILE#_BLOCK#      SYS              9 I_FILE#_BLOCK#                 SYS
        13 UET$                SYS             13 UET$                           SYS
        43 I_FILE1             SYS             43 I_FILE1                        SYS
        88 zbk                 zbk
                                                7 I_TS#                          SYS
                                               38 I_OBJ3                         SYS
                                               51 I_CON1                         SYS
                                               56 I_CDEF4                        SYS

8 rows selected.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值