设为首页 收藏本站
查看: 710|回复: 0

[经验分享] Oracle-day02 上

[复制链接]
发表于 2018-9-5 10:30:34 | 显示全部楼层 |阅读模式
  一、单表查询
  (一)简单条件查询
  1.精确查询
  需求:查询水表编号为 30408 的业主记录
  查询语句:
  select * from T_OWNERS where watermeter='30408'
  查询结果:
DSC0000.jpg

  2.模糊查询
  需求:查询业主名称包含“刘”的业主记录
  查询语句:
  select * from t_owners where name like '%刘%'
  查询结果:
DSC0001.jpg



  • and 运算符  需求:查询业主名称包含“刘”的并且门牌号包含 5 的业主记录
      查询语句:

  

select * from t_owners where name like '%刘%' and housenumber  
like '%5%'
  

  查询结果:
DSC0002.jpg



  • or 运算符  需求:查询业主名称包含“刘”的或者门牌号包含 5 的业主记录
      查询语句:

  

select * from t_owners  
where name like '%刘%' or housenumber like '%5%'
  

  查询结果:
DSC0003.jpg



  • and 与 or 运算符混合使用  需求:查询业主名称包含“刘”的或者门牌号包含 5 的业主记录,并且地址编号
      为 3 的记录。
      语句:

  select * from t_owners where (name like '%刘%' or housenumber
  like '%5%') and addressid=3
  查询结果:
DSC0004.jpg

  因为 and 的优先级比 or 大,所以我们需要用 ( ) 来改变优先级。


  • 范围查询  需求:查询台账记录中用水字数大于等于 10000,并且小于等于 20000 的记录
      我们可以用>= 和=10000 and usenum  语句:
      

    select distinct addressid from T_OWNERS  
    [img=381,124]
      

      (三)排序查询
      1.升序排序
      需求:对 T_ACCOUNT 表按使用量进行升序排序
      语句:
      select * from T_ACCOUNT order by usenum
      查询结果:
    DSC0005.jpg

      2.降序排序
      需求:对 T_ACCOUNT 表按使用量进行降序排序
      语句:
      select * from T_ACCOUNT order by usenum desc
      查询结果:
    DSC0006.jpg

      (四)基于伪列的查询
      在 Oracle 的表的使用过程中,实际表中还有一些附加的列,称为伪列。伪列就
      像表中的列一样,但是在表中并不存储。伪列只能查询,不能进行增删改操作。
      接下来学习两个伪列:ROWID 和 ROWNUM。
      1ROWID
      表中的每一行在数据文件中都有一个物理地址,ROWID 伪列返回的就是该行的
      物理地址。使用 ROWID 可以快速的定位表中的某一行。ROWID 值可以唯一的
      标识表中的一行。由于 ROWID 返回的是该行的物理地址,因此使用 ROWID 可
      以显示行是如何存储的。
      查询语句:
      select rowID,t.* from T_AREA t
      查询结果如下:
    DSC0007.jpg

      我们可以通过指定 ROWID 来查询记录
      

    select rowID,t.*  
    from T_AREA t
      
    where ROWID='AAAM1uAAGAAAAD8AAC';
      

      查询结果如下:
    DSC0008.jpg

      2ROWNUM
      在查询的结果集中,ROWNUM 为结果集中每一行标识一个行号,第一行返回 1,第二行返回 2,以此类推。通过 ROWNUM 伪列可以限制查询结果集中返回的行数。[img=295,37]
      查询语句:
      select rownum,t.* from T_OWNERTYPE t
      查询结果如下:
    DSC0009.jpg

      我们的分页查询需要用到此伪列,在本章第四小节详细讲解。
      (五)聚合统计
      ORACLE 的聚合统计是通过分组函数来实现的,与 MYSQL 一致。


    • 聚合函数  (1)求和 sum
        需求:统计 2012 年所有用户的用水量总和
        


      select sum(usenum) from t_account where year='2012'
      

    查询结果如下:  ![](http://i2.51cto.com/images/blog/201805/31/7881a55e66ea0c5ad2be6c5dbf8985f7.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
      
    (2)求平均 avg
      
    需求:统计 2012 年所有用水量(字数)的平均值
      

      
    select avg(usenum) from T_ACCOUNT where year='2012'
      
    查询结果如下:
      ![](http://i2.51cto.com/images/blog/201805/31/41d988d6b359f5db0d1cc7bb323e126e.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
      
    (3)求最大值 max
      
    需求:统计 2012 年最高用水量(字数)[img=168,44]
      

      
    `select max(usenum) from T_ACCOUNT where year='2012'`
      
    查询结果如下:
      ![](http://i2.51cto.com/images/blog/201805/31/b74638d7f8252f860219cbcc56615f8a.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
      
    (4)求最小值 min
      
    需求:统计 2012 年最低用水量(字数)
      

      
    `select min(usenum) from T_ACCOUNT where year='2012'`
      
    查询结果如下:
      ![](http://i2.51cto.com/images/blog/201805/31/1459333e5fe1d437322cf805fe31b36f.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
      
    (5)统计记录个数 count

      
    需求:统计业主类型>  

      select count(*) from T_OWNERS t where ownertypeid=1
      

    查询结果如下:  ![](http://i2.51cto.com/images/blog/201805/31/6fe428066f53e515664b5579df8290b9.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
      
    2. 分组聚合 Group by
      
    需求:按区域分组统计水费合计数
      
    语句:
      

      
    `select areaid,sum(money) from t_account group by areaid`
      
    查询结果:
      

      
    ![](http://i2.51cto.com/images/blog/201805/31/d816ce8c197cd1d3aed0516325aae8e0.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
      
    3. 分组后条件查询 having
      
    需求:查询水费合计大于 16900 的区域及水费合计
      
    语句:
      

      

      select areaid,sum(money) from t_account group by areaid
      having sum(money)>169000
      

      
    查询结果:
      ![](http://i2.51cto.com/images/blog/201805/31/77729ecd463953b2dca238ed6ec33ba8.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-563466-1-1.html 上篇帖子: Oracle-day01 下 下篇帖子: AIX+oracle+rac+asm
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表