首页 > SQL学习笔记-嵌套查询

SQL学习笔记-嵌套查询

嵌套查询

定义:

1 .指在一个外层查询中包含有另一个内层查询。其中外层查询称为主查询,内层查询称为子查询。

2 .SQL允许多层嵌套,由内而外地进行分析,子查询的结果作为主查询的查询条件

3 .子查询中一般不使用order by子句,只能对最终查询结果进行排序

子查询(sub query)

where  表达式  [ not ]   in  (子查询)

where  表达式 比较运算符 [ any|all ]  子查询

where   [ not ]   exists  (子查询)



1 .子查询-单值比较

返回单值子查询,只返回一行一列

主查询与单值子查询之间用比较运算符进行连接:

运算符:
> , >= , < , <= , = , <>

例:找出与太行同龄的同事

select   *   from  company

where  age  =  ( select  age  from  company

             
where  name = taihang)



2 .子查询- in

例:查询选修了‘
001 ’课程的学生学号,姓名。

select  id,name

from  student

where  id  in  ( select  id 

             
from  taihang

             
where  id = ' 001 ' )



3 .子查询-多值比较all

多行一列

1 .父查询与多值子查询之间的比较需用all来连接

2 .标量值S比子查询返回集R中的每个都大时,s >all ,r为true

3 .all表示所有

4 . >all , , >=all , <=all , <>all ,注:all等价于not  in

例:找出年龄最小的学生

select   *   from  student

where  age ( select  age  from  student)



4 .子查询-多值比较some /any

1 .父查询与多值子查询之间的比较需用some / any来连接

2 .标量值S比子查询返回集r中的某一个都大时,s > some时r为true 或s > any时r为true

3 .some表示部分

4 . >some , >=some , =some , , <=some , <>some ,注: = some等价于in, <> some不等价于not  in .

例:找出不是最小年龄的学生

select   *   from  student

where  age  >   some ( select  age  from  student)



5 .子查询-存在判断exists

1 . exists+ 子查询用来判断该子查询是否返回元组

2 .当子查询的结果集非空时,exists为true

3 .当子查询的结果集为空时,exists为false

4 .不关心子查询的具体内容,因此用select  *

例:列出先修了C01课程的学习的学号,姓名

select  son,sname

from  strdent

where   exists ( select   *   from  sc

             
where  sc.sno = stusent.sno  and

             cno
= ' C01 ' )

最后这一个不是很好理解呀!等用多了就好了。

转载于:https://www.cnblogs.com/stever/archive/2008/11/25/1340359.html

更多相关:

  • 关注我的头条号,获取更多运维相关知识。你想了解哪方面的运维知识,请评论区告诉我,我会尽快更新~MySQL 数据库,基本上运维都会接触到,而对于数据库的性能优化,想必是大家比较关注的,下面分享一些调优技巧。先决条件安装 MySQL,版本大于 5.7有部分数据操作系统、数据库管理员权限MySQL 系统性能优化在系统层面,调整硬件和软件选项...

  • spring data jpa提供了多种查询方式,如下:方法名称查询继承Repository接口测试代码方法名称中支持的关键字(官方文档提供)使用JPA命名查询在User实体中定义jpql(类似于hql)jpql(百度百科)继承JpaRepository接口测试使用@Query查询和命名查询不同的是,将jpql写到了 dao 方法上,...

  • 转自:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html   对于SqlServer的优化来说,可能优化查询是很常见的事情。关于数据库的优化,本身也是一个涉及面比较的广的话题,本文只谈优化查询时如何看懂SqlServer查询计划。由于我对SqlServer的认识...

  • 一.实现基础功能之一(记账)   一个记账本最基础之一的功能就是记账,所以也是首先要解决的问题,我选择了上学期使用的MySQL数据库来对账本进行存储。   我选择记账的方法是分开记账,就是支出放在一个表,收入放在一个表,这样在数据库方面会比较的直观的看到,但是在显示的时候就会产生部美观的问题,就是支出和收入都是分开来的,没有办法按照时...

  • 在Navicat中,我们选中一个表,双击打开,这是如果要新建查询这个表的sql语句,可以直接用快捷键  ctrl+q  会自动打开查询窗口,并直接写好 sql:select * from (当前打开的表名) 我们直接在后面补全查询条件即可,非常方便。 转载于:https://www.cnblogs.com/libin6505/...

  • select {appearance: none;/*隐藏原生select下拉框的向下箭头▼*/ }...

  • 一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:mssq...

  • 一、介绍   GreenPlum分布式数据仓库,大规模并行计算技术。  无共享/MPP核心架构  Greenplum数据库软件将数据平均分布到系统的所有节点服务器上,所以节点存储每张表或表分区的部分行,所有数据加载和查询都是自动在各个节点服务器上并行运行,并且该架构支持扩展到上万个节点。 混合的存储和执行(按列或按行)  Greenp...

  • from selenium.webdriver.support.ui import Select Select(d.find_element_by_id(u'key_开户行')).first_selected_option.text 转载于:https://www.cnblogs.com/paisen/p/3669272.html...

  • 我们都知道面试的时候通常都会考数据库部分的知识,所以在此整理了下我们常用的面试中常用的一些查询语句SQL,本人测试数据库为SQL Server2008 首先在数据库中建立一个测试库,此处用DavidTest代替 数据表与相应测试数据 USE [DavidTest] GO /****** Object: Table [dbo].[T...