Oracle笔记_多表查询
3.1 执行sql文件
@文件地址名 --执行某个sql文件;
3.2 多表查询
想要的数据不在同一张表,就需要多个表进行联查。
多表查询也叫做表连接查询,其中的where条件就是连接条件。
可以使用join来进行表连接,from 中的逗号换成join ,where换成on即可,join后面还可以另外跟where条件。
select ...
from 表1,表2...
where...
...
3.3 外连接
保留没有通过连接条件筛选的数据的时候使用外连接。
oracle用法
- 想保留哪一张表的数据,应该在连接条件等号的另一边使用(+);
select d.deptno,d.dname,count(empno)
from dept d, emp e
where d.deptno = e.deptno(+)
group by d.deptno,d.dname
sql用法
select d.deptno,d.dname,count(empno)
from dept d join emp e
on d.deptno = e.deptno
group by d.deptno,d.dname
3.4 自连接
表自己跟自己做多表连接查询,要查询的数据在同一张表但是不在同一行,就要使用自连接
select a.ename||'''s manager is '||nvl(b.ename,' his wife')
from emp a, emp b
where a.mgr = b.empno(+)
3.5 子查询
个查询的select语句里边嵌套了另一个select语句;
select * from emp
where sal > (select sal from emp where ename = 'SCOTT')
注意事项
父查询和子查询可以是不同的表,子查询返回的结果父查询可以使用即可;
父查询的select、from、where、having都可以嵌套子查询;
单行子查询只能使用单行操作符,多行子查询只能使用多行操作符,单行操作符,就是对某个单一数据的比较操作 =|>|>=|<|<=等;
多行操作符,就是对一个集合的比较操作(IN、ANY、ALL)
select * from emp
where deptno in (select deptno from dept
where dname ='SALES' or dname = 'ACCOUNTING')
- 子查询中返回的null值影响最终计算结果;
select * from emp
where empno not in (select mgr from emp where mgr is not null)
3.6 集合运算
并集 union
全并集 union all
交集 intersect
差集 minus
select * from emp where deptno = 10
union
select * from emp where deptno = 20
用命令break on deptno skip 2来去掉分组重复的deptno,使用break on null恢复;
注意事项
参与运算的各个集合必须列数相同,且类型一致;
采用第一个集合的表头作为最终使用的表头,(别名也只能在第一个集合上起);
可以使用括号修改各个sql执行的优先级;
3.7 新增数据
insert into 表名 values(val1,val2,.....) val1 val2 这些值要对应表的每列顺序
insert into 表名(列名,列名2.....) values(val1,val2,.....)
字符串和日期加单引号;
"&"符号,可简化增删查改操作
- 例:select * from &t; 再次输入/时,可快速查找;
批处理
--一次性将emp表中所有10号部门的员工,放到新表emp10中来。
insert into emp10 select * from emp where deptno=10 ; --一次性将 emp表中的指定列插入到表emp10中。
--注意:insert的列名,要和select的列名一致
insert into emp10(empno, ename, sal, deptno)
select empno, ename, sal, deptno from emp
where deptno=10;
--注意没有values关键字了。且列名必须一一对应
3.8 修改数据
update 表名 set 列名1=值1,列名2=值2..... [where cond]
- 例:update dept set dname='SUPPORT1',loc=null where deptno=50;
3.9 删除数据
delete from 表名 [where cond]
- 例:delete from dept where deptno=50
3.10 rownum
rownum 是行号,伪列,并不是真实存在于表中的列,最好在排序前生成;
rownum只能使用<, <=符号,不能使用>,>=符号,除了>=1
- select rownum,emp.* from emp order by sal desc;
Oracle笔记_多表查询的更多相关文章
- SQL基本查询_单表查询(实验二)
SQL基本查询_单表查询(实验二) 查询目标表结构及数据 emp empno ename job hiedate sal comn deptno 1007 马明 内勤 1992-6-12 4000 2 ...
- SQL基本查询_多表查询(实验三)
SQL基本查询_多表查询(实验三) 题目要求(一) 针对emp.dept两表完成如下查询,并验证查询结果的正确性 使用显式内连接查询所有员工的信息,显示其编号.姓名.薪水.入职日期及部门名称: 使用隐 ...
- oracle系列笔记(2)---多表查询
多表查询 这篇文章主要讲四点: (1)oracle多表查询 (2)SQL99标准的连接查询 (3)子查询 (4)分级查询 oracle多表查询有两种方式,一种是oracle所 ...
- Oracle学习笔记_04_多表查询
一.概念: 1.多表连接有以下几种分法: (1)内连接 vs 外连接 (左.右.满) (2)等值连接 vs 不等值连接 (3)非自连 ...
- Oracle数据库之单表查询
接着上一篇的分享,今天主要给大家分享的是关于数据中的单表查询,单表查询很基础,也很重要,但是任何一个初学者必须要掌握的姿势,单表查询就是对单个表进行操作,查询我们想要的数据.单表查询里面的内容也是比较 ...
- Oracle中的多表查询(笛卡尔积原理)
本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查询一起完成各个复杂查询的操作: 一 ...
- Oracle(2)之多表查询&子查询&集合运算
多表查询 笛卡尔积 同时查询多张表时,每张表的每条数据都要和其它表的每条数据做组合.如下栗子,我们发现产生的总记录数是 56 条,还发现 emp 表是 14 条,dept 表是 4 条,56 条正是 ...
- mysql_数据查询_单表查询
1.单表查询: 1.1选中表中若干列: SELECT子句的<目标列表达式>可以是表中属性列,也可以是表达式,还可以是字符常量. SELECT Sname,'year of birth:', ...
- Oracle数据库之七 多表查询
七.多表查询 对于查询在之前已经学过了简单查询.限定查询.查询排序,这些都属于 SQL 的标准语句,而上一章的单行函数,主要功能是为了弥补查询的不足. 而从多表查询开始就正式进入到了复杂查询部 ...
随机推荐
- Minikube安装成功Kubernetes,一次过!
介绍 Minikube 是 K8S 官方为了开发者能在个人电脑上运行 K8S 而提供的一套工具.实现上是通过 Go 语言编写,通过调用虚拟化管理程序,创建出一个运行在虚拟机内的单节点集群. 注:从这里 ...
- [leetcode] #239 Sliding Window Maximum (Hard)
原题链接 题意: 给定一个数组数字,有一个大小为k的滑动窗口,它从数组的最左边移动到最右边.你只能在窗口看到k个数字.每次滑动窗口向右移动一个位置. 记录每一次窗口内的最大值,返回记录的值. 思路: ...
- 2019牛客多校第二场F-Partition problem(搜索+剪枝)
Partition problem 题目传送门 解题思路 假设当前两队的对抗值为s,如果把红队中的一个人a分配到白队,s+= a对红队中所有人的对抗值,s-= a对白队中所有人的对抗值.所以我们可以先 ...
- python红蓝英雄大乱斗(面向对象实现)
红蓝英雄大乱斗 游戏规则 ''' 有红蓝两方英雄(可自定义个数) 随机一方英雄使用随机攻击方式攻击另一方英雄,任意一方英雄全部阵亡则游戏结束 每个英雄有 名字.生命值.普通攻击.Q技能攻击.W技能攻击 ...
- python课堂整理20----生产者消费者模型
一.实现功能:店铺生产包子,消费者来吃 import time def producter(): ret = [] for i in range(10): time.sleep(0.1) ret.ap ...
- 重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印
重复造轮子系列——基于FastReport设计打印模板实现桌面端WPF套打和商超POS高度自适应小票打印 一.引言 桌面端系统经常需要对接各种硬件设备,比如扫描器.读卡器.打印机等. 这里介绍下桌面端 ...
- 最近很火的MySQL:抛开复杂的架构设计,MySQL优化思想基本都在这
优化一览图 优化 笔者将优化分为了两大类:软优化和硬优化.软优化一般是操作数据库即可:而硬优化则是操作服务器硬件及参数设置. 1.软优化 1)查询语句优化 首先我们可以用EXPLAIN或DESCRIB ...
- 让 CXK 来教你实现游戏中的帧动画(上)
一款游戏除了基本功能之外,还需要给玩家更多视觉上的刺激,这个时候就需要用特效来装饰.本文就将介绍 Cocos Creator 的动画系统,除了标准的位移.旋转.缩放动画和序列帧动画以外,这套动画系统还 ...
- java 各基本类型转 bytes 数组
java 将 基本类型转byte[] 数组时,需考虑大端小端问题 1. 大端格式下,基本类型与byte[]互转 BigByteUtil.java package com.ysq.util; impor ...
- java学习-NIO(二)Buffer
当我们需要与 NIO Channel 进行交互时, 我们就需要使用到 NIO Buffer, 即数据从 Buffer读取到 Channel 中, 并且从 Channel 中写入到 Buffer 中.缓 ...