广告
返回顶部
首页 > 资讯 > 数据库 >学习Oracle的历程 (四)
  • 883
分享到

学习Oracle的历程 (四)

学习Oracle的历程(四) 2019-06-08 11:06:25 883人浏览 无得
摘要

     前面,我们学习了在oracle中学习了DML操作,可以我们添加数据、修改数据、删除数据,当我说到这里难免有大部分人觉得有点别扭,感觉缺少了点什么? 没错,作为编程的根本四要素之一,我们怎么只能去修改、添加、删除、而不去查看数据呢

学习Oracle的历程 (四)

     前面,我们学习了在oracle中学习了DML操作,可以我们添加数据、修改数据、删除数据,当我说到这里难免有大部分人觉得有点别扭,感觉缺少了点什么?

没错,作为编程的根本四要素之一,我们怎么只能去修改、添加、删除、而不去查看数据呢? 今天小喵学习了我们的Oracle中的DQL语句/操作.

    DQL语句/操作 其体型对小苗来说是有点庞大了,得慢慢啃了!┭┮﹏┭┮

 一 .  单表查询 

        在正式开始之前,我们先来回顾一下我们的DQL操作的标准语法吧!


select distinct * | 列名 as 别名, 列表2 as 别名2... | 聚合函数
from 表名 as 别名, 表名2 as 别名2 ,....
where 查询条件
group by 分组字段 having 分组条件
order by 排序字段 asc | desc,....

         1. 简单查询

        

        2. 去重和排序

    

        3.伪列

            首先,我们需要知道  伪列是Oracle中独有,伪列也是真实存在的列,也是可以用来进行查询操作的,伪列只能用来查询,不能用来进行增删改操作.

            1)rowid : 物理文件上唯一区别这条记录的唯一标识,表中的每一行在数据文件中都有一个物理地址,ROWID伪列返回的就是该行的物理地址。使用ROWID可以快速的定位表中的某一行。ROWID值可以唯一的标识表中的一行。

            2)rownum在查询的结果集中,ROWNUM为结果集中每一行标识一个行号,第一行返回1,第二行返回2,以此类推。通过ROWNUM伪列可以限制查询结果集中返回的行数。

注 : 当我们学习分页查询的时候需要用到此   列 (rownum)

    4.聚合统计

        其实,Oralce的聚合统计是通过分组函数来实现的,这和Mysql一致.

         1) 聚合函数

            求和 : sum

            

            求平均 : avg

            

            求 最大值 : max

            

            求 最小值 : min

            

            求 统计记录个数 : count 

            

        2) 分组聚合 Group by    

       3)分组后条件查询 having

   

    这里解释一下having 和 where 的区别 :        


 1. having 是在分组后对数据进行过滤,
      where 是在分组前对数据进行过滤
 
 2. having 后面可以使用分组函数(统计函数),
      where 后面不可以使用分组函数.
 
 3. having 运算的字段,必须在select中出现,
      where 运算的字段,无需在select中出现

二 .  连接查询 

    1) 笛卡尔积/交叉连接查询 : 两个表乘积,所有的数据最大集


 -- 基本语法
select * from A,B;
  

注 : 笛卡尔积会存在错误的数据信息,因此通常我们会采用一下连接方式

    2) 内连接查询  : 分为隐式内连接 和 显示内连接

            隐式内连接 : 


--基础语法
select * from A表 , B表 on 连接条件

 --实例
select * from A a,B b where a.id = b.id;

            显示内连接 :


 --基础语法
select * from A表 inner join B表 on 连接条件

 --实例
select * from A a inner join B b on a.id = b.id;

      3) 外连接查询 : 分左外连接 和 右外连接

                左外连接 :

                    查询左表 (A表)所有数据,如果条件成立,显示右表(B表)的数据,否则显示null


 --基础语法
select * from A表 left outer join B表 on 连接条件

 --实例
select * from A a left outer join B b on a.id = b.id;

                右外连接 :

                    查询右表 (B表)所有数据,如果条件成立,显示左表(A表)的数据,否则显示null


 --基础语法
select * from A表 right outer join B表 on 连接条件

 --实例
select * from A a right outer join B b on a.id = b.id;

