ORACLE下查询操作

针对数据库操作最多的就是数据查询,这里分享一个我常用的方法,看到需求后,先确定查询范围,就是需要查询哪些表;之后确定查询条件;最后写出查询的字段。

ORACLE中之前说过有两个伪列ROWID和ROWNUM,用来标识唯一的一条记录。

1.基本查询

对数据查询最简单的也就是单表查询了,查询使用的语法是:

SELECT [COLS] FROM [TABLE] [WHERE][CONDITION]

平常查询时,一定会有条件,也就是使用到where关键字,之后接条件,这里的条件可以看之前的一篇文章【查询基础】。

这里针对单表查询,介绍一下分页的逻辑,oracle中没有mysql中的关键字limit,所以oracle中数据分页查询需要借助ROWNUM,具体如下:

-- 通用的分页SQL

SELECT * FROM
(SELECT b.*,ROWNUM r FROM
(SELECT * FROM emp) b WHERE ROWNUM <=(pageSize*pageIndex)) t
WHERE t.r > (pageSize*(pageIndex-1))

-- 具体分页SQL实例
SELECT * FROM
(SELECT b.*,ROWNUM r FROM
(SELECT * FROM emp) b WHERE ROWNUM <=12) t
WHERE t.r > (8)

2.连接查询

以下均以两张表连接查询为例

2.1 内连接

查询两张表符合条件的记录的交集

select * from emp,dept where emp.deptno=dept.deptno;

select * from emp inner join dept on emp.deptno=dept.deptno;
select e.ename,d.dname from emp e INNER JOIN d USING(deptno);

2.2 左外连接

将符合条件的左表中的所有数据查询出来,关联着右表中的数据,有则关联显示数据,无则显示null,两种写法

select e.name,d.name from emp e left join dept d on条件

或者是

select e.ename,d.name from emp e,dept d
where d.deptno = e.deptno(+)
order by d.dname;

不可以在使用外连接的情况下使用in关键字

2.3 右外连接

将符合条件的右表中的所有数据查询出来,关联着左表中的数据,有则关联显示数据,无则显示null,两种写法

select e.name,d.name from dept d right join emp e on条件;

或者是

select e.ename,d.name from emp e,dept d
where d.deptno(+) = e.deptno
order by d.dname;

2.4 自连接

就是给自己取个别名,然后当作两个表连接,自连接中可以使用外连接。

3.子查询

3.1 基础子查询

子查询可以简单的理解为一个查询的结果,作为另一个查询的条件,注意在子查询中不能使用order by关键字,排序必须在父查询中进行。如果子查询返回的结果是多行,而其父查询中使用的是比较运算符,将会出现错误。当内部select语句给外部的select语句返回一行或多行,在父查询中可以使用in,any,all等关键字。如下例子:

select deptno,sal from emp

where (deptno,sal) in (select deptno,min(sal) from emp group by deptno);

3.2 关联子查询

关联子查询指的是子查询引用与父查询相关的一列或多列,子查询需借助父查询,父查询也需借助子查询。此关联子查询可用exists关键字来实现如下例子:

-- 直接写关联子查询
select empno,ename,sal,deptno from emp outers
where sal >
(select avg(sal) from emp inners where inners.deptno=outers.deptno);
-- 使用exists操作符实现子查询

select empno,ename,sal,deptno from emp outers
where exists
(select avg(sal) from emp inners where inners.deptno=outers.deptno);

3.3 子查询应用

一般子查询经常用在from关键字和where关键字之后,如下两个例子:

-- 在where之后用

select * from emp where sal>(select avg(sal) from emp)

-- 在from之后用

select ename,dname from
(select * from emp e,dept d where e.deptno=d.deptno)

