6、oracle数据库下查询操作

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core 2.0 : 图说管道,唐僧扫塔的故事

本文通过一张GIF动图来继续聊一下ASP.NET Core的请求处理管道&#xff0c;从管道的配置、构建以及请求处理流程等方面做一下详细的研究。&#xff08;ASP.NET Core系列目录&#xff09;一、概述上文说到&#xff0c;请求是经过 Server监听>处理成httpContext>Application…

P3521-[POI2011]ROT-Tree【线段树合并】

正题 题目链接:https://www.luogu.com.cn/problem/P3521 题目大意 一棵二叉树&#xff0c;叶子节点有权值&#xff0c;对于每个非叶子节点可以选择交换左右节点&#xff0c;求最后遍历出来的叶子节点权值逆序对最少。 解题思路 十分显然一个节点是否交换是不影响该节点子树之…

7、oracle下的序列

ORACLE下的序列 序列是一种数据库对象&#xff0c;用于生成一系列的整数&#xff0c;可以用来唯一的标记一条记录&#xff0c;在mysql种有字段自增的概念&#xff0c;但是oracle种是没有字段自增的&#xff0c;所以可以使用序列来作为主键的自动生成方式。 1.序列的使用 序列…

ASP.NET MVC应用迁移到ASP.NET Core及其异同简介

ASP.NET Core是微软新推出支持跨平台、高性能、开源的开发框架&#xff0c;相比起原有的ASP.NET来说&#xff0c;ASP.NET Core更适合开发现代应用程序&#xff0c;如跨平台、Dorker的支持、集成现代前端开发框架(如npm、bower、gulp等等)。另外相比ASP.NET它的性能更好&#xf…

Div1 小A抓小B tarjan双连通分量缩点+dfs

题目描述 小A和小B在一个无向图G上进行一个游戏。图G是连通的&#xff0c;有n个点&#xff0c;n条边&#xff0c;无重边&#xff0c;无自环&#xff0c;结点编号为1~n。游戏开始前小A在结点x&#xff0c;小B在结点y&#xff08;x≠y&#xff09;。游戏开始后&#xff0c;小A和小…

P3809-[模板]后缀排序(SA)

正题 题目链接:https://www.luogu.com.cn/problem/P3809 题目大意 长度为nnn的字符串&#xff0c;求它的字符数组(后缀排序后排名为iii的在哪个位置)。 解题思路 大概思路就是倍增排序&#xff0c;先排每个后缀的第一个字符&#xff0c;然后是两个&#xff0c;然后是四个&am…

8、oracle数据库下的索引

ORACLE下的索引 索引是oracle下的一类对象&#xff0c;主要用于提高查询的效率。 1.操作索引 1.1 创建、修改索引 -- 添加一般索引 create index i_test_tname on test(tname); -- 添加唯一索引&#xff0c;不能包含相同的值 create unique index i_test_tname on test(tnam…

使用 C# (.NET Core) 实现模板方法模式 (Template Method Pattern)

本文的概念内容来自深入浅出设计模式一书.项目需求有一家咖啡店, 供应咖啡和茶, 它们的工序如下:咖啡:茶:可以看到咖啡和茶的制作工序是差不多的, 都是有4步, 其中有两步它们两个是一样的, 另外两步虽然具体内容不一样, 但是都做做的同一类工作.现在问题也有了, 当前的设计两个…

P2396-yyylovesMathsVII【状压dp】

正题 题目链接:https://www.luogu.com.cn/problem/P2396 题目大意 nnn个数字&#xff0c;依次选择若干个数字使得没有任何一个前缀和等于厄运数字&#xff0c;厄运数字有mmm个。 解题思路 先预处理出disidis_idisi​表示集合iii的数字和。 然后对于disidis_idisi​不等于厄运…

9、oracle数据库下的视图和同义词

ORACLE下的视图和同义词 1.视图 视图就是一个查询的结果&#xff0c;可能包含一张表或者多张表的信息&#xff0c;创建视图其目的在于&#xff0c;便于查看表中的信息。视图只是在逻辑上存在。 1.1创建/修改视图 创建视图一定要有CREATE VIEW权限&#xff0c;基本语法为&am…

