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

日期: 2008-12-03 作者:John WatsonRoopesh Ramklass翻译:曾少宁 来源:TechTarget中国 英文

第8章:使用子查询解决问题   内容大纲:  定义SQL子查询在SQL中使用子查询列举SQL的子查询类型编写单行和多行的子查询   本书有两章阐述了如何将两个或更多的SELECT命令整合到一个语句中,这是其中的第一章。第一种整合SELECT命令的方法(本文所介绍的)是使用子查询。子查询指的是将一个SELECT的语句的输出作为另一个SELECT语句(或一个DML语句,在第10章中所介绍的)的输入进行查询。第二种方法是使用集合操作符,它可以将几个SELECT命令的结果整合到一个结果集中。

  定义SQL子查询   子查询是一个嵌套在SELECT、INSERT、UPDATE 或DELETE……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

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;

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐

  • 在SQL中使用SELECT进行算术运算

    如何在不使用SQL算术运算符而仅仅使用SELECT的情况下完成数学运算,Oracle数据库专家给出了解答。

  • DBA在使用SQL语句时需要注意的问题

    Michael McLaughlin是Oracle 11g和MySQL 5.6开发者指南的作者,他在书中为Oracle数据库开发者提供了一些建议与帮助。

  • Oracle数据库不同版本的硬件需求

    每个企业的IT环境都是不同的,这些环境中可能会包含虚拟服务器、各种网络操作系统、基于云计算的服务、SAN等等,根据应用场景选择硬件是基本的准则。

  • Oracle 11g SQL性能分析器技术指南

    当今信息时代要求企业的IT系统能够始终保证系统的性能并且提供更高的服务质量,我们的IT系统经常要面对应用程序升级、硬件更新、数据库升级、对象结构变更等导致SQL性能下降的问题。