开发者社区> 优惠码大使> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Oracle数据库中的多表查询

简介:
+关注继续查看

Oracle数据库中的多表查询

多表查询


   1.交叉连接:表结构中的数据两两组合(没什么作用)
     select t1.*,t2.*
     from t_student t1,t_class t2
     --交叉连接获取的结果是一个笛卡尔乘积
    
   2.等值连接(在交叉连接的基础上,性能问题,不适用于数据量大)
     select t1.*,t2.* -- 100000  2
     from t_student t1,t_class t2 -- 10000  100  100W 获取的结果集可能非常大
     where t1.classid = t2.cid  -- 10条


    3.内连接
     select t1.*,t2.*
     from t_student t1 inner join t_class t2 on t1.classid = t2.cid
     
     select t1.*,t2.*
     from t_class t2 inner join t_student t1 on t1.classid = t2.cid
     -- 左边的数据和右边的数据满足 on 关键字后面的条件时保留
     --在连接的时候一般将数据量小的表放在连接符合的左侧

   查询出学生表中的所有的学生信息及对应的班级信息


外连接:


   4.左外连接:在内连接的基础上保留左侧不满足条件的数据
     select t1.*,t2.*
     from t_student t1 left outer join t_class t2 
       on t1.classid = t2.cid
       
     select t2.*,t1.*
     from t_class t1 left join t_student t2 
       on t1.cid = t2.classid


    5.右外连接:在内连接的基础上保留右侧不满足条件的数据
     select t1.*,t2.*
     from t_student t1 right join t_class t2
       on t1.classid = t2.cid


    6.全连接:在内连接的基础上保留左右两侧不满足条件的数据
     select t1.*,t2.*
     from t_student t1 full join t_class t2
       on t1.classid = t2.cid

等值连接另外一种等价的方式:自然连接(很少使用)
效率跟等值连接是一样的,
    select id,name,cls_id,cls_name   --*  
    from t_student t1 natural join t_class t2
      --不能通过别名关联字段

union 和 union all 关键字

union --合并结果集同时去掉重复的记录
union all --合并结果集不会去掉重复的记录

列如:-

select t2.*,t1.*
     from t_class t1 left join t_student t2 
       on t1.cid = t2.classid
union
select t1.*,t2.*
     from t_student t1 right join t_class t2
       on t1.classid = t2.cid

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Oracle数据表碎片整理
数据表的增删改总是避免不了产生碎片的问题,在Oracle引入表空间本地管理和ASSM之后,极端情况下,明明表空间使用率不高,需要入库的数据库对象也不大,但就是报错,原因就是无法再分配足够的连续extent (一)创建测试环境 sys@ORCL> select * from v$version; .
3346 0
Oracle数据库死锁问题的查询与处理
Oracle数据库死锁问题的查询与处理 近来在工作中遇到了oracle数据库死锁问题,下面是转载的问题查询与处理方法,侵删。 一、数据库死锁的现象 程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。
2075 0
Oracle - 多表查询
Oracle - 多表查询 一、笛卡尔集     > 笛卡尔集是集合的一种,假设A和B都是集合,A和B的笛卡尔积用A X B来表示,是所有有序偶(a,b)        的集合,其中a属于A,b属于B。
914 0
Oracle数据库中的分页--rownum
1. 介绍 当我们在做查询时,经常会遇到如查询限定行数或分页查询的需求,MySQL中可以使用LIMIT子句完成,在MSSQL中可以使用TOP子句完成,那么在Oracle中,我们如何实现呢? Oracle提供了一个rownum的伪列,它会根据返回记录生成一个序列化的数字。
819 0
Oracle多表查询
SQL> -- 等值连接 采用=号 SQL> --查询员工信息,要求:显示员工的姓名,工资,部门号,部门名称 SQL> select * from dept;     DEPTNO DNAME          LOC                                                                           
1075 0
+关注
优惠码大使
阿里云优惠码bieryun.com
171
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载