上次新霸哥和大家讲解了一些关于oracle的知识发现大家对oracle还是比较感兴趣的,下面新霸哥就大家比较关系的oracle中常用的查询有哪几种?做个和oracle相关的开发的朋友可能会知道答案,但是刚接触过oracle的朋友可能还不知道是怎么回事。今天,新霸哥将在此给大家做一个详细的介绍。

  多表连接查询

  连接多表

  1. 笛卡尔积

  在没有任何过滤条件的情况下,左表的任意一行记录 与 右表的任意记录进行连接

  2. 使用连接查询

  下面新霸哥简单的介绍一下语法1:select columnList from table1, table2 where table1.column1 operator table2.column2(连接条件) and 过滤条件,在where子句中指定连接条件,连接n个表时,连接条件要有n-1个,几个表中的同名字段 引用时要加前缀给表起别名:from tablename n

  这是语法2:select columnList from table1 join table2 on table1.column1 operator table2.column2 join table3 on ... where 过滤条件

  非等值连接

  连接两个或多个表时,在条件中不使用等号,而是用比如<,>,>=,<=,!=,between m and n,in等运算符

  自然连接

  根据两个表的同名列来执行连接操作只有当表中有同名列且数据类型也相同时才能在使用NATURAL JOIN。

  看看新霸哥给的语法:select columnList from table1 natural join table2;

  使用Using子句连接表

  如果两个表有同名列,在连接语句里使用Using子句来指定连接的列

  select columnList from table1 join table2 using (columnName)

  交叉连接

  使用关键字Cross包含多个表的连接,连接的结果为一个笛卡尔乘积

  语法:select columnList from table1 cross join table2;

  外连接

  当两个表执行连接操作时,表中不满足连接条件的行是会被显示的

  语法:select columnListfrom table1 [left|right|full] outer join table2 on ...

  三种类型的外连接:

  1. Left outer join 左外连接

  返回第一个表的所有行 和 第二个表中满足连接条件的行

  2. Right outer join 右外连接

  返回第二个表的所有行 和 第一个表中满足连接条件的行

  3. Full outer join 满外连接

  返回两个表的所有行,分为两个部分:

  1) 返回第一个表的所有行,即便第二表中没有匹配行

  2) 返回第二个表的所有行,即便第一表中没有匹配行

  4. 内连接 self join

  用于连接在同一个表的数据。

  子查询 Sub Query

  在一条select语句内定义另外一条select语句。

  注意点:

  1. 子查询在主查询执行前执行

  2. 主查询使用子查询的结果

  3. 所有子查询必须用括号括起来

  4. 为了增强可读性,子查询应置于比较条件的右方

  5. 除非使用top-n分析,否则子查询中不使用order by

  子查询的嵌套

  包含一个或多个子查询的查询

  单行子查询:子查询结果为一行

  多行子查询:子查询结果为多行

  Top-N查询

  语法:select columnList from table where rownum <= n rownum只对当前select有效

  新霸哥通过开发中遇到的一些问题总结了查询中一些常见问题:

  1. 获取单表所有记录 select * from table;

  2. 获取单表某字段不重复记录 select distinct column from table;

  3. 查询结果字段取别名 select column otherName from table;

  4. 查询过滤条件 select columnList from table where where_condition;

  5. 查询结果排序 select columnList from table order by column [asc|desc];

  6. 分组查询 select columnList from table group by column1, column2;

  7. 过滤多行函数结果 select columnList from table group by column1, column2 having having_condition;

  8. 多表查询,内连接,外连接(左外连接、右外连接、满外连接)

  select columnList from table1 [left|right|full] join table2 on table1.column1 = table2.column2;

  9. 子查询

  10. 嵌套子查询

  好了,今天的关于软件开发中oracle查询常用方法总结就写到这里了,更多的关于oracle方面的问题欢迎和新霸哥交流。

