内连接:从多张表中获取综合数据

inner join  on

  select 表1.字段,表2.字段 from 表1 inner join 表2 on 关系;

  select 表1.*,表2.* from 表1 inner join 表2 on 关系;

如:要查询员工的名字以及部门的编号,和部门地址

select e.ename,d.loc from emp e inner join dept d on e.deptno=d.deptno;

如:查询员工工资和员工工资等级(losal是同等级中的最低薪水,hisal是同等级中的最高薪水)

select ename 员工姓名,sal 员工工资,grade 薪水等级 from salgrade s inner join emp on e.sal>=s.losal and e.sal<=s.hisal;

外连接(把不满足条件的存在在表中的字段也显示出来)

左外连接 left join 把左表没有关联的字段也显示出来

如:select * from student s left join myclass m on s.cid=m.cid;

右外连接 right join 把右表没有关联的字段也显示出来

如:select * from student s right join myclass m on s.cid=m.cid;

全连接 full join 把左边和右边没有关联的字段都显示出来

如:select * from student s full join myclass m on s.cid=m.cid;

交叉连接:生成笛卡尔积

cross

如:select * from student s cross join myclass m;

笛卡尔积筛选(直接加where条件)

如:select * from student s cross join myclass m where s.cid=m.cid;

自连接:自己和自己做连接查询(将1张表理解为2张表)

如:查询每个员工的领导信息

select * from 员工表 y inner join 老板表 i on i.主键=y.外键;
select y.ename||'他的老板是'||i.ename from emp i on i.empno=y.mgr;

子查询:在SQL语句嵌套查询,必须使用()括起来

如:查询与SMITH同部门的员工信息

select ename,deptno from emp where deptno=(select deptno from emp where ename='smith');

多行子查询(in,not in)

如:查询与部门10员工同岗位的员工信息

select ename,job from emp where job in(select job from emp where deptno=10);

多列子查询

如:查询与SMITH同部门同岗位的员工信息

select ename,sal,job,deptno from emp where (job,deptno) = (select job,deptno from emp where ename='SMITH');

select * from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH');

内联视图子查询,作为数据源使用

select * from (select * from emp);

--把查询的结果排序

select rownum r,e.* from emp e;

--把查询的结果看做一张表

select * from (select rownum r,e.* from emp e) where r=4;

--查询公司设置了几个岗位

select count(*) from (select distinct job from emp);

--查询薪水最低的5个员工的信息

select * from (select ename,sal from emp order by sal) where rownum<=5;

(每个查询都会有rownum,排序后rownum也会随着打乱)

分页查询

select * from emp where rownum<=3;

--取4-6条

select * from (select rownum r,e.* from emp e) where r>3 and r<=6;

begin=(page-1)*max;

end=begin+max;

相关子查询:子查询依赖于父查询数据(子查询可以代替连接查询,但连接查询不能代替子查询)

select ename,'随便' from emp;

select ename,sal 自己的薪水,(select max(sal) from emp) 最高薪水 from emp;

--查询员工姓名和部门名称(不使用连接查询)(先执行外查询,后执行内查询)

select ename,deptno,(select loc from dept d where d.deptno=e.deptno) 部门地址 from emp e;

关于oracle数据库(9)的更多相关文章

  1. 使用Zabbix监控Oracle数据库

    Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...

  2. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  3. Oracle数据库该如何着手优化一个SQL

    这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...

  4. Oracle 数据库语句大全

    Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...

  5. Oracle数据库升级(10.2.0.4->11.2.0.4)

    环境: RHEL5.4 + Oracle 10.2.0.4 目的: 在本机将数据库升级到11.2.0.4 之前总结的Oracle数据库异机升级:http://www.cnblogs.com/jyzha ...

  6. 混合框架中Oracle数据库的还原处理操作

    在较早期的随笔<Oracle如何实现创建数据库.备份数据库及数据导出导入的一条龙操作>粗略介绍了Oracle数据库的备份还原操作,本文想从开发框架的基础上介绍Oracle数据库的脚本或者还 ...

  7. Oracle数据库的链接数目超标

    测试场景:Oracle数据库的链接数目超标,iServer是否自动连接. 测试步骤:(1)设置了最大连接数为85,oracle后台进程有83:(2)开启3台iserver(A,B,C)A,B发布tes ...

  8. 将Oracle数据库中的数据写入Excel

    将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...

  9. Oracle数据库11g各版本介绍及功能比较

    .标准版和企 业版.所有这些版本都使用相同的通用代码库构建,这意味着企业的数据库管理软件可以轻松地从规模较小的单一处理器服务器扩展到多处理器服务器集 群,而无需更改一行代码.Oracle数据库11g企 ...

  10. Oracle数据库,数据的增、删、改、查

    oracle数据库中,数据的增.删.改.查,通过SQL语句实现 SQL:结构化查询语言: 特点:不区分大小写:字符串用单引号引起来:语句结束用分号表示结束: 行注释,在语句的最前面加"--& ...

随机推荐

  1. NYOJ-47 过河问题(贪心)

    过河问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:5   描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的 ...

  2. 教务处sso设计缺陷

    前言 刚学习python,觉得比较枯燥总不知道从哪里入手,偶然一次,同学让我帮忙看看选课,发给我的是学校统一的默认格式的密码,突然就想试试有多少人还是默认密码,从QQ群里找了一份学生信息尝试了一下,发 ...

  3. Oracle获取时间日期月份星期数

    1.日期和字符转换函数用法(to_date,to_char)select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; ...

  4. 32bit程序在64bit操作系统下处理重定向细节(转自http://bbs.pediy.com/showthread.php?t=89054)

    1. 64bit操作系统的重定向机制以及目的 在64bit操作系统中,为了无缝兼容32bit程序的运行,64bit的Windows操作系统采用重定向机制.目的是为了能让32bit程序在64bit的操作 ...

  5. Scala学习---数组

    1.编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间 /** * Created by vito on 2017/1/11. */ object ex1 { ...

  6. CocoaPods 报错 [!] Error installing JSONModel

    pod install p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #34bd26 } span.s1 { } ...

  7. C语言 · 区间K大数查询

    问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个包含一个正整数m,表示询问个数 ...

  8. Linux安全检测常用方法

    一. 系统状态备份 主要是网络.服务.端口.进程等状态信息的备份工作 系统服务备份: chkconfig --list > services.log 进程备份: ps -ef > ps.l ...

  9. PyConChina2016 北京站 献给Python开发者

    开源编程语言Python近年来在互联网.游戏.云计算.大数据.运维.企业软件等领域有非常多的应用.今天小编就为大家推荐一场Python开发者的盛会:PyConChina2016(北京)! PyCon大 ...

  10. 2016年团体程序设计天梯赛-决赛 L1-7. 到底是不是太胖了(10)

    据说一个人的标准体重应该是其身高(单位:厘米)减去100.再乘以0.9所得到的公斤数.真实体重与标准体重误差在10%以内都是完美身材(即 |真实体重-标准体重| < 标准体重x10%).已知市斤 ...