Oracle数据库学习(二)
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数据库学习(二)的更多相关文章
- 推荐一个Oracle数据库学习网站
推荐一个我个人的Oracle数据库学习网站,比较系统性的整理,会持续更新的网站.网址: Oracle基础教程: http://www.oraclejsq.com/article/010100110.h ...
- Oracle的学习二:表管理(数据类型、创建/修改表、添加/修改/删除数据、数据查询)
1.Oracle表的管理 表名和列名的命名规则: 必须以字母开头: 长度不能超过30个字符: 不能使用oracle的保留字: 只能使用如下字符:A-Z, a-z, 0-9, $, # 等. Oracl ...
- ORACLE数据库学习之逻辑结构
逻辑结构 数据库逻辑结构包含表空间.段.范围(extent).数据块和模式对象. (一)表空间 一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间类似于sybase下的设备.(TABLES ...
- ORACLE数据库学习之体系结构
Oracle体系结构 ORACLE数据库体系结构决定了oracle如何使用网络.磁盘和内存.包括实例(instance),文件(file)和进程(process不包括后台进程)三部分. 实例:每 ...
- oracle数据库学习
trunc(number[,decimals])--number 待做截取处理的数值:decimals 指明需保留小数点后面的位数 CREATE PUBLIC DATABASE LINK Co ...
- Oracle数据库学习(四):学习中的遇到的问题
一.xhost图形化界面安装问题 问题1:运行xhost +命令,出现命令没有找到错误 原因:Linux系统没有安装xhost图形化包. 解决办法:安装xhost图形化包,命令如下: yum what ...
- oracle数据库学习记录(持续更新中...)
--------------------------------------------day1------------------------------------------------- 1. ...
- Oracle数据库学习(一)
Oracle数据库由甲骨文公司开发,是基于对象的关系型数据库:下面是简单的学习数据库操作等知识. 1.SQL单表查询(设一个表名为tab) (1)查询所有记录 select * from tab(一般 ...
- Oracle数据库学习笔记
创建表的同时插入数据:create table zhang3 as select * from zhang1;create table zhang3(id,name) as select * from ...
- Oracle数据库之二
SELECT查询 函数分为: 单行函数 -- 一条记录进入,一条记录输出 多行函数(分组函数)-- 多条记录进入,按组输出 单行函数: select id,first_name,nvl(commiss ...
随机推荐
- POJ1442 Black Box 堆
用大根堆和小根堆分别存放前$i-1$大的元素前$k-i$小的元素. 将当前序列的元素压入最小堆,如果最小堆的最小数大于最大堆的最大数则进行交换,保证最大堆中的所有数小于最小堆. 因为$i$值每进行一次 ...
- E. XOR and Favorite Number 莫队 2038: [2009国家集训队]小Z的袜子(hose)
一直都说学莫队,直到现在才学,训练的时候就跪了 T_T,其实挺简单的感觉.其实训练的时候也看懂了,一知半解,就想着先敲.(其实这样是不好的,应该弄懂再敲,以后要养成这个习惯) 前缀异或也很快想出来 ...
- linkedlist--lecture-4
1.链表数据结构 内存利用率高:动态分配 2.链表类定义 单向链表节点 public calss ListNode { int val =0; ListNode next = null; public ...
- (转)老男孩linux培训某节课前考试试题及答案分享
目录:[考试目的] ................................2[考试范围] ...............................2[答题策略] .......... ...
- Sqoop Import HDFS
Sqoop import应用场景——密码访问 注:测试用表为本地数据库中的表 1.明码访问 sqoop list-databases \ --connect jdbc:mysql://202.193. ...
- SpringBoot | 第十四章:基于Docker的简单部署
前言 讲解了单元测试,本章节讲讲应用的部署吧.总体而言,在进行自动化部署时,基本都会用上Jenkins+Maven+Docker进行部署.本章节主要讲解使用Maven+Docker进行SpringBo ...
- LR C语言语句复习,几个简单代码
嵌套循环 Action() { int i,j; ;i<=;i++) { ) beark; else lr_output_message("i=%d",i); ;j<= ...
- hibernate课程 初探单表映射2-4 transaction简介
1 hibernate是非自动提交.如果transaction不写的话,会只创建表结构而不插入语句. 如果不写transaction而想实现插入的功能的话,需要重写session的dowork方法 ...
- 解决IE8的兼容问题
本文分享下我在项目中积累的IE8+兼容性问题的解决方法.根据我的实践经验,如果你在写HTML/CSS时候是按照W3C推荐的方式写的,然后下面的几点都关注过,那么基本上很大一部分IE8+兼容性问题都OK ...
- mockjs模拟数据请求
一般项目的方法 <html> <head> <script> <script src="http://requirejs.org/docs/rele ...