软件开发中oracle查询常用方法总结的更多相关文章

  1. Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义

    Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...

  2. 软件开发中的完整测试所包括的环节UT、IT、ST、UAT

    软件开发中的完成测试环境所包括的环节包括:UT.IT.ST.UAT UT = Unit Test 单元测试 IT = System Integration Test 集成测试ST = System T ...

  3. 关于软件开发中兼容win7注册表的解决方案

    关于软件开发中兼容win7注册表的解决方案   编写人:CC阿爸 2014-3-14 l  近来在开发一winform程序时,发现在xp 系统访问注册表一切正常.可偏这个时候,微软又提醒大家.Xp今年 ...

  4. 软件开发中 SQL SERVER 任务的用法

    在软件开发中,经常性会用到定时任务.这个时候你可能会想到线程.但是事实中,线程方法比较麻烦.容易出错,资源竞争等问题,设计起来让你很头痛. 现在给大家提供一个新的思路,用SQL SERVER 的任务管 ...

  5. Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向

    Atitit. 软件开发中的管理哲学--一个伟大的事业必然是过程导向为主    过程导向 vs 结果导向 1. 一个伟大的事业必然是过程导向为主 1 1.1. 过程的执行情况(有明确的执行手册及标准) ...

  6. UML在软件开发中各个阶段的作用和意义

    经典的软件工程思想将软件开发分成5个阶段:需求分析,系统分析与设计,系统实现,测试及维护五个阶段. 之所以如此,是因为软件开发中饣含了物和人的因素,存在着很大的不确定性,这使得软件工程不可能像理想的, ...

  7. Java软件开发中迭代的含义

    软件开发中,各个开发阶段不是顺序执行的,而各个阶段都进行迭代并行执行的,然后在进入下一个阶段的开发. 这样对于开发中的需求变化,及人员变动都能得到更好的适应. 软件开发过程汇总迭代模型如下图所示:

  8. 软件开发中的单一职责(转至INFOQ)

    最近在实践微服务化过程中,对其“单一职责”原则深有体会.那么只有微服务化才可以单一职责,才可以解耦吗?答案是否定的. 单一职责原则是这样定义的:单一的功能,并且完全封装起来. 我们做后端Java开发的 ...

  9. 音频软件开发中的debug方法和工具

    本文系作者原创.如转载,请注明出处. 谢谢! 音频软件开发同其他软件开发一样,都需要去调试.音频软件调试同其他软件调试方法有相同的地方,也有不同的地方,同时调试时还需要借助一些专门的工具,有了这些方法 ...

随机推荐

  1. Spark学习(一)——Spark运行架构

    基本概念 在具体讲解Spark运行架构之前,需要先了解几个重要的概念: RDD:是弹性分布式数据集(Resilient Distributed Dataset)的简称,是分布式内存的一个抽象概念,提供 ...

  2. 黑马lavarel教程---3、数据库和视图注意点

    黑马lavarel教程---3.数据库和视图注意点 一.总结 一句话总结: 使用其实都很简单,MVC的框架都很像,用的时候直接可以去看手册,这样才能记得住 1.数据库删除操作注意? 删非删:很多网站的 ...

  3. 了解一下urlencode()函数

    urlencode()函数 在PHP官方网站中的解释如下: 编码 URL 字符串——就是对特殊字符进行编码转移(.  _  -  除外): string urlencode ( string $str ...

  4. 使用KFold进行训练集和验证集的拆分,使用准确率和召回率来挑选合适的阈值(threshold) 1.KFold(进行交叉验证) 2.np.logical_and(两bool数组都是正即为正) 3.np.logical_not(bool数组为正即为反,为反即为正)

    ---恢复内容开始--- 1. k_fold = KFold(n_split, shuffle) 构造KFold的索引切割器 k_fold.split(indices) 对索引进行切割. 参数说明:n ...

  5. QQ聊天监视器(简易版),可以获取当前QQ进程的聊天窗口内容

    原始出处: https://www.cnblogs.com/Charltsing/p/QQChatsMonitor.html 监视QQ聊天信息有很多种方法,最简易的就是直接抓取聊天窗口内容,一个QQ进 ...

  6. Firefox63以后 禁止自动更新方式

    参考:https://bbs.kafan.cn/thread-2135160-1-1.html 63版以后在prefs.js文件末尾加代码来禁止自动更新的方式失效 新方式: 使用DisableAppU ...

  7. Go语言引用类型

    切片 1.切片定义 a) 声明一个切片 , , } , , } b) 通过make来创建切片 ) c) 通过 := 语法来定义切片 slice := []int{} slice := make([], ...

  8. nginx不记录指定文件类型日志

    1.指定记录文件日志记录的内容. vim /usr/local/nginx/conf/nginx.conf如下部分: log_format dd '$remote_addr $http_x_forwa ...

  9. 阶段3 2.Spring_03.Spring的 IOC 和 DI_5 BeanFactory和ApplicationContext的区别

    核心容器的两个接口.ApplicationContext和BeanFactory 怎么知道对象被创建了呢 我们只需要在实现类里面构造函数内打印输出一段话 然后再这里加上一个断点 运行程序,光标停在这个 ...

  10. 十六:jinja2中的if和for

    jinja2中的逻辑语句和python中的基本一致,执行逻辑的时候用{% 逻辑关键字 %}开始,{% end逻辑关键字 %}结束 if语句(判断关键字也是一样的,and.or.not···): for ...