Oracle 多表查询基本语法实例


Posted in Oracle onApril 18, 2022

多表查询基本语法

笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合。

-- 笛卡尔积 
select * from emp, dept;

oracle多表查询

Oracle 多表查询基本语法实例

Oracle 多表查询基本语法实例

prompt Importing table dept...
set feedback off
set define off
insert into dept (DEPTNO, DNAME, LOC)
values (1, '01事业部', '324');
 
insert into dept (DEPTNO, DNAME, LOC)
values (2, '02事业部', '234');
 
insert into dept (DEPTNO, DNAME, LOC)
values (3, '03事业部', '234');
 
insert into dept (DEPTNO, DNAME, LOC)
values (4, '04事业部', '3244');
 
prompt Done.
prompt Importing table emp...
set feedback off
set define off
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values ('001', '小明', '运维', '9000', to_date('26-09-2021', 'dd-mm-yyyy'), 900, 800, '1');
 
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values ('001', '小刚', 'hr', '7000', to_date('26-09-2021', 'dd-mm-yyyy'), 900, 800, '1');
 
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values ('001', '小花', 'vue开发', '6000', to_date('26-09-2021', 'dd-mm-yyyy'), 900, 800, '1');
 
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values ('001', '小贝', '软件工程师', '9000', to_date('26-09-2021', 'dd-mm-yyyy'), 900, 800, '2');
 
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values ('001', '小涛', '数据中台', '11000', to_date('26-09-2021', 'dd-mm-yyyy'), 900, 800, '2');
 
insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values ('001', '小胜', '设计', '9000', to_date('26-09-2021', 'dd-mm-yyyy'), 900, 800, '2');
 
prompt Done.
prompt
 
prompt Creating table DEPT
prompt ===================
prompt
 
create table USERNAME.DEPT
(
  deptno NUMBER not null,
  dname  VARCHAR2(10) not null,
  loc    VARCHAR2(10) not null
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );
 
prompt
 
prompt Creating table EMP
prompt ==================
prompt
 
create table USERNAME.EMP
(
  empno    NVARCHAR2(20),
  ename    NVARCHAR2(20),
  job      NVARCHAR2(20),
  mgr      NVARCHAR2(20),
  hiredate DATE,
  sal      BINARY_DOUBLE,
  comm     BINARY_DOUBLE,
  deptno   NVARCHAR2(20)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );
 
 
prompt Done
spool off
set define on

多表查询

多表查询:多表查询是指基于两个或两个以上的表或者视图的查询。

--查询员工名,工资,以及员工所在部门的名称
select   e.ename,e.sal,d.dname   from   emp e,dept d  where e.deptno=d.deptno                    
--查询部门编号为10的部门名称,员工名称,工资
select  d.dname,e.ename,e.sal  from   emp e,dept d  where e.deptno=d.deptno   and d.deptno='1' 
--查询员工名称,工资,部门名称,并且按照部门名称升序排列
select   e.ename,e.sal,d.dname  from   emp e,dept d  where e.deptno=d.deptno   order by d.dname 

--2.自连接

-- 自连接:自连接是指在同一张表上的连接查询

--查询员工的姓名以及员工所对应老板的姓名

select   e1.ename,e2.ename  from    emp  e1,emp e2 where e1.mgr=e2.empno

3.子查询(单行子查询)

子查询:子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

--查询与SMITH在同一部门的员工
select * from (select   e.deptno from emp e,dept t where  e.deptno=t.deptno and  e.ename='SMITH') s1,emp e
where e.deptno =s1.deptno
 
 
select * from emp where deptno=(select deptno from emp where ename='SMITH');

多行子查询

多行子查询是指返回多行数据的查询。

在多行子查询中使用all操作符

--查询与10号部门工作相同的员工名称,工作,工资,部门编号
select ename,job,sal,deptno from emp where job in (select job from emp where deptno=1);
 
--查询比30号部门所有人工资高的员工姓名,职位,工资,部门编号
select ename,sal,job,deptno from emp where sal>all(select sal from emp where deptno=1);
 
--在多行子查询中使用any操作符
--查询比1号部门任意人工资高的员工姓名,职位,工资,部门编号
select ename,sal,job,deptno from emp where sal>any(select sal from emp where deptno=1);

多列子查询

单行子查询是指子查询返回单行,单列的数据

多行子查询是指子查询返回多行,单列的数据

多列子查询是指子查询返回多列数据的查询

--查询与SMITH的部门和职位完全相同的员工信息
 
select * from emp where (deptno,job)=(select deptno,job from emp where ename='SMITH');

在from子句中使用子查询

在from子句中使用子查询时,该子查询会被当做一个视图来对待,因此也就叫做内嵌图,当在from子句中使用子查询时,必须给子查询起别名。(换句话说就是把子查询查出来的数据作为一张新表,在进行查询)

总结

到此这篇关于oracle多表简单查询的文章就介绍到这了!

Oracle 相关文章推荐
Oracle笔记
Apr 05 Oracle
ORACLE数据库对long类型字段进行模糊匹配的解决思路
Apr 07 Oracle
oracle覆盖导入dmp文件的2种方法
May 21 Oracle
C#连接ORACLE出现乱码问题的解决方法
Oct 05 Oracle
Oracle安装TNS_ADMIN环境变量设置参考
Nov 01 Oracle
详解Oracle块修改跟踪功能
Nov 07 Oracle
Oracle表空间与权限的深入讲解
Nov 17 Oracle
使用Oracle命令进行数据库备份与还原
Dec 06 Oracle
Lakehouse数据湖并发控制陷阱分析
Mar 31 Oracle
oracle delete误删除表数据后如何恢复
Jun 28 Oracle
Oracle删除归档日志及添加定时任务
Jun 28 Oracle
oracle设置密码复杂度及设置超时退出的功能
Jun 28 Oracle
Lakehouse数据湖并发控制陷阱分析
Oracle数据库中通用的函数实例详解
详细聊聊Oracle表碎片对性能有多大的影响
Mar 19 #Oracle
oracle删除超过N天数据脚本的方法
Feb 28 #Oracle
oracle重置序列从0开始递增1
Feb 28 #Oracle
Oracle 触发器trigger使用案例
Feb 24 #Oracle
Oracle中update和select 关联操作
Jan 18 #Oracle
You might like
PHP&MYSQL服务器配置说明
2006/10/09 PHP
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
PHP数组array类常见操作示例
2020/05/15 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
Jquery选择器中使用变量实现动态选择例子
2014/07/25 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
详解JavaScript树结构
2017/01/09 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
vue-loader教程介绍
2017/06/14 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
十条建议帮你提高Python编程效率
2016/02/16 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
Python中property函数用法实例分析
2018/06/04 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
python实现抽奖小程序
2020/04/15 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
美国汽车交易网站:Edmunds
2016/08/17 全球购物
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
2015年小学教导处工作总结
2015/05/26 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
话题作文之诚信
2019/11/28 职场文书
python中的sys模块和os模块
2022/03/20 Python
Mysql 文件配置解析介绍
2022/05/06 MySQL