Oracle基础学习之子查询_oracle

首先使用子查询的时候注意事项包括,子查询可以嵌套多层和子查询需要圆括号()括起来,下面我们来看看详细的介绍。

基础介绍

1,wherer:子查询一般会返回单行单列 单行多列 多行单列 ;

2,having:子查询会返回单行单列,同时表示要使用统计函数;

3,from:子查询返回多行多列数据(表结构);

4,select:返回单行单列 (一般不使用);

示例详解

where(进行数据行的筛选操作):

a:查询出低于公司平均工资的雇员信息。

select * from emp where sal<(select avg(sal) from emp);

以上的查询返回单行单列可以作为where子句的过滤条件使用;

b:查询公司最早雇佣的雇员的信息。

select * from emp where hiredate= (select MIN(hiredate) from emp);

C:查询与scott从事同一工作并且工资相同的雇员信息。

 select* from emp

 where (job,sal) =( select job,sal

 from emp

 where ename ='scott') and ename <>'scott';

in:指的是与子查询返回的内容相同。

  select * from emp where sal in (select sal from emp where job = 'manager');

not in:

select* from emp where sal not in(select sal from emp where job='manager');

子查询中不能有空。

any:

 select* from emp where sal = any(select sal from emp where job='manager');

select* from emp where sal > any(select sal from emp where job='manager');

比子查询的返回的最大值要大

 select* from emp where sal < any(select sal from emp where job='manager');

比子查询返回的最大值要小

all:

<all :比子查询的返回的最小值要小

     all :比子查询的返回的最大值要大

     where子查询的几率很高;

having:

查询出高于公司平均工资的职位名称 职位人数 平均工资。

 select job,count(empno),avg(sal) from emp group by job
 having avg(sal)>(select avg(sal) from emp);

select(一般不用):

查询每个雇员的编号姓名 职位 部门名称。

 select e.empno,e.ename,e.job,

 (select d.dname from dept d whered.deptno=e.deptno)from emp e;

(1+n) 次查询;

from(重点):

查询出每个部门的名称 位置 部门人数。

 select d.dname,d.loc,count(e.empno)

 from emp e,dept d

 where e.deptno(+)=d.deptno

 group by d.dname,d.loc;

(多表查询)

  分步1: select d.deptno,d.dname,d.locfrom dept d;

  分步2:select deptno,count(empno)from emp group by deptno;

 正确的查询:

 select d.deptno,d.dname,d.loc,temp.count
 from dept d,(select deptno,count(empno) count from emp
 group by deptno) temp
 where d.deptno=temp.deptno(+);

多表查询和子查询都能实现统计,那么那种方式更好呢?

答:在实际的工作当中,子查询的主要目地是解决多表查询的性能问题,所以在开发中使用的是 最多的。最大作用是解决多表查询带来的笛卡尔积影响性能的问题。

复杂查询= 简单查询+限定查询+ 多表查询+ 分组统计查询 +子查询;

总结

以上就是关于Oracle子查询的全部内容,希望本文的内容对大家学习或者使用Oracle能有所帮助,如果有疑问大家可以留言交流。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索oracle
, 嵌套子查询
, oracle子查询例子
子查询语句格式
,以便于您获取更多的相关知识。

时间: 2024-12-29 18:11:17

Oracle基础学习之子查询_oracle的相关文章

Oracle基础学习之简单查询和限定查询_oracle

本文主要介绍的是关于Oracle中的简单查询和限定查询,下面话不多说,来一起看看吧. SQL:      1,DML(数据操作语言):主要指的是数据库的查询与更新的操作,查询操作是整个sql语法 中最麻烦也是笔试中最常用的部分.      2,DDL(数据定义语言):主要指的是数据对象的创建(表.用户.)例如:creat.需要相关的设计范式.      3,DCL(数据控制语言):主要进行权限的操作(需要结合用户来观察),此部分由DBA负责. 简单查询: 1,利用select 子句控制要显示的数

SQL Server调优系列基础篇(子查询运算总结)