6、oracle数据库下查询操作相关推荐

  1. mysql long varchar2_案例:Oracle数据库long查询结果转换为varchar2类型方法的操作步骤...

    天萃荷净 将Oracle数据库查询出来的long结果转换为varchar2类型数据 来自Thomas Kyte <Oracle9i/10g/11g编程艺术> 12章节中.由于long的操作 ...

  2. 【干货】Oracle数据库常用十一大操作指令

    相关文章导读 收藏 | 超详细的Oracle19c安装步骤_XMWS-IT-CSDN博客 DBA数据库管理必备认证:ORACLE OCP 19C 教材下载 Oracle数据库常用十一大操作指令 1. ...

  3. oracle表的历史数据转储过程,C#连接Oracle数据库通过存储过程操作数据库 - cuizm的专栏 - CSDN博客...

    C#连接Oracle数据库通过存储过程操作数据库 收藏 此文于2011-06-07被推荐到CSDN首页 此文于2011-06-08被推荐到CSDN首页 如何被推荐? 之前笔者一直用C#连接SQL Se ...

  4. oracle表重命名 索引,CSS_在Oracle数据库中按用户名重建索引的方法,如果你管理的Oracle数据库下某 - phpStudy...

    在Oracle数据库中按用户名重建索引的方法 如果你管理的Oracle数据库下某些应用项目有大量的修改删除操作, 数据索引是需要周期性的重建的. 它不仅可以提高查询性能, 还能增加索引表空间空闲空间大 ...

  5. Oracle 数据库简单日常操作

    Oracle 数据库简单日常操作 目录 Oracle 数据库简单日常操作 SQL基础部分 1.简介 2.安装好之后可以登录系统账户 3.用户与表空间 4.数据字典 5.如何启用scott用户 6.表空 ...

  6. oracle 数据库怎么查询,Oracle 数据库基础查询

    1.1文件存储 对数据的存储需求一直存在.数据保存的方式,经历了手工管理.文件管理,数据库管理阶段. 文件存储方式保存数据的弊端: 1.缺乏对数据的整体管理,数据不便修改: 2.不利于数据分析和共享; ...

  7. php 打印oracle数组,ThinkPHP框架自身$map数组查询语言where条件对应oracle数据库时间戳查询方法...

    oracle数据库时间戳 查询 sql: to_char(date,'yyyy-mm-dd') >= '2013-02-20' and to_char(date,'yyyy-mm-dd') &l ...

  8. Oracle数据库安装图文操作步骤

    Oracle数据库安装图文操作步骤 一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符. 官方下 ...

  9. Oracle数据库数据查询语句示例(包含大部分常用语句)

    Oracle数据库数据查询语句示例(包含大部分常用语句) 目标 本文用到的关系模式 语句示例 1.在创建的s,p,j和spj表中完成以下查询 (1)查询零件重量在10-20之间(包括10和20)的零件 ...

最新文章

  1. Git使用sublime_text作用默认编辑器
  2. C/C++网络编程中的TCP保活
  3. 原来女孩子做电子工程师也很厉害。。
  4. 35解释器模式(Interpreter Pattern)
  5. faster rcnn resnet_RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN检测模型对比
  6. LeetCode 1091. 二进制矩阵中的最短路径(BFS)
  7. html5 密码框明文,elementUI的密码框的密文和明文
  8. 一文搞懂RSOP偏振态旋转
  9. CDH中配置hive支持update delete
  10. 树莓派系列五:openCV之火焰检测(一)
  11. EXCEL表格-COUNTIF函数查找数据重复项
  12. Burp suite - Burp Clickbandit
  13. 水深6到9米有鱼吗_红黄尾鲴鱼钓法大全(附配方)
  14. 微信小程序基于mpvue的ui组件之选择器
  15. easyui treegrid php,easyUI TreeGrid | 学步园
  16. 北京大学计算机学院的院徽,院徽、logo和学院口号征集活动
  17. 利用Python处理excel表格数据
  18. IntelliJ IDEA2017 激活方法
  19. python 实现maltab中离散正弦变换dst及其反变换idst
  20. loadrunner的TPS和点击率HPS

热门文章

  1. php代码里加图片,php如何添加图片
  2. linux yum自动挂载_LINUX6安装YUM仓库和实现开机自动挂载
  3. 问题 B: 数塔问题
  4. 695.岛屿的最大面积(026)BFS
  5. html位置下移像素点,吃透移动端 1px的具体用法
  6. [SpringSecurity]web权限方案_用户授权_注解使用
  7. C++二维数组作为函数参数
  8. [Java基础]IO流小结
  9. 简单的二叉树创建与遍历
  10. [蓝桥杯2016决赛]平方末尾-数论,枚举