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数据库对long类型字段进行模糊匹配的解决思路
Apr 07 Oracle
使用springboot暴露oracle数据接口的问题
May 07 Oracle
Oracle 区块链表创建过程详解
May 15 Oracle
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
Jun 04 Oracle
Oracle11g R2 安装教程完整版
Jun 04 Oracle
Oracle以逗号分隔的字符串拆分为多行数据实例详解
Jul 16 Oracle
oracle索引总结
Sep 25 Oracle
Oracle安装TNS_ADMIN环境变量设置参考
Nov 01 Oracle
分析SQL窗口函数之取值窗口函数
Apr 21 Oracle
清空 Oracle 安装记录并重新安装
Apr 26 Oracle
Oracle中日期的使用方法实例
Jul 07 Oracle
Oracle查看表空间使用率以及爆满解决方案详解
Jul 23 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流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
js获取当前周、上一周、下一周日期
2017/03/19 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
Angular 作用域scope的具体使用
2017/12/11 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
Vue+webpack实现懒加载过程解析
2020/02/17 Javascript
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
Python 列表反转显示的四种方法
2020/11/16 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
环境整治工作方案
2014/05/18 职场文书
挂职学习心得体会
2014/09/09 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
授权委托书
2014/09/17 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
项目合作意向书
2015/05/08 职场文书
升学宴学生致辞
2015/07/27 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技