三 .  子查询 

        1)子查询 : 将其他select的查询结果,作为select的查询条件. 子查询可以轻松解决很多疑难需求,但需要注意,子查询中, select 关键字出现得越多,查询效率就越低

        2) 单行子查询

            

        3)多行子查询

        4) 嵌套子查询

            顾名思义,在子查询中再次嵌入子查询

        

        5) 标量子查询

           将子查询的结果作为主查询语句的显示结果 ,但 前提是子查询的结构必须返回单个的值.

 解谜 : 

    Oracle 中的dual表

Oracle中独有的最小的工作表,只有一行一列,具有某些特殊功用。

特性

1、Oracle提供的最小的表,不论进行何种操作(不要删除记录),它都只有一条记录——"X"。

例如:执行select * from dual,里面只有一条记录;执行insert into dual values("Y")后,再次查询dual表,仍然显示一条记录。

2、是sys用户下的一张内部表,所有用户都可以使用DUAL名称访问,无论什么时候这个表总是存在。

    6)相关子查询

        子查询需要依赖外部的主查询语句

 

四. 分页查询 

    1) 简单的分页

     在Oracle中进行分页查询,我们需要用到 伪列 rownum (伪列上面有说哦!忘记的小伙伴可以拉回上面看看哦!) 和 嵌套查询 .

    在Oracle的分页中,因为rownum是在查询语句扫描每条数据是产生的,所以不能使用"大于"符号,只能使用"小于"或"小于等于",同时也不能直接只用"等于".

    2)基于排序的分页

    在Oracle中因为 伪列 rownum 的产生是在表记录扫描时产生的,而排序是后进行的,排序时R已经生成,所以排序后R是乱的.

那我们该如何写呢?

很简单,我们只要再嵌套一层循环 (一共三层),让结果先排序,然后在对排序后的结果在生产rownum,这样就避免了排序后 R是乱序的问题了.

    今天到的分享就到这里了,

    知识可能有点量大了,小伙伴们慢慢学就ok了,

    最主要的是学精,学透彻哦!

    (^_^)~喵~!!

 

    

您可能感兴趣的文档:

--结束END--

本文标题: 学习Oracle的历程 (四)