原文:SQL Server调优系列基础篇(子查询运算总结) 前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴趣的童鞋可以点击查看. 本篇我们介绍关于子查询语句的一系列内容,子查询一般是我们形成复杂查询的一些基础性操作,所以关于子查询的应用方式就非常重要. 废话少说,开始本篇的正题. 技术准备 数据库版本为SQL Server2008R2,利用微软

oracle数据库里,子查询必须写在括号里吗

问题描述 oracle数据库里,子查询必须写在括号里吗 想问一下,子查询必须写在括号里吗,不写在括号里的查询不叫子查询是吗 解决方案 一般都 要将查询结果括号起来,要不语句就会报错了,语法方面的问题.子查询并不是说要写在括号里,而是查询时用到了另一个查询的结果 解决方案二: 可以这么理解,不放在括号里会报错 解决方案三: 写在2015第一天里的 解决方案四: 查询其实是调用了子查询出的值,我感觉就是这样的 解决方案五: 查询其实是调用了子查询出的值,我感觉就是这样的 解决方案六: 恩,不放括号里

Oracle基础学习(六) 查询

本章目标 单表查询 算术运算 NULL值 比较运算符 逻辑运算符 ORDER BY子句 使用SQL运算符 多表查询 联结条件和联结类型 联结查询使用SQL/92语法 行的标识符 1. 行的标识符 a) 在Oracle数据库中的每一行都有一个唯一的行标识符,它用于Oracle数据库内部存储行的物理位置. b) 例如,查看customer表的信息 SELECT ROWID, customer_id FROM customers; c) 查询效果如下图所示: d) 需要注意的是ROWID并不出现在表的

Oracle基础学习(二) SQL语言基础

本章目标 数据类型 SQL语句类型介绍 SELECT基础 数据类型 1. 数据类 型 a) 数据类型是在设计表结构中需要定义的,选择适当的数据类型可以节省存储空间,提高运算效率 . b) Oracle数据类型主要包括字符型.数据型.日期/时间型.大对象(LOB)型等 2. 字符型 3. 数值型 4. 日期/时间类型

Oracle基础学习(三) Oracle PL/SQL语言基础

本章目标 PL/SQL语言基本结构 PL/SQL变量和常量的声明 PL/SQL程序的执行部分 了解PL/SQL常用函数 PL/SQL简介 1. PL/SQL简介 a) PL/SQL(Procedural Language/SQL,过程语言/SQL) i. 它是结合Oracle过程语言和结构化查询语言的一种扩展语言 ii. PL/SQL支持多种数据类型,可以使用条件语句和循环语句等控制结构 iii. PL/SQL可用于 创建存储过程.触发器和程序包,也可以用来处理业务规则.数据库事件或给SQL命令

Oracle基础学习(一) Oracle简介

本章目标 介绍Oracle公司 Oracle下载安装 Oracle用户类型 Enterprise Manager管理工具 SQL*Plus管理工具 介绍Oracle公司 1. Oracle公司简介 a) Oracle(甲骨文)公司 i. 1977年6月,Larry Ellison,Bob Minor和Ed Oates三人合伙创办 (Software Development Laboratories,SDL) ii. 1979年,更名为Relational Software Inc., RSI i

Oracle基础学习笔记

1.sqlplus-----开启服务2.输入用户名和密码(默认3个用户,注意,密码是可以修改的:system/manager;scott/tiger;sys/change_on_install),连接数库.3.创建表空间: create tablespace 表空间逻辑名 datafile '表空间文件的物理逻辑' size 文件大小(如:10m) autoextend 是否自动增长文件大小(on/off); 4.创建用户:create user 用户名 identified by 密码: 5.

Oracle基础学习(五) 表的实现

本章目标 数据完整性 创建表 修改表 添加.修改.删除列 添加.删除约束 启用.禁用约束 删除表 数据完整性 1. 数据完整性 a) 存储在数据库中的所有数据值均正确的状态. 如果数据库中存储有不正确的数据值,则该数据库称为已失去数据完整性. b) 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability). 它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的. c) 2. 数据完整性-1 a)