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。

最新文章

  1. Docker - 创建Swarm
  2. BZOJ1024&丝帛搜索
  3. SCSS
  4. 你所知道好玩有趣的 iOS URL schemes 有哪些?
  5. HTTP协议详解(真的很经典)
  6. ios-NSStringFromCGRect直接输出控件的frame
  7. Flasback数据库(闪回数据库)
  8. 菜鸟学习HTML5+CSS3(一)
  9. 为ubuntu只带的network-manager添加latp/ipsec VPN
  10. Sublime Text2 快捷键设置
  11. php简单数据缓存类
  12. highlight高亮
  13. 【锋利的Jquery】读书笔记二
  14. weblogic 密码加密
  15. Ubuntu下java环境的搭建
  16. Markdown编辑技巧
  17. Forth 词典和词汇
  18. ADO.NET连接字符串大全
  19. 在虚拟机上安装gho、esd(wim)系统镜像文件
  20. 编写组件TComponent published $M+ 问题

热门文章

  1. day02笔记
  2. F. Relatively Prime Powers (求([2,n],内不是次方的数量)
  3. LeetCode 046 Permutations 全排列
  4. 记录一个在线压缩和还原压缩js代码的工具
  5. settings.xml样例文件
  6. Linux下安装软件遇见的问题汇总
  7. vue3.0学习笔记(二)
  8. 从零开始的全栈工程师——js篇2.10(对象与构造函数)
  9. 配置海康IPC或大华IPC通过路由器公网访问
  10. 【extjs6学习笔记】1.11 初始: config