6-子查询理解

单行子查询

1.查询工资比200号员工工资高的员工
分析:
比200号员工工资高,首先需要知道的是200号员工的工资,可以通过sql语句
SELECT SALARY FROM HR.EMPLOYEES WHERE EMPLOYEE_ID=200;得到
然后需要的是写一条SQL语句:查询工资大于?的数据
SELECT * FROM HR.EMPLOYEES WHERE SALARY > ?;
一般而言?可以添加一个数字:例如
SELECT * FROM HR.EMPLOYEES WHERE SALARY > 2000;
而现在?需要的是200号部门的员工的工资值.理解:SELECT语句可以理解为Java中一个有Object返回值的函数,可以自动很多类型,可以为一个值,一个数组,一个集合
例如存在这样一个函数int getSalFromEmployees(int empId);
功能为根据员工ID从员工数据集合内获得某个员工的工资.最终返回的一个工资值
SELECT语句此时就可以理解为一个具有number类型返回值的函数.
?处此时可以理解为调用了一个函数得到了200号员工的数据.
最终这样一条SQL语句产生了,得到了想要的结果:
SELECT * FROM HR.EMPLOYEES WHERE SALARY > (SELECT SALARY FROM HR.EMPLOYEES WHERE EMPLOYEE_ID=200);

多行子查询

2:了解多行子查询前需要知道的内容
> < = >= <= <>的使用:
在Java中,同样存在一些比较的运算符,例如>可以想到 1>2, 2<3, 2=2 此时是可以进行比较的,因为比较的都是数字,同样'a'=='a',
之所以能够互相进行比较是因为运算符两遍的数据类型本质一致('a'==20也可以进行比较,因为比较时字符比较的是其编码,本质上也是一个整数),
而'a' 不能与"a"进行比较,因为一个是char类型一个是String类型,类型不一致;
再看1中的SQL语句:
SALARY > (SELECT SALARY FROM HR.EMPLOYEES WHERE EMPLOYEE_ID=200);
之所以能够进行比较是因为SALARY是number类型,而后面的SELECT语句查询返回得到的结果也是一个number类型的数据;
假如改成了SALARY > (SELECT HIRE_DATE FROM HR.EMPLOYEES WHERE EMPLOYEE_ID=200);
此时sql语句报错,ORA-00932:数据类型不一致: 应为NUMBER,但却获得DATE.>比较时两边的数据不一致.
由此引发出了另外一个问题:
与上面的SELECT语句相比,SELECT语句返回的可能不仅仅是一条记录,例如将上述的SQL语句改为
SELECT * FROM HR.EMPLOYEES WHERE SALARY > (SELECT SALARY FROM HR.EMPLOYEES);
再次执行会报错:ORA-01427: 单行子查询返回多个行.
我们可以这样理解:SALARY是一个number类型的数据,而SELECT SALARY FROM HR.EMPLOYEES返回的查询结果
是一个number[]类型的数据,number类型不能与number[]类型进行比较所以报错.为此Oracle提供了in,any,all这样的运算符用于单个记录与记录集的比较.例子:可能有这样一个需求:查询出比John薪水高的员工
分析:要比John薪水高,首先需要知道的是John的薪水,可通过查询得到
SELECT SALARY FROM HR.EMPLOYEES WHERE FIRST_NAME='John';
此时上面的结果返回的是多条记录;
而现在的需求是比John薪水高,而叫John不仅仅是一个人,此时需要进行的比较是将每个员工的工资
与其中一个John的比,只要比某一个叫John的薪水高,那么这个人就符合查询的条件.
这种情况是是一个数据一组数据的比较,在Java中可以举例为:
int a = 10;
int[] arr = {10, 20, 30, 40, 100};需要判断a数字是不是属于arr内的数据,我们需要进行的操作
是将数字a与arr中的每一个数字进行比较,在Java中使用循环进行遍历.
而在Oracle数据库中提供了更为遍历的比较方式:
in:表示某一个数据属于某一个数据集合(等于其中一个)
any,all用于别的运算符的比较,
例如:
=any 表示等于其中一个(等同于in);
>any 表示大于其中一个;等同关系: (a>arr[1] || a>arr[2] || a>arr[3] || ...)
>all 表示大于其中的所有数据;等同关系: (a>arr[1] && a>arr[2] && a>arr[3] && ...)

