Oracle详解(Ⅱ):世界上目前已知最好的关系型数据库

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: Oracle多表查询多表连接基本查询使用一张以上的表做查询就是多表查询select * from tab1,tab2这样会出现的结果就是:笛卡儿积连接查询的时候一般在需要连接的表中会出现相同名称的字段,按照之前表与表之间的设模式来讲,都会设置主外键关联,但是这种关联现在不太推荐使用。
img_def575c871bd924c1bdbef1535d2cd46.png
Oracle

多表查询

多表连接基本查询

使用一张以上的表做查询就是多表查询

select * from tab1,tab2

这样会出现的结果就是:笛卡儿积
连接查询的时候一般在需要连接的表中会出现相同名称的字段,按照之前表与表之间的设模式来讲,都会设置主外键关联,但是这种关联现在不太推荐使用。

select * from tab1,tab2 where tab1.field=tab2.field
这样就避免了产生 笛卡儿积

多表查询的时候我们也可以为每一张表起别名

select * from tab1 t1,tab2 t2 where t1.field= t2.field

指定查询结果要显示的字段

select t1.name,t1.age,t2.field from tab1 t1,tab2 t2 where t1.field= t2.field
自关联查询

顾名思义,自关联查询就是自己关联自己。我们在安装Oracle之后,scoot用户下有一张员工表可以供我们练习查询。
需求: 查询每个员工的上级领导
分析: emp 这张表中 mgr字段是当前员工的上级领导的编号,所以该字段就对emp表产生了关联 。这个时候我们就要用到自关联查询。

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

外连接查询

包含右表中所有数据,以及左表的关联数据

select e.empno,e.ename,d.deptno,d.dname from emp e,dept d where e.deptno(+)=d.deptno

使用(+)表示左连接或者是右连接
但是由于(+)是Oracle独有的书写方法,个人推荐使用left join 与 right join

子查询

子查询(内查询):在主查询之前一次执行完成
子查询的结果被主查询使用
子查询的类型:
单行子查询:只返回一条记录

# 单行子查询示例1
select ename,job,sal from emp where
job = (select job from emp where empno = 7566)
and sal >(select sal from emp where empno = 7782)
img_1f4045826ef64c7eaf6101fd1d172a35.png
单行子查询示例1
# 单行子查询实例2 
select ename,job,sal from emp where sal = (select min(sal) from emp);
img_2098ee6bda2b08576c6a4763a296f604.png
单行子查询示例2

多行子查询:
返回了多条记录
多行操作符

单行子查询中的null值问题

select ename,job,sal from emp where
job = (select job from emp where ename = 'Mike')
img_98ea728bc79c8aebf71b0a6b0f45f062.png
image

多行子查询中Null值的问题

# 查询不是老板的员工
select * from emp where empno not in(select mgr from emp);

Exists用法

语法 exists(sql查询语句)
一: 判断exists后面的sql语句是否为真
sql语句查询为空 返回值是false
slq查询语句有值 返回值就是true

select * from dept;
img_3fd8667a6eb523ad78696e86a29b4bd2.png
dept
select * from dept where 1 = 1;
select * from emp where exists(select * from dept where 1 = 1)
select * from emp where exists(select * from dept where deptno = 10)

二:判断一个表中是否含有另一张表中外键的记录

# 查询有员工的部门
select * from dept d where exists (select * from emp e where e.deptno = d.deptno)
img_847e563f55856d9354fed15606b8e700.png
image

Oracle中的分页查询

ROWNUM:表示行号,实际上此是一个列,但是这个列是一个伪列,此列可以在每张表中出现
ROWID:表中没行数据指向磁盘上的物理地址

集合运算

并集 :union / union all 返回两个集合中所有的记录 包括重复的

# 工资大于1500 或者是20号部门下的员工
select * from emp where sal > 1500 union select * from emp where deptno = 20
img_fd26472bf167deb756f95e812ccfe711.png
并集

交集:intersect 返回同时属于两个集合的记录

#工资大于1500 并且是20号部门下的员工
select * from emp where sal > 1500 intersect select * from emp where deptno = 20
img_861f2f15abb0144124af0b52cb92f590.png
交集

差集:minus 返回属于第一个集合但是不属于第二个集合的记录

# 查询1981年入职的普通员工 (不包含总裁和经理)
select * from emp where to_char(hiredate,'yyyy')='1981'
minus 
select * from emp where job = 'PRESIDENT'or job='MANAGER'
img_ad9411324fb68ead50b402e58bcae68a.png
差集
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
22天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
141 64
|
12天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
23 7
|
12天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
16 6
|
12天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
16 5
|
19天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
21天前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
21 1
|
1月前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
48 3
|
2月前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
327 2
|
28天前
|
存储 Oracle 关系型数据库
【数据库-Oracle】《Oracle 数据库探秘:基础知识点全攻略》
《Oracle 数据库探秘:基础知识点全攻略》深入介绍 Oracle 数据库的基础知识点,包括数据类型、表结构、查询语句等。通过详细讲解、代码示例和流程图,帮助读者快速掌握 Oracle 数据库的基本操作,为数据库开发和管理打下坚实基础。
33 0
|
30天前
|
Oracle 关系型数据库 数据库
oracle数据恢复—Oracle数据库文件损坏导致数据库打不开的数据恢复案例
打开oracle数据库时报错,报错信息:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。急需恢复zxfg用户下的数据。 出现上述报错的原因有:控制文件损坏、数据文件损坏、数据文件与控制文件的SCN不一致等。数据恢复工程师对数据库文件做进一步检测分析后发现sysaux01.dbf文件有坏块。修复sysaux01.dbf文件,启动数据库依然有许多查询报错。export和data pump工具无法使用,查询告警日志并分析报错,确认发生上述错误的原因就是sysaux01.dbf文件损坏。由于该文件损坏,从数据库层面无法修复数据库。由于system和用户表空间的数据文件是正常的,

推荐镜像

更多
下一篇
无影云桌面