我的编程空间,编程开发者的网络收藏夹
学习永远不晚

学习Oracle的历程 (四)

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

学习Oracle的历程 (四)

学习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了,

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

    (^_^)~喵~!!

 

    

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

学习Oracle的历程 (四)

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

下载Word文档

猜你喜欢

学习Oracle的历程 (四)

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

学习Oracle的历程 (一)

功能强大、性能卓越   Oracle数据库思想的诞生是在IBM公司。 上世纪60年代-70年代--IBM的一款数据库IMS,98%+ 二. Oracle 10g 安装包 链接:https://pan.baidu.com/s/1JAqXrDQsuceK0zOZ
学习Oracle的历程 (一)
2014-09-24

学习Oracle的历程 (二)

温馨提示 :   Oracle 中 单行注释 --  多行注释 一 . 数据库操作   1) 概述 Oracle表与用户关联 每一个用户,需要确定表存放位置,此位置称为 表空间。 在Oracle中表空间分2种:永久表空间、临时表空间
学习Oracle的历程 (二)
2015-09-14

学习Oracle的历程 (三)

今天,我们接着学习Oracle的相关内容, (#^.^#)重点来了!     因为今天的是关于语句操作的所以小喵就只留截图了哦! 一. 表的操作     1) 创建表         语法1 : 创建一个新表 create table 表名( 字段名  
学习Oracle的历程 (三)
2017-10-28

学习Oracle的历程 (五)

今天,我们接着学习Oracle数据库,今天要学的是PL/SQL 中的单行函数 与 分析函数以及集合运算. 注意,今天的知识小喵个人觉得还是挺难的同事也挺重要的,要认真学习哦! 一 . 单行函数     首先我们来说一下单行函数分为哪些呢?        单行函
学习Oracle的历程 (五)
2021-01-27

Oracle入门学习四

上一篇:Oracle入门学习三学习视频:https://www.bilibili.com/video/BV1tJ411r7EC?p=35Oracle表连接:内连接、外连接。外连接分左连接、右连接。多表查询时,如果表之间没有条件关联,则会把所有匹配的结果查找出来
Oracle入门学习四
2017-05-24

Oracle学习(四) --- DQL语法

标准DQL语法select distinct * | 列名 as 别名, 列表2 as 别名2... | 聚合函数from 表名 as 别名, 表名2 as 别名2 ,....where 查询条件group by 分组字段 having 分组条件order b
Oracle学习(四) --- DQL语法
2017-09-05

Kotlin学习教程(四)

数据类:使用data class定义数据类是一种非常强大的类。在Kotlin学习教程(一)中最开始的用的简洁的示例代码就是一个数据类。这里
Kotlin学习教程(四)
2024-11-04

华为学习历程(3)

今天登陆到了[url]www.huawei.com.cn[/url],看了他们网站关于ne80的介绍,感觉ne80还不错,如果和cisco12000拼一下,不知道那个更猛(不禁又在为思科伤心了)。而后又逛了[url]www.ciscohua
2023-01-31

Numpy库的学习(四)

我们今天继续学习一下Numpy库接着前面几次讲的,Numpy中还有一些标准运算a = np.arange(3)print(a)print(np.exp(a))print(np.sqrt(a))exp表示求e的幂次方,比如上面看到的,e的0次
2023-01-31

网工的Linux系统学习历程

一、偶遇篇作为一名通过思科CCNP认证的网络工程师,专注于网络技术。但在日常的工作中,难免不接触到服务器,对于大多数服务器来说,鉴于稳定性等因素的考虑,基本使用的都是Linux系统,包括RHEL、CentOS、Ubuntu、SUSE、Deb
2023-06-05

我的python学习--第四天

一、首先是对前三天的学习内容进行复习  1、python基础的数据结构      数字(int/float,包括整数和浮点数)          布尔(boolean => True/False)      字符串(str,使用''或""括
2023-01-31

学习python的第四天(python的

一.Jupyter的安装以及运行1.Jupyter的安装运行CMD,在CMD中输入pip3 --default-timeout=100 install -U jupyter再输入pip3 install jupyter_contrib_nb
2023-01-31

我的学习经历——Linux系统入门教程

我想把最近学习Linux的经验和过程分析出来,当时是在上大三,是学生一枚,以前对开源也没有什么特殊的认识,只觉得很高深,不明觉厉的东西,在当时因为学校要参加职业技能大赛,其中有一团体性质的比赛,几个同学组成一个团队,比如几个同学负责基础网络
2023-06-05

Android学习教程之日历库使用(15)

本教程为大家分享了Android日历库的使用方法,供大家参考,具体内容如下 MainActivity.java代码:package siso.weekv; import android.content.Intent; import andr
2022-06-06

从零开始学习PYTHON3讲义(四)让程

《从零开始PYTHON3》第四讲先看看上一讲的练习答案。程序完成的是功能,功能来自于“程序需求”(“需求”这个词忘记了什么意思的去复习一下第二讲)。练习的程序需求当然就是练习题本身。所以编程类的练习题通常并没有所谓标准答案,只要能完成功能,
2023-01-30

SAP标准培训课程C4C10学习笔记(四)第四单元

这个单元的内容是产品主数据和Price list。Hierarchy UI上按钮New的enable/disable逻辑SAP CRM和C4C数据同步的两种方式概述:SAP PI和HCI一种轻量级的C4C业务数据同步到S/4HANA的方式:
2023-06-05

编程热搜

目录