SQL基础一考试指南:定义SQL子查询

2008-12-4    | |
打印本文章
RSS

导读:子查询是一个嵌套在SELECT、INSERT、UPDATE 或DELETE语句,或者另一个子查询里的查询。一个子查询可以返回一行或多行结果给父查询。标量子查询是只返回一个值……

关键词:Oracle 11g Oracle SQL SQL子查询 Oracle 11g OCA

正在加载数据... 【TechTarget中国原创】子查询是一个嵌套在SELECT、INSERT、UPDATE 或DELETE语句,或者另一个子查询里的查询。一个子查询可以返回一行或多行结果给父查询。标量子查询是只返回一个值的查询:只有一个字段的一行记录。标量子查询可以在SQL语句的大多数位置,其中你可以使用一个表达式或一个实际值。

【TechTarget中国原创】第8章:使用子查询解决问题

  内容大纲:

  •  定义SQL子查询
  • 在SQL中使用子查询
  • 列举SQL的子查询类型
  • 编写单行和多行的子查询

  本书有两章阐述了如何将两个或更多的SELECT命令整合到一个语句中,这是其中的第一章。第一种整合SELECT命令的方法(本文所介绍的)是使用子查询。子查询指的是将一个SELECT的语句的输出作为另一个SELECT语句(或一个DML语句,在第10章中所介绍的)的输入进行查询。第二种方法是使用集合操作符,它可以将几个SELECT命令的结果整合到一个结果集中。

  定义SQL子查询

  子查询是一个嵌套在SELECT、INSERT、UPDATE 或DELETE语句,或者另一个子查询里的查询。一个子查询可以返回一行或多行结果给父查询。标量子查询是只返回一个值的查询:只有一个字段的一行记录。标量子查询可以在SQL语句的大多数位置,其中你可以使用一个表达式或一个实际值。

  查询中可能会用到子查询的有如下几个位置:

  • 用于字段映射的SELECT列
  • 在FROM子句中
  • 在WHERE子句中
  • 在HAVING子句中

  子查询经常是作为内查询使用,而它所在的查询语句则称为外查询。这个专业术语没有任何的问题,只是它可能让人误解为只能有内和外两个级别的查询。事实上,Oracle实现的子查询并没有硬性限制查询嵌套级数:FROM子句中的语句中的嵌套深度没有限制,而WHERE子句上的嵌套上限为255。

  子查询可以使用任何一种常用的选择和映射子句。而下面就是必须的子句:

  • SELECT
  • FROM

  下面是可选的子句:
 

  • WHERE
  • GROUP BY
  • HAVING

  SQL语句中的子查询必须在调用它的父查询之前执行,这样子查询的结果才可以传递给父查询。

  练习8-1子查询的类型

  在这个练习中,你将要编写代码来演示可以使用子查询的位置。你可以使用SQL*Plus或SQL Developer来编写代码。所有查询在连接到HR Schema后都应该能执行通过。

  1、作为HR登陆你的数据库

  2、作为HR登陆你的数据库


select sysdate Today,
(select count(*) from departments) Dept_count,
(select count(*) from employees) Emp_count from dual; 

  3、编写一个查询,确定所有是经理的员工。这需要在WHERE子句中使用子查询来选择所有以MANAGER_ID字段出现在EMPLOYEE_ID字段中的员工:

select last_name from employees where 
(employee_id in (select manager_id from employees));
ch08.indd 359 4/28/08 10:48:49 AM

  4、编写一个查询,确定每一个国家的最高薪水。这需要在FROM子句中使用子查询:


select max(salary),country_id from 
(select salary,department_id,location_id,country_id from 
employees natural join departments natural join locations) group by country_id;

查看全文
相关的白皮书
 
当遇到跨系统输入输出Oracle 9i数据库时,总会遇到表单范围变化的问题,如何解决问题,专家将给出答案。
 
Oracle数据库与信息库究竟有什么区别?在处理数据方面,二者有怎样的特点,专家给出了解释。
 
在Oracle中如何区别动态注册与静态注册,两者的关系是什么,专家给出了答案。
 
在Hibernate中如何使用Oracle sequence,还有使用中的注意事项有哪些,本文将为您解答。
 
Oracle实现全文检索,其机制其实很简单。即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元找出来,此处我理解为……
在SQL Server中,我们如何进行索引设计来提升系统的性能和对查询进行优化,是许多用户非常关注的问题,在本次技术专题中,我们将分群集索引和非群集索引设计两部分来为您详细分析。
本技术专题主要为使用Oracle SQL Developer和其他开发工具。包括如何使用Oracle SQL Developer和其他开发工具、使用Oracle Database Home Page、在Oracle中使用SQL*Plus等方面。
本专题为QL SELECT语句基础。侧重概述了如何使用SELECT来访问SQL数据库中所有内容以及组成SELECT语句的许多子句名称和功能;同时还阐述了如何使用DISTINCT关键字消除重复的行,以及如何正确使用ORDER BY子句来排序数据。
最新更新
专家答疑
技巧
Brian Fedorko
Oracle数据库审计功能十分强大、灵活并且易于配置,适当并有效地使用数据库审计功能是拥有高效安全策略的基础。
Brian Peasland
Oracle数据库二进制文件和库文件是高版本版本的,而备份的数据库内部如果仍然是较低版本,那么Oracle将不允许你打开数据库,除非你完成了升级过程。
Maria Anderson
在Windows XP环境下,使用数据库升级助手将Oracle从9.2.0.1升级到10g R2,出现DBUA不能识别Oracle数据库的SID问题如何解决。

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
登录Email
请输入您的登录Email
密码
下次自动登录