SQL语句嵌套查询组成、语法规则、表达形式、简单嵌套查询、in嵌套查询

嵌套查询

包含一个或多个子查询或者子查询的另一个术语的 SELECT 语句。

在一个SELECT 语句的WHERE 子句或HAVING 子句中嵌套另一个SELECT 语句的查询称为嵌套查询,又称子查询。子查询是SQL 语句的扩展。

子查询可以使用任何普通查询中使用的关键词:如DINSTINCT(去重),GROUP BY(分组),LIMIT(限制记录条数),ORDER BY(排序),UNION(联合去重),ALL,UNION ALL(联合不去重)等。可以使用<,>, <=, >=, =, <>运算符进行比较,也可以使用ANY ,IN和SOME进行集合的匹配。

嵌套查询的工作方式是:先处理内查询,由内向外处理,外层查询利用内层查询的结果嵌套查询不仅仅可以用于父查询select语句使用。还可以用于insert、update、delete语句或其他子查询中。

1.组成

(1)包含标准选择列表组件的标准select查询。

(2)包含一个或多个表或者视图名称的标准from子句。

(3)可选的where子句。

(4)可选的group by子句。

(5)可选的having子句。

2.语法规则

(1)子查询的select查询总是使用圆括号括起来。

(2)不能包括compute或for.browse子句。

(3)如果同时指定top子句,则可能只包括orderby子句。

(4)子查询最多可以嵌套到32层。个别查询可能会不支持32层嵌套。

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

(6)如果某个表只出现在子查询中二不出现在外部查询中,那么该表的列就无法包含在输出中。

3.表达形式

SELECT <目标表达式1>[,…] FROM <表或视图名1> WHERE [表达式] (SELECT <目标表达式2>[,…] FROM <表或视图名2>) [GROUP BY <分组条件> HAVING [<表达式>比较运算符] (SELECT <目标表达式2>[,…] FROM <表或视图名2> )]

4.简单嵌套查询

表结构:

示例:

select name,age from student where age>(select age from student where name=’薇薇’);

结果:

5.in嵌套查询

in关键字用于where子句中用来判断查询的表达式是否在多个值的列表中。返回满足in列表中的满足条件的记录。

示例:

select name from student where id in (select id from student where department=’计算机科学与技术’);

结果:

6.some嵌套查询(和any等价)

some在sql中的逻辑运算符号,如果在一系列比较中,有些值为True,那么结果就为True。

some的语法是:

<表达式>{=|<>|!=|>|>=|!>|<|<=|!<}some(子查询)

示例:

select name from student where age>some (select age from student where name=’薇薇’);

结果:

注:SQL中定量谓词不支持反操作,也就是说,不能在ANY或者SOME前加NOT关键字。但可以用“<>”号表示否定

7.all嵌套查询

all是sql中的逻辑运算符号,如果一系列的比较都为true,那么结果才能为true。

all的语法是:

<表达式>{=|<>|!=|>|>=|!>|<|<=|!<}all(子查询)

示例:

select name from student where id>all (select id from student where name=’灵思’);

结果:

8.exists嵌套查询

exists是sql中的逻辑运算符号。如果子查询有结果集返回,那么就为True。exists代表“存在”的意义,它只查找满足条件的那些记录。一旦找到第一个匹配的记录后,就马上停止查找,但是如果子查询中因为加了条件而没有结果集返回,则主语句就不执行了。

示例1:

select id,name from student where exists(select id from student where name=’灵思’);

结果:

示例2:

select id,name from student where exists(select id from student where name=’俞静’);

结果:

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