当前位置: 首页 > news >正文

oracle 数据库 day0823

ok了家人们,今天学习了orcle的基本用法,一日不见,如隔三秋啊,

.多表联合查询

和之前学习的MySQL数据库一样的用法,

1.1 笛卡尔积查询
SELECT * FROM A表,B表

查询员工表和部门表

select * from emp e, dept d;
emp 表和 dept 表的记录数的乘积,我们称其为笛卡尔积。
1.2 内连接查询
1.2.1 隐式内连接
SELECT * FROM A表,B表 where 关联条件
使用内连接查询员工编号、员工姓名、部门名称
select emp.empno,emp.ename,dept.dname from emp,
dept where emp.deptno=dept.deptno;
select e.empno,e.ename,d.dname from emp e, dept
d where e.deptno=d.deptno;
select e.empno 员工编号,e.ename 员工名称,d.dname 部
门名称 from emp e, dept d where
e.deptno=d.deptno;
1.2.2 显示内连接
select * from A表 inner join B表 on 关联条件;
使用内连接查询员工编号、员工姓名、部门名称
select emp.empno,emp.ename,dept.dname from emp
inner join dept on emp.deptno=dept.deptno;
select e.empno,e.ename,d.dname from emp e inner
join dept d on e.deptno=d.deptno;
select e.empno 员工编号,e.ename 员工名称,d.dname 部
门名称 from emp e inner join dept d on
e.deptno=d.deptno;
1.3 外连接查询
1.3.1 左外连接查询
左外连接查询两张表条件都满足的数据,以及左边表 (A )
在的数据 ( 以左边表为主查询表 )
select [字段][*] from A表 left join B表 on 关联条
件
需求:使用左外连接将 dept 表作为主查询表,查询员工编
号、员工姓名、部门名称。
select emp.empno ,emp.ename, dept.dname from
dept left join emp on dept.deptno = emp.deptno;
select e.empno ,e.ename, d.dname from dept d
left join emp e on d.deptno = e.deptno;
select e.empno 员工编号,e.ename 员工名称, d.dname
部门 from dept d left join emp e on d.deptno =
e.deptno;
1.3.2 右外连接查询
右外连接查询两张表条件都满足的数据,以及右边表 (B )
在的数据 ( 以右边表为主查询表 )
select [字段][*] from A表 right join B表 on 关联条
件
需求:使用右外连接将 dept 表作为主查询表,查询员工编
号、员工姓名、部门名称。
select emp.empno ,emp.ename, dept.dname from emp
right join dept on dept.deptno = emp.deptno;
select e.empno ,e.ename, d.dname from emp e
right join dept d on d.deptno = e.deptno;
select e.empno 员工编号,e.ename 员工名称, d.dname
部门 from emp e right join dept d on d.deptno =
e.deptno;
1.3.3 自连接查询
自连接其实就是站在不同的角度把一张表看成多张表。
需求:查询出员工姓名,员工领导姓名
select e1.ename, e2.ename from emp e1, emp e2
where e1.mgr = e2.empno;
查询出员工姓名,员工部门名称,员工领导姓名,员工领
导部门名称
select e1.ename, d1.dname, e2.ename, d2.dname
from emp e1, emp e2, dept d1, dept d2
where e1.mgr = e2.empno
and e1.deptno=d1.deptno
and e2.deptno=d2.deptno;
1.4 子查询
1.4.1 子查询返回一个值
需求:查询出工资和 WARD 一样的员工信息
select * from emp where sal in
(select sal from emp where ename = 'WARD')
1.4.2 子查询返回一个集合
需求:查询出工资和 10 号部门任意员工一样的员工信息
select * from emp where sal in
(select sal from emp where deptno = 10);
1.4.3 子查询返回一张表
需求:查询出每个部门最低工资,和最低工资员工姓名,
和该员工所在部门名称
-- 先查询出每个部门最低工资
select deptno, min(sal) msal
from emp
group by deptno;
select t.deptno, t.msal, e.ename, d.dname
from (select deptno, min(sal) msal
from emp
group by deptno) t, emp e, dept d
where t.deptno = e.deptno
and t.msal = e.sal
and e.deptno = d.deptno;

.Rownum与分页查询

rownum 行号:当我们做 select 操作的时候,每查询出一行记
录,就会在该行上加上一个行号,行号从 1 开始,依次递增,
不能跳着走。 rownum 不支持大于号,只支持小于号
需求:找到员工表中工资最高的前三名
select rownum,e.* from emp e;
-- 降序排序
select rownum,e.* from emp e order by sal desc;
-- 查询前3条 不是想要的结果
select rownum,e.* from emp e order by sal desc;
-- 查询前3条
select rownum,e1.* from (select rownum,e.* from
emp e order by sal desc) e1 where rownum <=3;
需求: emp 表工资倒叙排列后,每页五条记录,查询第二页
-- 错误写法 rownum不支持大于号,只支持小于号
select rownum,e.* from (select * from emp order
by sal desc) e where rownum <11 and rownum <11
and rownum >5;
select * from
(select rownum rn,e.* from (select * from emp
order by sal desc) e where rownum <11) where rn
>5

see you later

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • NC 最小的K个数
  • AI大模型的饕餮盛宴,系统学习大模型技术,你想要的书都在这里了
  • 什么是ESB(企业服务总线)?
  • C语言---函数指针基础总结万字(4)
  • 【Tools】大模型多模态概念简介
  • 7系列FPGA HR/HP I/O区别
  • Elastic Stack--ES的DSL语句查询
  • 负债不再是障碍?银行信贷“白名单“揭秘
  • 大模型时代下,nlp初学者需要怎么入门?
  • 负载均衡 Ribbon 与 Fegin 远程调用原理
  • 备忘录内容能否加密?隐私备忘录保护方式
  • Ai+若依(智能售货机运营管理系统---帝可得)-设备管理-策略管理-商品管理---【08篇---0002:中】
  • 路径规划 C++ ROS2 (Ⅰ)
  • 开放式耳机对耳朵伤害大吗?超舒适开放式耳机推荐!
  • Springboot课堂评测系统的设计与实现---附源码82642
  • 分享的文章《人生如棋》
  • [case10]使用RSQL实现端到端的动态查询
  • 【翻译】babel对TC39装饰器草案的实现
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • gf框架之分页模块(五) - 自定义分页
  • JAVA多线程机制解析-volatilesynchronized
  • Linux Process Manage
  • Redis的resp协议
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 对象管理器(defineProperty)学习笔记
  • 多线程 start 和 run 方法到底有什么区别?
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 责任链模式的两种实现
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 选择阿里云数据库HBase版十大理由
  • ​Python 3 新特性:类型注解
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #大学#套接字
  • #每天一道面试题# 什么是MySQL的回表查询
  • (12)Hive调优——count distinct去重优化
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (4) PIVOT 和 UPIVOT 的使用
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)ssm码农论坛 毕业设计 231126
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET 的静态构造函数是否线程安全?答案是肯定的!