多列子查询

可以理解为
(单行子查询结果1, 单行子查询结果2, 单行子查询结果3, ...) 
也可是如同单行子查询使用运算符=,如同多行子查询使用运算符 in, any, all

 

转载于:https://www.cnblogs.com/superstudy/p/5120066.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机文化教程实验基础知识,《计算机文化基础上机实验教程》孙家启、黄晓梅、刘奎 著_孔网...

《计算机文化基础上机实验教程》是安徽省高等学校“十一五”规划教材——《计算机文化基础教程》的配套实验教材。本教程共安排了19个实验&#xff0c;内容包括计算机基础知识(1个实验)、windows2000中文操作系统(3个实验)、中文文字处理软件Word2000(5个实验)、中文电子表格处…

思科为其核心网络业务增加了订阅服务

据国外媒体报道&#xff0c;思科系统公司的核心网络业务于周二开始进军订阅服务市场&#xff0c;其向大型企业宣布了一系列新的安全和自动化工具。 这个新的“直观网络”代表了思科如何从其旗舰业务中获得收入的重大变化。San Jose公司一直依赖于网络设备的销售&#xff0c;这些…

fpga map测试_一种基于SELECTMAP的可配置且高速的FPGA配置电路及实现方法与流程

本发明属于计算机工程领域&#xff0c;与SoC密切相关。具体涉及一种FPGA配置电路及实现方法。背景技术&#xff1a;随着大数据的发展&#xff0c;计算能力的提升&#xff0c;人工智能近两年迎来了新一轮的爆发。2016年谷歌AlphaGo赢得了围棋大战后&#xff0c;人工智能在产业界…

超全局变量数组get post requerst resver的使用规则

超全局变量数组的概念不同于全局变量&#xff0c;这里我主要说的是用来接收信息用的。其实在以往已经大量使用了首先&#xff1a;get数组&#xff0c;速度较好&#xff0c;但是相对不是很安全。post数组&#xff0c;可以接收大的数据量&#xff0c;较安全&#xff0c;最常用。r…

遥感RS植被指数大全整理

本文整理了遥感中的常见指数及计算方法:植被指数、归一化植被指数、比值植被指数、差值植被指数、土壤调节植被指数、变换的土壤调节植被指数、修整的土壤调节植被指数、正交植被指数、绿度植被指数。 目录 一、VI - Vegetation Index - 植被指数 二、NDVI - Normalized Dif…

if函数python_pythonif函数

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01; python的内置的函数round() a 1.12586 #保留小数的函数,四舍五入&#xff0c;参数为保留小数点后的位数 pr…

IOS学习笔记二十四(NSData归档多个对象和归档对象实现深复制)

1、NSData归档多个对象 一、之前我写的学习笔记都是归档一个对象&#xff0c;如果需要归档多个对象我们需要借助NSData 二、步骤 1&#xff09;、NSMutableData作为参数&#xff0c;构建 NSKeyedArchiver对象 2&#xff09;、调用NSKeyedArchiver的encodeXXX 3)、调用NSKeyed…

Android渠道包自动化验证

随着产品发布越来越快&#xff0c;渠道包越来越多&#xff0c;渠道包自动化验证重要性逐渐凸显出来&#xff0c;需要将大把的人力从中解放出来&#xff0c;且避免人工失误造成的验证不完全&#xff1b;最近客户端产品尝试使用渠道包自动化测试的方法&#xff0c;这里说说我们目…

Foundatio - .Net Core用于构建分布式应用程序的可插拔基础块

简介Foundatio - 用于构建分布式应用程序的可插拔基础块•想要针对抽象接口进行构建&#xff0c;以便我们可以轻松更改实现。希望这些块对依赖注入友好。•缓存&#xff1a;我们最初使用的是开源 Redis 缓存客户端&#xff0c;但后来它变成了具有高许可成本的商业产品。不仅如此…