本文链接: https://www.lsjlt.com/news/6309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 学习Oracle的历程 (四)
         前面,我们学习了在Oracle中学习了DML操作,可以我们添加数据、修改数据、删除数据,当我说到这里难免有大部分人觉得有点别扭,感觉缺少了点什么 没错,作为编程的根本四要素之一,我们怎么只能去修改、添加、删除、而不去查看数据呢 ...
    99+
    2019-06-08
    学习Oracle的历程 (四)
  • 学习Oracle的历程 (五)
        今天,我们接着学习Oracle数据库,今天要学的是PL/SQL 中的单行函数 与 分析函数以及集合运算. 注意,今天的知识小喵个人觉得还是挺难的同事也挺重要的,要认真学习哦! 一 . 单行函数     首先我们来说一下单行函数...
    99+
    2021-01-27
    学习Oracle的历程 (五)
  • 学习Oracle的历程 (一)
    功能强大、性能卓越   Oracle数据库思想的诞生是在IBM公司。 上世纪60年代-70年代--IBM的一款数据库IMS,98%+ 二. Oracle 10g 安装包 链接:https://pan.baidu.com/s...
    99+
    2014-09-24
    学习Oracle的历程 (一)
  • 学习Oracle的历程 (二)
    温馨提示 :   Oracle 中 单行注释 --  多行注释 一 . 数据库操作   1) 概述 Oracle表与用户关联 每一个用户,需要确定表存放位置,此位置称为 表空间。 在Oracle中表空间分2种...
    99+
    2015-09-14
    学习Oracle的历程 (二)
  • 学习Oracle的历程 (三)
        今天,我们接着学习Oracle的相关内容, (#^.^#)重点来了!     因为今天的是关于语句操作的所以小喵就只留截图了哦! 一. 表的操作     1) 创建表         语法1 : 创建一个新表 create...
    99+
    2017-10-28
    学习Oracle的历程 (三)
  • Oracle入门学习四
    上一篇:Oracle入门学习三 学习视频:https://www.bilibili.com/video/BV1tJ411r7ECp=35 Oracle表连接:内连接、外连接。外连接分左连接、右连接。 多表查询时,如果表之间没有条件...
    99+
    2017-05-24
    Oracle入门学习四
  • Oracle学习(四) --- DQL语法
    标准DQL语法 select distinct * | 列名 as 别名, 列表2 as 别名2... | 聚合函数 from 表名 as 别名, 表名2 as 别名2 ,.... where 查询条件 group by...
    99+
    2017-09-05
    Oracle学习(四) --- DQL语法
  • php-xhprof 学习历程
    听说 php-xhprof 可以分析网站的性能。今天闲来无事,就学习了一下。 1、安装(万事都得从安装开始) #首先,他是需要 graphviz 支持的。所以,我们得先安装这个依赖yum instal...
    99+
    2023-09-23
    php 学习 开发语言
  • Oracle 学习之RAC(四) 安装Oracle软件
    上传安装包到11grac1上解压安装包[root@11grac1 database]# unzip p10404530_112030_Linux-x86-64_1of7.zip...
    99+
    2022-10-18
  • 华为学习历程(3)
    今天登陆到了[url]www.huawei.com.cn[/url],看了他们网站关于ne80的介绍,感觉ne80还不错,如果和cisco12000拼一下,不知道那个更猛(不禁又在为思科伤心了)。 而后又逛了[url]www.ci...
    99+
    2023-01-31
    华为 历程
  • Numpy库的学习(四)
    我们今天继续学习一下Numpy库 接着前面几次讲的,Numpy中还有一些标准运算 a = np.arange(3) print(a) print(np.exp(a)) print(np.sqrt(a)) exp表示求e的幂次方,比如...
    99+
    2023-01-31
    Numpy
  • 网工的Linux系统学习历程
    一、偶遇篇作为一名通过思科CCNP认证的网络工程师,专注于网络技术。但在日常的工作中,难免不接触到服务器,对于大多数服务器来说,鉴于稳定性等因素的考虑,基本使用的都是Linux系统,包括RHEL、CentOS、Ubuntu、SUSE、Deb...
    99+
    2023-06-05
  • Oracle 学习之 性能优化(十四) 内存
     Oracle数据库包含了如下基本内存组件System global area (SGA)The SGA is a group of shared memory structures, known...
    99+
    2022-10-18
  • 我的python学习--第四天
    一、首先是对前三天的学习内容进行复习  1、python基础的数据结构      数字(int/float,包括整数和浮点数)          布尔(boolean => True/False)      字符串(str,使用''或...
    99+
    2023-01-31
    第四天 python
  • 学习python的第四天(python的
    一.Jupyter的安装以及运行 1.Jupyter的安装 运行CMD,在CMD中输入pip3 --default-timeout=100 install -U jupyter 再输入pip3 install jupyter_contr...
    99+
    2023-01-31
    第四天 python
  • 我的学习经历——Linux系统入门教程
    我想把最近学习Linux的经验和过程分析出来,当时是在上大三,是学生一枚,以前对开源也没有什么特殊的认识,只觉得很高深,不明觉厉的东西,在当时因为学校要参加职业技能大赛,其中有一团体性质的比赛,几个同学组成一个团队,比如几个同学负责基础网络...
    99+
    2023-06-05
  • Oracle 学习之性能优化(四)收集统计信息
     emp表有如下数据。SQL> select ename,deptno from emp; ENAME   &n...
    99+
    2022-10-18
  • 从零开始学习PYTHON3讲义(四)让程
    《从零开始PYTHON3》第四讲 先看看上一讲的练习答案。 程序完成的是功能,功能来自于“程序需求”(“需求”这个词忘记了什么意思的去复习一下第二讲)。 练习的程序需求当然就是练习题本身。所以编程类的练习题通常并没有所谓标准答案,只要...
    99+
    2023-01-30
    讲义 从零开始
  • SAP标准培训课程C4C10学习笔记(四)第四单元
    这个单元的内容是产品主数据和Price list。Hierarchy UI上按钮New的enable/disable逻辑SAP CRM和C4C数据同步的两种方式概述:SAP PI和HCI一种轻量级的C4C业务数据同步到S/4HANA的方式:...
    99+
    2023-06-05
  • 我的python学习--第十四天(一)
    一、运维管理系统(基于Flask)回顾1、权限控制  通过session实现权限控制,session是一个全局字典,当用户登录时,可以获取到用户的用户名,通过查找数据库获取用户的权限保存进session中,在每次页面跳转时同过查询sessi...
    99+
    2023-01-31
    第十四天 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作