2.用SQL进行多表查询

(1)无条件多表查询

笛卡尔集:总记录数=table1记录数×table2记录数

select * from table1, table2

(2)等值连接

内连接:select tab1.f_z, tab2.* from table1 tab1, table2 tab2 where tab1.f_z = tab2.f_c。

左外连接(包括没有单位的机型):select tab1.f_z, tab2.* from table1 tab1, table2 tab2 where tab1.f_z = tab2.f_c(+)。

右外连接(包括没有机型的单位):select tab1.f_z, tab2.* from table1 tab1, table2 tab2 where tab1.f_z(+) = tab2.f_c。

实际使用中,建议外连接统一使用左外连接;查询字段和连接条件中,若两表都有相同的字段名,必须指定字段对应的表名。

3.用SQL进行嵌套查询

也叫子查询,子查询形成的结果又成为父查询的条件。

in、exists:如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in;反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。

not in、not exists:不推荐not in,会导致两个表的全表扫描,尽量转换为minus重写;not exists效率一般比较高;根据实际执行计划调试。

union(并集):select 1 as f_id, ‘是’ as f_m from tab union select 0 as f_id, ‘否’ as f_m from tab。

intersect(交集)、minus(差集)

并、交和差操作的嵌套查询要求属性具有相同的定义,包括类型和取值范围。

4.用SQL进行函数查询

(1)函数:

Round、Count、Sum、Avg、Min、Max

(2)条件表达式:nvl、decode、case when

select nvl(f_z, 0) from table;如果f_z为空,返回0;否则为f_z。

select decode(f_z, 1 , '客机', '货机') from table。

select case when f_z = 1 then '客机' else '货机' end from table。

case语句在处理相似问题就显得比较简捷灵活。另外,当需要匹配少量数值时,选用decode会更加方便一些。

5.Dual的使用

Dual是Oracle中实际存在的一种表,任何用户都可以使用,常用在没有目标表的select语句中。可用于查看时间、用户、计算等;select user from dual;select sysdate from dual。

Oracle数据库学习(二)的更多相关文章

  1. 推荐一个Oracle数据库学习网站

    推荐一个我个人的Oracle数据库学习网站,比较系统性的整理,会持续更新的网站.网址: Oracle基础教程: http://www.oraclejsq.com/article/010100110.h ...

  2. Oracle的学习二:表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询)

    1.Oracle表的管理 表名和列名的命名规则: 必须以字母开头: 长度不能超过30个字符: 不能使用oracle的保留字: 只能使用如下字符:A-Z, a-z, 0-9, $, # 等. Oracl ...

  3. ORACLE数据库学习之逻辑结构

     逻辑结构 数据库逻辑结构包含表空间.段.范围(extent).数据块和模式对象. (一)表空间 一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间类似于sybase下的设备.(TABLES ...

  4. ORACLE数据库学习之体系结构

     Oracle体系结构 ORACLE数据库体系结构决定了oracle如何使用网络.磁盘和内存.包括实例(instance),文件(file)和进程(process不包括后台进程)三部分. 实例:每 ...

  5. oracle数据库学习

    trunc(number[,decimals])--number 待做截取处理的数值:decimals 指明需保留小数点后面的位数     CREATE PUBLIC DATABASE LINK Co ...

  6. Oracle数据库学习(四):学习中的遇到的问题

    一.xhost图形化界面安装问题 问题1:运行xhost +命令,出现命令没有找到错误 原因:Linux系统没有安装xhost图形化包. 解决办法:安装xhost图形化包,命令如下: yum what ...

  7. oracle数据库学习记录(持续更新中...)

    --------------------------------------------day1------------------------------------------------- 1. ...

  8. Oracle数据库学习(一)

    Oracle数据库由甲骨文公司开发,是基于对象的关系型数据库:下面是简单的学习数据库操作等知识. 1.SQL单表查询(设一个表名为tab) (1)查询所有记录 select * from tab(一般 ...

  9. Oracle数据库学习笔记

    创建表的同时插入数据:create table zhang3 as select * from zhang1;create table zhang3(id,name) as select * from ...

  10. Oracle数据库之二

    SELECT查询 函数分为: 单行函数 -- 一条记录进入,一条记录输出 多行函数(分组函数)-- 多条记录进入,按组输出 单行函数: select id,first_name,nvl(commiss ...

随机推荐

  1. JS对DOM节点操作整理

    获取节点: //按照ID获取 document.getElementById('element'); //按照节点名称获取,返回类数组对象 document.getElementsByTagName( ...

  2. P2066 机器分配 (DP+DP输出)

    题目描述 总公司拥有高效设备M台,准备分给下属的N个分公司.各分公司若获得这些设备,可以为国家提供一定的盈利.问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值.其中M≤15,N≤10.分 ...

  3. scrapy可视化管理工具spiderkeeper使用笔记

    http://www.scrapyd.cn/doc/156.html  入门中文教程 spiderkeeper是一款开源的spider管理工具,可以方便的进行爬虫的启动,暂停,定时,同时可以查看分布式 ...

  4. JS——两个原生选择器

    1. document.querySlector() 2.document.querySlectorAll() <!DOCTYPE html> <html lang="en ...

  5. python入门之os模块

    import os os.getcwd() 同Linux的pwd os.chdir("/opt") 同Linux的cd os.curdir 返回当前目录 os.pardir 获取上 ...

  6. 024 Swap Nodes in Pairs 交换相邻结点

    给定一个链表,对每两个相邻的结点作交换并返回头节点.例如:给定 1->2->3->4,你应该返回 2->1->4->3.你的算法应该只使用额外的常数空间.不要修改列 ...

  7. (转)linux配置网卡的命令

    linux配置网卡的命令 原文:http://blog.51cto.com/lanxianting/1754923 1.配置命令 如果一台服务器需要通外网,能被远程连接,就得给这个台服务器配置ip,子 ...

  8. Spark Mllib里的如何对两组数据用斯皮尔曼计算相关系数

    不多说,直接上干货! import org.apache.spark.mllib.stat.Statistics 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mlli ...

  9. c++概念字符串操作 (转)

    本文转自:http://www.jb51.net/article/37410.htm 一.char_traits 字符特征类 1)意义:包装特定串元素的通用行为界面,以便容器实现时依据特征信息而执行特 ...

  10. 基于php缓存的详解

    nginx缓存 nginx有两种缓存机制:fastcgi_cache和proxy_cache 下面我们来说说这两种缓存机制的区别吧 proxy_cache作用是缓存后端服务器的内容,可能是任何内容,包 ...