关于oracle数据库(9)
内连接:从多张表中获取综合数据
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)的更多相关文章
- 使用Zabbix监控Oracle数据库
Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...
- Oracle 数据库知识汇总篇
Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...
- Oracle数据库该如何着手优化一个SQL
这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异. 所以有时候我们应该先 ...
- Oracle 数据库语句大全
Oracle数据库语句大全 ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CH ...
- 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 ...
- 混合框架中Oracle数据库的还原处理操作
在较早期的随笔<Oracle如何实现创建数据库.备份数据库及数据导出导入的一条龙操作>粗略介绍了Oracle数据库的备份还原操作,本文想从开发框架的基础上介绍Oracle数据库的脚本或者还 ...
- Oracle数据库的链接数目超标
测试场景:Oracle数据库的链接数目超标,iServer是否自动连接. 测试步骤:(1)设置了最大连接数为85,oracle后台进程有83:(2)开启3台iserver(A,B,C)A,B发布tes ...
- 将Oracle数据库中的数据写入Excel
将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...
- Oracle数据库11g各版本介绍及功能比较
.标准版和企 业版.所有这些版本都使用相同的通用代码库构建,这意味着企业的数据库管理软件可以轻松地从规模较小的单一处理器服务器扩展到多处理器服务器集 群,而无需更改一行代码.Oracle数据库11g企 ...
- Oracle数据库,数据的增、删、改、查
oracle数据库中,数据的增.删.改.查,通过SQL语句实现 SQL:结构化查询语言: 特点:不区分大小写:字符串用单引号引起来:语句结束用分号表示结束: 行注释,在语句的最前面加"--& ...
随机推荐
- ASP.NET里面,如果设置了form的 onsubmit="return false;"之后,就不能提交按钮了?
我的按钮是写成的服务器控件的形式<asp:Button ID="btnSubmitBR" runat="server" Text="提交&quo ...
- JavaScript忍者秘籍——运行时代码求值
1. 代码求值机制 JavaScript中,有很多不同的代码求值机制. ● eval()函数 ● 函数构造器 ● 定时器 ● <script>元素 - 用eval()方法进行求值 作为定义 ...
- vim 常用操作
a 进入INSERT MODE x 删除当前光标下的字符dw 删除光标之后的单词剩余部分.d$ 删除光标之后的该行剩余部分.dd 删除当前行. c 功能和d相同,区别在于完成删除操作后进入INSERT ...
- spring 四种依赖注入方式以及注解注入方式
平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程 ...
- rzsz的安装
rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具优点:比ftp命令方便,而且服务器不用打开FTP服务. sz:将选定的文件发送(send)到本地机器rz:运行该命令 ...
- Javascript封装弹出框控件
1.首先先定义好弹出框的HTML结构 <div class="g-dialog-contianer"> <div class="dialog-windo ...
- 特殊函数(__all__)
python里__all__ 属性分别于模块和包之中的用法 一. 在模块(*.py)中使用意为导出__all__列表里的类.函数.变量等成员,否则将导出modualA中所有不以下划线开头(私有)的成员 ...
- linux的用户,群组和其他用户
1 linux 安全模型:(多任务,多用户的操作系统) 1)使用user和group控制使用者对文件的存储权限. 2)用户使用账户和口令登录linux 3)每个文件都有owner(创建者),owner ...
- ACdream 1083 人民城管爱人民
拓扑排序,然后从终点开始递推. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio ...
- hihoCoder挑战赛11 A 随机斐波那契
算了前三项.....发现是个大水题... #include<stdio.h> int main() { int n; while (~scanf("%d", &am ...