www.Orasql.Com
 
用户名: 密码:  验证码: 注册|找回密码 oracleawen's blog  
 
         当前位置 >> 技术论坛  发表帖子     论坛版块     查找帖子
SQL多个表中的查询_阿文_6-技术论坛||Oracle高手之路—Orasql.Com!
            SQL多个表中的查询_阿文_6
 
发贴人:oracle_awen
oracleawen@gmail.com448315233127.0.0.1
用户级别:管理员
发贴总数:1245
注册时间:2011-05-05 09:23:03
2011-11-02 21:31:41

语法:
SELECT table1.column, table2.column
FROM table1
[NATURAL JOIN table2] 

natural
两个表有相同字段名,而且字段名类型相同,根据字段名值相同返回结果

using ( 指定连接的字段名)

 

SQL> select emp.ename ,emp.sal ,dept.dname from emp  join dept using(deptno);

SQL> select emp.ename ,emp.sal ,dept.dname from emp,dept where dept.deptno=emp.deptno;
 

当多个表有相同的字段名的时候,需要使用表前缀,指定该列属于哪个表
表前缀可以提高性能

可以对表取别名
from 表名  别名
好处:简化SQL语句,提高执行效率
注意;使用别名后,在select里就不要在使用原来的表名
表1 join 表2 on 指定连接条件
优点;容易理解

self join 自连接查询
核心思想就是连接查询(一张表自我连接,给一张取两个别名,两个别名之间的连接)

inner vs outer
inner 内连接 nautral using join on
特点:只有满足连接条件的才有结果

outer join (left outer join ,right outer join ,full outer join )
特点:先返回满足连接条件的,在返回左边或者右边,或者全部不满足条件的

左 left join  右 right join on条件

 

 


非标准写法(常用) SQL> select ename,sal,dname from emp,dept where emp.deptno=dept.deptno;

标准写法 SQL> select ename,sal,dname from emp join dept on dept.deptno=emp.deptno;


外连接 (where 只有左和右外连接)
左外连接

SQL>  select ename,sal,dname from emp,dept where emp.deptno=dept.deptno(+);


右外连接

SQL> select ename,sal,dname from emp,dept where emp.deptno(+)=dept.deptno;

SELECT table1.column, table2.column
FROM table1
[JOIN table2 USING (column_name)] 


SELECT table1.column, table2.column
FROM table1
[JOIN table2
  ON (table1.column_name = table2.column_name)]

SELECT table1.column, table2.column
FROM table1
[LEFT|RIGHT|FULL OUTER JOIN table2
  ON (table1.column_name = table2.column_name)]

SELECT table1.column, table2.column
FROM table1
[CROSS JOIN table2];


 

      
 
  
 Orasql.Com|E-Mail:oracleawen@gmail.com|Phone:15271942915|Copyright © 2011|All Rights Reserved|