.NET Core Community 首个千星项目诞生:CAP

项目简介在我们构建 SOA 或者 微服务系统的过程中&#xff0c;我们通常需要使用事件来对各个服务进行集成&#xff0c;在这过程中简单的使用消息队列并不能保证数据的最终一致性&#xff0c; CAP 采用的是和当前数据库集成的本地消息表的方案来解决在分布式系统互相调用的各个环…

P2463-[SDOI2008]Sandy的卡片【SA,二分答案】

正题 题目链接:https://www.luogu.com.cn/problem/P2463 题目大意 nnn个长度不同的数字序列&#xff0c;序列的子串相同的定义是该子串相邻的两两差相同。 求公共子串的最长长度。 解题思路 做一个差分后问题就变为了求nnn个串的最长公共子串。 我们将所有的字符串接在一起…

10、oracle下PL/SQL编程基础

ORACLE下的PL/SQL编程基础 PL/SQL语言是程序化程序设计语言&#xff0c;块是PL/SQL编程中的基本结构&#xff0c;其优点在于支持SQL、支持面向对象编程、性能好、可移植性、与sql集成、安全性高等。 1.基本语法 1.1 基本语法结构 [set severoutput on] declare 变量&…

.NET Core 从 Github到 Nuget 持续集成、部署

一.前言Nuget 作为一个.NET研发人员&#xff0c;我想你都不会陌生&#xff0c;他为我们提供非常方便的程序包管理&#xff0c;不管是版本&#xff0c;还是包的依赖都能轻松应对&#xff0c;可以说是我们的好助手。而 Nuget 除了官方nuget.org以外&#xff0c;我们也可以用起提供…

P2336-[SCOI2012]喵星球上的点名【SA,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P2336 题目大意 nnn个名字(每个名字两个串)&#xff0c;mmm次点名&#xff0c;如果一次点名里是一个名字两个串中的子串该人就要答到。 对于每次点名求多少个人答到&#xff0c;每个名字求答到多少次。 解题思路 先考虑第一…

11、oracle数据库下的事务和触发器

ORACLE下的事务和触发器 1.事务 事务是数据库的一种机制&#xff0c;当执行一系列操作时&#xff0c;事务可以保证这一系列操作都能完成&#xff0c;在此期间如果出现问题&#xff0c;则这一系列操作导致的结果均回退到原始状态。这样就保证了数据的一致性&#xff0c;事务在…

微软发布自己定制的 Linux 内核和发行版,面向物联网

微软首次发布了自己的定制 Linux 内核和发行版。在旧金山举行的新闻发布会上&#xff0c;微软宣布了针对物联网设备的解决方案 Azure Sphere。Azure Sphere 包含三个组件。其中之一是微软设计的 Sphere MCU&#xff0c;将免费提供给厂商&#xff0c;联发科将在今年晚些时候推出…

P3804-[模板]后缀自动机【SAM】

正题 题目链接:https://www.luogu.com.cn/problem/P3804 题目大意 长度为nnn的串&#xff0c;求一个出现次数不小于2的子串使得子串长度乘上出现次数最大。 解题思路 构建SAMSAMSAM的时候统计一下每个子串出现多少次即可。 codecodecode #include<cstdio> #include&l…

MEDIATR 一个低调的中介者类库

微软官方的开源项目eShopOnContainers中&#xff0c;用到了一个实现中介者模式的类库&#xff1a;MediatR。这个类库的作者叫Jimmy Bogard&#xff0c;在其gtihub主页上可以看到&#xff0c;注明的对象映射组件AutoMapper 就是他写的。其博客上的自我介绍是这么写的&#xff1a…

12、oracle数据库下的存储过程和函数

ORACLE下的存储过程和函数 存储过程和函数是一种操作块&#xff0c;用来流程化、整体化处理业务逻辑的数据库操作方式。我理解的是相当于java开发语言中方法的概念&#xff0c;存储过程和函数的区别在于函数可以有返回值&#xff0c;而过程没有返回值。 1.存储过程 -- 创建存…