oracle 连接查询

  • 等值连接 

eg:  select  s.sno,  s.sname,  sc.cno  from  student s,  sc  where  s.sno=sc.sno;        (可以使同一表自身连接)

  • 非等值连接  

eg:  select  s.sno,  s.sname,  cno,  grade  from  student  s,  sc  where  grade between  x  and y;

  • 外连接

1、左外连接:使用 left outer join 子句  后用 on 来创建链接条件,该连接方式输出满足连接条件的结果以及左表不满足连接条件的结果

eg:  select  s.sno,  s.sname,  sc.cno,  sc.grade  from student  s  left  outer  join  sc  on  s.sno=sc.sno     

2、右外连接:使用 right outer join 子句  后用 on 来创建链接条件,该连接方式输出满足连接条件的结果以及右表不满足连接条件的结果

eg: select  s.sno,  s.sname,  sc.cno,  sc.grade  from student  s  right  outer  join  sc  on  s.sno=sc.sno     

3、全外连接:使用 full outer join 子句  后用 on 来创建链接条件,该连接方式输出满足连接条件的结果以及两表不满足连接条件的结果

eg:  select  s.sno,  s.sname,  sc.cno,  sc.grade  from student  s  full  outer  join  sc  on  s.sno=sc.sno   

4、使用on子句创建多表连接:

eg:  select  s.sno,  s.sname,  c.cno,  c.cname,  sc.grade  from student  s  join  sc  on  s.sno=sc.sno  join  course  on  c.cno=sc.cno

  • 自然连接
  1. 使用 natural  join  子句,会以两表之中具有相同名字的列为条件创建等值连接
  2. 查询表中满足等职条件的数据
  3. 两表存在同名的列,但是数据类型不同会产生错误

select   sno,  sname,  cno  from  student  natural  join  sc; 注:自然连接时可以使用using子句指定等值连接中所需要用到的列,natural  join 和 using 经常同时使用,并且using当中不要给列加上表名前缀

 

顺便一记:以上例子都用到了别名,按照oracle的执行方式(先进执行from子句,在执行where等条件查询,最后执行select),最好在from子句中定义好别名,不然可能出错

 

posted @ 2018-11-28 16:50  吾名王道长  阅读(299)  评论(0编辑  收藏  举报