sql镶嵌查询_SQL数据库嵌套查询

嵌套查询

保存查询结果

从查询结果创建一个永久表:

select 字段列表 into 新表名

from 原表名

where 查询条件

嵌套查询

一个 select……from……where语句称为一个查询块。

将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询称为嵌套查询。

其中外层查询叫父查询或主查询,内层的查询叫子查询或从查询。

insert,delete,update,select命令中允许表达式的地方都可以包含子查询。子查询甚至可以包含在另一个子查询中

嵌套查询语法规则

子查询的SELECT总是用圆括号括起来

不能包含compute或for browse子句

任何可以使用表达式的地方都可以使用子查询,只要它返回的是单个值

如同时指定top子句,则可能只包括order by子句

子查询最多可嵌套32层,个别查询可能不会支持32层

如果某个表只出现在子查询而没有出现在外部查询中,那么该表的列就无法包含在输出中

几种语法格式示例

Where 查询表达式 比较运算符 [any|all|some](子查询)

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

Where [not]exists(子查询)

使用简单比较符的嵌套查询

使用简单比较嵌套查询的比较符有:=、!=(<>)、>、>=、

select

from 表

Where 表达式(列名) 比较符 (select 列 from 表 [where…])

带[any|all|some]的比较嵌套查询

1、T—SQL支持3种定量谓词:some,any,all。它们都是判断是否任何或全部返回值都满足搜索要求的。其中some,any只注重是否有返回值满足搜索要求,它们含义相同可替换使用。

select

from 表

Where 表达式(列名) 比较符 all | some | any (select 列 from 表 [where…])

使用比较符的嵌套查询

Some和any:表示表达式只要与子查询结果集中的某个值满足比较的关系时,就返回true,否则返回false.

All:指定表达式要与子查询结果集中的每个值都进行比较,当表达式与每个值都满足比较的关系时,才返回true,否则返回false;

【例】查找比所有计算机系的学生年龄都大的学生。

select * from student

where 出生时间

where 专业名 = '计算机')

使用IN操作符的嵌套查询

子查询只能返回一个或一列值,当返回一列值时适合用in操作符,表示表达式的值是子查询产生的一系值中的一个就返回TRUE

select

from 表

where 列名 in (select 列 from 表 [where…])

使用EXISTS操作符的嵌套查询

EXISTS谓词只注重子查询是否返回行,如果子查询返回,谓词返回为真,否则为假。 EXISTS并不真正使用子查询的结果,它仅仅测试子查询是否产生任何结果。

EXISTS谓词子查询的SELECT子句中可包含任何列名,甚至多列,因为它只在乎是否有返回行。

select

from 表

where exists (select 列 from 表 [where…])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值