JQuery 判断滚动条是否到底部

1 BottomJumpPage: function () {2 var scrollTop $(this).scrollTop();3 var scrollHeight $(document).height();4 var windowHeight $(this).height();5 if (scrollTop windowHeight scrollHeight) { //滚动到底部执…

开讲啦观后感2017计算机科学家,开讲啦观后感2017

1 开讲啦观后感2017(一)是因为有爱&#xff0c;我才付出的&#xff0c;因为是我爱的&#xff0c;而我又付出了&#xff0c;所以我会更爱。这是郑教授的演讲《你为什么读大学》中给我映像最深刻的一句话。我也能从这句话中找到我读大学的原因因为我爱。古时候说你十年寒窗苦读&a…

ENVI IDL读写数据

最近写程序不知道怎么写envi标准格式文件的头文件&#xff0c;在网上搜了半天&#xff0c;也没找到相关的信息。找到一个 ENVI_SETUP_HEAD函数&#xff0c;也不知怎么用。下面的内容可能以后用的着&#xff0c;先留着吧。 引用自&#xff1a;http://bbs.esrichina-bj.cn/ESRI/v…

php 解压zip

2019独角兽企业重金招聘Python工程师标准>>> /*** 解压zip* param type $file* param type $destination* return boolean*/public function unzip_file($file, $destination){ $zip new ZipArchive() ; if ($zip->open($file) ! TRUE) {return $this->error…

python是偏向bs还是cs_CS与BS架构区别、比较、及现状与趋势分析

一、简介CS即Client/Server(客户机/服务器)结构&#xff0c;C/S结构在技术上很成熟&#xff0c;它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。但是该结构的程序是针对性开发&#xff0c;变更不够灵活&#xff0c;维护和管理的难度…

python数据分析软件_Python数据分析工具

Numpy Python没有提供数组功能&#xff0c;虽然列表可以完成基本的数组功能&#xff0c;但他不是真正的数组。Numpy内置函数处理速度是c语言级别&#xff0c;因此尽量使用内置函数&#xff0c;避免出现效率瓶颈的现象。 Numpy的安装&#xff1a; Windows中&#xff0c;pip inst…

Java之TimeUnit

1、TimeUnit介绍 位于这个包下 import java.util.concurrent.TimeUnit; 2、使用 一般比如多少分钟转多少毫秒、多少秒转多少毫秒、多少小时转多少分钟&#xff0c;还可以使用线程休息的方法&#xff0c; 底层还是用Thread.sleep()实现&#xff0c;代码可读性好点&#xff0c…

如何评价国内SRC纷纷上线“白帽子协议”?

2017年6月1日21:21分 某监狱里&#xff0c;对话如下&#xff1a; 犯人A:你们都是怎么来的&#xff1f; 犯人B:我是XX漏洞平台挖漏洞不小心进来的。 犯人C:我是XX平台路人甲&#xff0c;输错命令了rm -rf / &#xff08;批量删除&#xff09; 犯人D:我是某测评中心的忘了要授权了…

SQL Server数据库备份的镜像

SQL Server数据库备份的镜像 原文:SQL Server数据库备份的镜像SQL Server数据库备份的镜像 一个完整备份可以分开镜像 USE master GOBACKUP DATABASE [testdatabase] TO DISK NC:\testdatabase1.bak MIRROR TO DISK ND:\testdatabase2.bak WITH FORMAT, INIT GO 一个完整备份…

C# 观察文件的更改

使用 FileSystemWatcher 可以监视文件的更改。事件在创建、重命名、删除和更改文件时触发。这可用于如下场景&#xff1a;需要对文件的变更做出反应&#xff0c;例如&#xff0c;服务器上传文件时&#xff0c;或文件缓存在内存中&#xff0c;而缓存需要在文件更改时失效。因为 …

html5储存类型,html5本地存储-留言板

HTML5每日一练之JS API-本地存储LocalStorage 留言板 | 前端开发网(W3Cfuns.com)&#xff01;var Storage {saveData:function()//保存数据{var data document.querySelector("#post textarea");if(data.value ! ""){var time new Date().getTime() Mat…