Oracle基础笔记六

第六章 子查询

1.子查询语法:

SELECT select_list

FROM table

WHERE expr operator

(SELECT select_list

FROM table);

子查询 (内查询) 在主查询之前一次执行完成。

子查询的结果被主查询(外查询)使用 。

例如:谁的工资比 Abel 高?

SELECT last_name

FROM   employees

WHERE  salary >

(SELECT salary

FROM   employees

WHERE  last_name = ‘Abel‘);

注:子查询要包含在括号内。

将子查询放在比较条件的右侧。

单行操作符对应单行子查询,多行操作符对应多行子查询。

2.单行子查询:

只返回一行。

使用单行比较操作符。

操作符 含义

= Equal to

> Greater than

>= Greater than or equal to

< Less than

<= Less than or equal to

<> Not equal to

例子:题目:返回job_id与141号员工相同,salary比143号员工多的员工姓名,job_id 和工资

SELECT last_name, job_id, salary

FROM   employees

WHERE  job_id =

(SELECT job_id

FROM   employees

WHERE  employee_id = 141)

AND    salary >

(SELECT salary

FROM   employees

WHERE  employee_id = 143);

2.1在子查询中使用组函数:

题目:返回公司工资最少的员工的last_name,job_id和salary

SELECT last_name, job_id, salary

FROM   employees

WHERE  salary =

(SELECT MIN(salary)

FROM   employees);

2.2子查询中的 HAVING 子句:

首先执行子查询。

向主查询中的HAVING 子句返回结果。

题目:查询最低工资大于50号部门最低工资的部门id和其最低工资

SELECT   department_id, MIN(salary)

FROM     employees

GROUP BY department_id

HAVING   MIN(salary) >

(SELECT MIN(salary)

FROM   employees

WHERE  department_id = 50);

2.3子查询中的空值问题:子查询不返回任何行

3.多行子查询:

返回多行。

使用多行比较操作符。

操作符 含义

IN 等于列表中的任意一个

ANY 和子查询返回的某一个值比较

ALL 和子查询返回的所有值比较

3.1在多行子查询中使用 ANY 操作符

题目:返回其它部门中比job_id为‘IT_PROG’部门任一工资低的员工的员工号、姓名、job_id 以及salary

SELECT employee_id, last_name, job_id, salary

FROM   employees

WHERE  salary < ANY

(SELECT salary

FROM   employees

WHERE  job_id = ‘IT_PROG‘)

AND    job_id <> ‘IT_PROG‘;

3.2在多行子查询中使用 ALL 操作符

题目:返回其它部门中比job_id为‘IT_PROG’部门所有工资都低的员工的员工号、姓名、job_id 以及salary

SELECT employee_id, last_name, job_id, salary

FROM   employees

WHERE  salary < ALL

(SELECT salary

FROM   employees

WHERE  job_id = ‘IT_PROG‘)

AND    job_id <> ‘IT_PROG‘;

时间: 2024-11-05 11:43:55

Oracle基础笔记六的相关文章

Oracle基础笔记十

第十章 视图 1.视图:从表中抽出的逻辑上相关的数据集合. 视图是一种虚表. 视图建立在已有表的基础上, 视图赖以建立的这些表称为基表. 向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句. 视图向用户提供基表数据的另一种表现形式 2.为什么使用视图 控制数据访问 简化查询 避免重复访问相同的数据 3.分类:简单视图和复杂视图 特性           简单视图       复杂视图 表的数量        一个       一个或多个 函数    

Oracle基础笔记

=====================================第一章:oracle数据库基础============================================= Orace特点: 1.跨操作系统,跨硬件平台的数据操作能力 2.支持多用户,大事务量的处理 3.在保持数据安全性和完整性方面的性能优越 4.支持分布式数据处理,具有可移植性 Sqlserver特点: 1.只能在windows上运行 Oracle和Sqlserver两者的共同点: 1.都是关系型数据库 表

Oracle基础笔记九

第九章 约束 1.什么是约束 约束是表级的强制规定 有以下五种约束:NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK 2.注意事项 如果不指定约束名 ,Oracle server 自动按照 SYS_Cn 的格式指定约束名 创建和修改约束: 建表的同时 建表之后 可以在表级或列级定义约束 可以通过数据字典视图查看约束 3.表级约束和列级约束 作用范围: ①列级约束只能作用在一个列上 ②表级约束可以作用在多个列上(当然表级约束也 可以作用在一个列上) 定义方

Oracle学习笔记六 SQL常用函数

函数的分类 Oracle 提供一系列用于执行特定操作的函数 SQL 函数带有一个或多个参数并返回一个值 以下是SQL函数的分类: 单行函数对于从表中查询的每一行只返回一个值 可以出现在 SELECT 子句中和 WHERE 子句中 单行函数可以大致划分为: 1.日期函数 2.数字函数 3.字符函数 4.转换函数 5.其他函数 单行函数 日期函数 日期函数对日期值进行运算,并生成日期数据类型或数值类型的结果 日期函数包括: 1.ADD_MONTHS 2.MONTHS_BETWEEN 3.LAST_D

Oracle基础笔记十一

第十一章 其他数据库对象 1.什么是序列? 序列:提供有规律的数值. 序列: 可供多个用户用来产生唯一数值的数据库对象 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以提高访问效率 1.2.定义序列 CREATE SEQUENCE 语句 CREATE SEQUENCE sequence [INCREMENT BY n]  --每次增长的数值 [START WITH n]    --从哪个值开始 [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n

Oracle基础笔记七

第七章 创建和管理表 1.常见的数据库对象 对象 描述 表              基本的数据存储集合,由行和列组成. 视图 从表中抽出的逻辑上相关的数据集合. 序列 提供有规律的数值. 索引 提高查询的效率 同义词 给对象起别名 2.命名规则 表名和列名: 必须以字母开头 必须在 1–30 个字符之间 必须只能包含 A–Z, a–z, 0–9, _, $, 和 # 必须不能和用户定义的其他对象重名 必须不能是Oracle 的保留字 3.数据类型 数据类型                 描述

JavaSE基础笔记六

第五章 面向对象三 1.static关键字 1.static:静态的,可用来修饰属性,方法,代码块,内部类 2.static修饰属性(类变量): ①由类创建的所有的对象,都共用这一个属性 ②当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用.vs实例变量(非static修饰的属性,各个对象各自拥有一套副本) ③类变量随着类的加载而加载.而且独一份 ④静态的变量可以直接通过"类.类变量"的形式来调用 ⑤类变量的加载是要早于对象,所以当有对象以后,可以"对象.类变量

Oracle基础笔记十四

第十四章 高级子查询 1.子查询 子查询 (内查询) 在主查询执行之前执行 主查询(外查询)使用子查询的结果 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM  table); 问题:查询工资大于149号员工工资的员工的信息 SELECT last_name FROM   employees WHERE  salary > (SELECT salary FROM   employees WHERE

Oracle基础笔记四

第四章 多表查询 1.笛卡尔集 笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件. 2.Oracle 连接 使用连接在多个表中查询数据. select table1.column,table2.column from table1,table2 where table1.column = table2.column 在 WHERE 子句中写入连接条件. 在表中有相同列时,在列名之前加上表名前缀 2.1等