“EXISTS”在SQL中的应用研究
Sol l o
裹 3 产 品销 售 襄
客户编号
K0 o ol
销售 日期
2 1 .6 0 0 0O . 7
销售数量
2 0
S oo 1 l S1 0 01 S1 0 02
ko2 0 o ko3 0 0 ko1 o O kol O 0
k O2 O O Koo Ol
图2
使 用 E IT X S S的 执 行结 果
3 2 语义 中有“ . 全部 ”“ 、 每个 ” 至少包含 ” 或“ 的情 况 例 : 了统计 不 同客户购 买 商 品的情 况 , 为 查询购 买 过全
部商 品的客户 名 。
问题分 析 : 询购 买过全 部商 品 的客户 姓名 , 查 即找这 样 的商 品名 , 不存在 某一个商 品他不购 买的情 况 。通过 等价 的 语义转 换 ,同样 可 以把 S L语句 设计 成 E S S的形式 如 Q XIT
例: 查询购 买 了商 品编 号“ l0 ” 并且 又购 买了商 品编 s0 1 ,
号“ 2 0 ” 客 户 名 。 s0 2 的
w eent x t(e c f m 商品表 hr o i s sl t r es e o
4 结 束 语 .
在数据 库 原理课程 的教 学中 ,带有 E IT X S S的 S L查 Q 询 语句 一直 以来 是教 学 中的一个难 点 ,也 是学 生最头痛 的 问题 , 章 以S L Sre 2 0 文 Q evr 05为实现环 境, 过实 际 的案例 通 研 究 ,总结 出在 S L语 句的设计 中 ,如何正 确灵活地 使用 Q E IT X S S的情 况, 更好 地掌握 S L语句 的书写技巧 。 Q
r f m 商品表 o w ee o is sl t h r t xs (e c n e t e
r f m 商品销售表 o whr 商品销售表 .商品编号 =商 品表 .商品编号1 ee 执 行 的结果如 图 4所示 , 由于本 数据库 中不存在 哪个商 品未销 售过 , 以执行结 果为空 。 所
和 MI NUS两种 操作 。因此 , 们必须 寻求 另外一种 解决 此 我
我 们知道 , Q S L语句 并不提供 语义 中含有全 称量词 (o Fr
作 者 简 介 :肖 : 据库 技 术 及应 用 。 女 陕 硕 讲 研 数
。‘— —
Fa g n X u
( LA o g i g Co P Ch n q n mmu c t n Co lg , o g i g 4 0 3 ) niai l e Ch n q n 0 0 5 o e
【 ^h血 吐 】 I ip pr rsn mpae ae s miao to r nma o ,n ar u srr n l i t n I nt s ae pee t t l - sdc t zt nme df i t n adcr o t ue-i dya mao h we ae tb uo i h oa i y a fe n i
aa s ,o t einS ur t e ns orc ywi xs u ri dacrigt ata menn Q evr 0 5 n l i h w d s QLq eys tmet c r t t e isi smma z codn c l aigi S L S re 0 ys o g a el h t s e o u n 2
参 考文献:
[] 春葆 , 据 库 原理 及 应 用 系统 解 析 [ . 北 京 : 华 大 学 出版 1李 数 M] 清
社 . 0 2. 20
[]高 荣芳 等 , 据 库 原 理 [ .西 安 : 安 电 子科 技 大 学 出版 社 , 2 数 M】 西
2 0 . 0 3
[] 雪 兰等 , 据库 系统 原理 及 应 用教 程 [ . 北京 : 械 工 业 出 3苗 数 M】 机
Sre 环境下得 到了验证 。 evr 2 .案例 导入
¥0 2 0l
以 网上商 品销售系统 的数据库 为例 , E IT 对 X S S在不 同
场 合 的使 用 进 行 探 讨 , 面 给 出 了 数 据 库 中 的 客 户 表 、 品 下 商
S0 2 0l So2 2o
表、 商品销售表 。
(e c sl t e
r f m 商品销售表 x 2 o s
w eex2 h r s .客户编号 =客户表 .客户编号 n s .商品编号 - s .商品编号) ad x2 x1 )
需要 注意 的 是 : 含 有“ 是 ” 义 中 , 能用 谓 词 I 在 全 语 不 N
来代替 E IT , 果使用 I 的话 , 查询 结果 中会还 有 男 XSS如 N 则
2 1 -6 O 0 00 . 8 2 1 .6 】 0 0O - O 2 1.60 0 00 - 7 2 l .6 0 0 0O . 7
2 l .6 O 0 OO . 8 2 l .6 0 0 OO . 7
3 0 l 1 l 9
l O l O
用 情况 ,并 以学 生接 触 较 多 的实 际 案例 为 依托 ,在 S L Q
问题 分析 : 没有客 户购 买过的商 品名 , 即找这样 的商 品,
在商 品销售 表 中不存 在 该商 品有销 售记 录 。转 换 为等价 的
带 有 E IT X S S的 S L语 句 如 下 Q sl t iic 商 品 名 称 e c s nt e dt
图 1 使 用 mi s 析 结 果 n 分 u
下:
图 4 33 行 结 果 .执
这种 类型 同样 能够解 决诸 如 “ 查询购 买 了那个 商品 , 但 没有购 买另一种 商品 ” 的情 况。
sl t iic 客 户 名 e c s nt e dt r f m 客 户 表 o
3 4 语义 中有 “ . 既…又 ” “ 、 并且 ” 或 ” 和“ 的情况
表 1 商 品表
So2 2o
ko3 0 O
2 l .6 1 0 OO . O
1 2
商品编 号
so 1 l0 s0 2 1o
s0 1 2 o
商品名称
精 盐 胡椒 粉
花 生
类别
1 1
2
单价
5 .O 0O 4 .0 00
6 .O 0O
3 1 语义 中有“ 是 ” . 全 的情 况 例 : 了统计 商 品销售 的情况 , 为 查询全 是“ ” 女 客户购 买 的商 品编 号 。 问题 分析 : 即在查找结果 中的商 品编 号没有“ ” 男 客户购
表 2 客 户表
sl t iic 商 品编 号 e c s nt e dt
联 系 电话
客 户 号 客 户 名 性 别 ko1 0 0 ko2 0 o 张 三 李 四 女 男
客 户 地 址
f m 商品销售表 r o
miu ns
山西 太 原 东 湖 友 好 公 司 l3 8 0 6 2 37 9 5 7 陕 西 临潼 好 好 乐 公 司 l4 4 6 O 6 3 3 2 9 5
【 h A
】 T ov i cl p it f xs rci l s,seicapiao so isaes d d yata cs td osl df ut o isi pat a ue p cf p l t n fe s r t i .B c l aes y e i noe t n c i ci xt ue u u
女客户都购 买 的商 品编 号 。当然 , 此类 问题还 可 以使用 - l al
谓 词加 以实现 。
圈3 3 . 2执行 结 果
同样 ,此 类 问题 的 S QL查 询 语句 也不 能使 用 I N代 替
E S XI TS。
3 3 语义 中有否定 的“ . 没有 ” “ ” 、 未 的情况 例 : 了统计 哪 些商 品未 曾有过 销售 记录 , 为 求没有 客户 购 买过 的商 品名 。
4 ・— 6 - —
问题 的方法 。可 以把 “ 是 ”转 换为 等价 的带有 存在 量 词 全
(Ⅺ S S 的形式语义 , 等价 的语义 为 : E T) 其 查找 这样 的商 品编
号,不存 在 男客户 也购 买 了此商 品 的情况 存在 。则 设计 的
S L语 句 如 下 : Q
slc dsnt 品编 号 eet i ic 商 t f m 商 品销 售表 x l r o s w ee o e is sl t f m 客户表 h r n t xs (e c r t e o w ee性别 = 男 ’n xs hr ’ ade is t
谓 词
E IT 的使用 在实际 的数 据库应用 系统 开发中有着 较 XSS 为广泛 的应用 , 其在 S QL的教学 、 践环 节 中也是学生 比较 实
难于理解和 掌握的 内容 。但是 , 目前在大 多数的教材和参 考 书 上 只 是 简 单地 通 过 一 两 个 例 子 介 绍 了 带 有 存 在 量 词 E IT X S S的书写语句 , 并没有 给 出实质 性 的说 明。本文根据 作者多年 的教学经验 , 总结 出 E S S在 不 同的场合下 的使 XIT
slcds nt 品销 售 表 . 商 品 编 号 e t iic 商 e t
fr 商品销售表 , om 客户表
whr ee商品销售表 .客户编 号 =客 户表 .客户编 号 ad性 别 n
=
ko3 0 0
王五
女
山东淄博家福 公司
l 19 0 3 3 3 8 0 3 5
’ ’ 男
版 社 . 0 7. 20
[]肖海蓉.S L中分组查询 的设计与应用 [ .计算机 与数 字工 4 Q J ]
sql数据库exists的用法
SQL数据库exists的用法1.简介e x i s t s在SQ L数据库设计和查询中,是一个常用的关键字,用于检查或验证一个子查询中是否存在满足条件的数据。
它通常与条件语句(如W H ER E、HA VI NG)一起使用,以便根据条件决定是否选择或排除特定的数据。
本文将详细介绍`exi s ts`的用法,包括语法、示例和注意事项。
通过学习`e xi st s`的正确使用,您可以更好地优化和精简SQ L查询语句,并提高数据库的查询性能。
2. `e xists` 语法下面是`ex is ts`关键字的基本语法:S E LE CT co lu mn1,col u mn2,...F R OM ta bl e_na meW H ER EE XI ST S(su bqu e ry);其中:-`co lu mn1,co lu mn2,...`是要选取的列名;-`ta bl e_na me`是从中选取数据的表名;-`su bq ue ry`是一个子查询,用于检查是否存在满足条件的数据;3.使用示例示例1:查询所有存在满足条件的订单记录假设我们有两个表:`o rd er s`表存储订单信息,`c us to me rs`表存储客户信息。
现在我们想找出存在满足条件的订单记录。
以下是查询的S QL 语句:S E LE CT or de r_id,or d er_d at e,cu st ome r_n am eF R OM or de rsW H ER EE XI ST S(S E LE CT cu st om er_idF R OM cu st om er sW H ER Ec us to me rs.cu s to me r_id=o rd ers.cu st om er_i dA N Dc us to me rs.c oun t ry='Ch in a');这个查询将返回所有来自中国的订单记录,只选择满足条件的数据。
SQL中IN与EXISTS关键字
SQL中IN与EXISTS关键字 偶遇这样⼀个场景,使⽤IN关键字进⾏检索数据所消耗的时间是使⽤EXISTS关键字进⾏检索数据所消耗的时间的接近30倍。
⼀看差距这么⼤,查阅了⼀本SQL数据,其中也没有介绍多少,不过我们可以从其定义中可以领悟到⼀些差异。
(1)IN关键字:该操作符IN⽤于把⼀个值与⼀个指定列表进⾏⽐较,当被⽐较的值⾄少与列表中的⼀个值相匹配时,它会返回TRUE。
(2)EXISTS关键字:该操作符EXISTS⽤于搜索指定表⾥是否存在满⾜特定条件的记录。
根据这两个关键字作⽤的描述,可知:若是IN⼦句或者EXISTS⼦句都是采⽤SELECT语法检索出来的结果列表进⾏匹配的话,那么在IN⼦句中还要将被⽐较值与结果列表做进⼀步的循环⽐较,当IN中的被⽐较值能够匹配到结果列表中某个值,那么IN⼦句就会返回TRUE,否则的话就会返回FALSE;⽽在EXISTS⼦句中,若SELECT语句检索的结果值不为空,那么EXISTS⼦句直接将该结果集返回,若是检索的结果值为空的,那么EXISTS⼦句就返回空,也就是说EXISTS⼦句返回的就是SELECT语句返回的结果集,不需要再次做⽐较判断了。
-- INSELECT column1FROM table_nameWHERE some_col IN (SELECT column1 FROM table_name WHERE other_col >'xx');-- EXISTSSELECT column1FROM table_nameWHERE EXISTS (SELECT column1 FROM table_name WHERE other_col >'xx'); 上述代码⽰例只是⼀个象征性的对⽐说明,在同⼀个表中进⾏不同条件的多次检索,使⽤IN的⽅式:先根据条件检索出数据,然后some_col与结果列表进⾏循环⽐较;使⽤EXISTS的⽅式:先根据条件检索出数据,然后将该结果集直接返回,作为最终的数据结果了。
SQL中EXISTS的用法
SQL中EXISTS的⽤法⽐如在Northwind数据库中有⼀个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID)这⾥⾯的EXISTS是如何运作呢?⼦查询返回的是OrderId字段,可是外⾯的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID⾥⾯啊,这是如何匹配的呢?EXISTS⽤于检查⼦查询是否⾄少会返回⼀⾏数据,该⼦查询实际上并不返回任何数据,⽽是返回值True或FalseEXISTS 指定⼀个⼦查询,检测⾏的存在。
语法: EXISTS subquery参数: subquery 是⼀个受限的 SELECT 语句 (不允许有 COMPUTE ⼦句和 INTO 关键字)。
结果类型: Boolean 如果⼦查询包含⾏,则返回 TRUE ,否则返回 FLASE 。
例表A:TableIn例表B:TableEx(⼀). 在⼦查询中使⽤ NULL 仍然返回结果集select * from TableIn where exists(select null)等同于: select * from TableIn(⼆). ⽐较使⽤ EXISTS 和 IN 的查询。
注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)select * from TableIn where ANAME in(select BNAME from TableEx)(三). ⽐较使⽤ EXISTS 和 = ANY 的查询。
注意两个查询返回相同的结果。
select * from TableIn where exists(select BID from TableEx where BNAME=TableIn.ANAME)select * from TableIn where ANAME=ANY(select BNAME from TableEx)NOT EXISTS 的作⽤与 EXISTS 正好相反。
sql语句exists用法
sql语句exists用法SQL语句中的EXISTS用于判断子查询结果集是否存在,如果子查询有结果集,则返回True,否则返回False。
EXISTS可以用在Where、Having、Select子句中,一般与IN操作符、ANY/SOME操作符和ALL操作符配合使用,在某些情况下,EXISTS可以优化查询性能。
EXISTS用法详解EXISTS语法:sqlSELECT column_name(s)FROM table_name 1WHERE EXISTS(SELECT column_name FROM table_name 2 WHERE condition);上面的语法中,column_name是我们要检索的列名,table_name1是我们要搜索的表名,condition是我们要满足的任何条件,column_name和table_name2在它们的子查询中被使用。
实际上,EXISTS语句根据子查询返回的结果是否为空来确定是否返回结果集,如果子查询至少返回一行,则存在记录,即EXISTS条件成立;反之,则不存在记录,即EXISTS条件不成立。
例如,在一个包含客户信息和订单信息的数据表中,我们想筛选出购买了某些产品的客户,那么可以使用以下SQL语句:sqlSELECT * FROM customersWHERE EXISTS(SELECT * FROM orders WHEREcustomers.customer_id=orders.customer_idAND orders.product_id IN (‘9991’,’9832’,’3834’));上面这个SQL查询将检查customer_id等于客户表的orders.customer_id的订单表。
如果订单表中包含任何三种产品中的任何一种,则返回所有匹配的客户表行。
EXISTS与IN关系虽然EXISTS和IN的目的有所不同,但它们可以用相同的方式执行操作。
SQL中EXISTS的使用
SQL中EXISTS的使⽤
1.简介
不相关⼦查询:⼦查询的查询条件不依赖于⽗查询的称为不相关⼦查询。
相关⼦查询:⼦查询的查询条件依赖于外层⽗查询的某个属性值的称为相关⼦查询,带EXISTS 的⼦查询就是相关⼦查询
EXISTS表⽰存在量词:带有EXISTS的⼦查询不返回任何记录的数据,只返回逻辑值“True”或“False”
2.表结构
选课表:学号、课程号
学⽣表:学号、姓名
课程表:课程号、课程名
3.查询所有选修了“C1”课程的学⽣名。
普通SQL查询:
带EXISTS的SQL查询:
相关⼦查询执⾏过程:先在外层查询中取“学⽣表”的第⼀⾏记录,⽤该记录的相关的属性值(在内层WHERE⼦句中给定的)处理内层查询,若外层的WHERE⼦句返回“TRUE”值,则这条记录放⼊结果表中。
然后再取下⼀⾏记录;重复上述过程直到外层表的记录全部遍历⼀次为⽌。
EXISTS语句不关⼼⼦查询的具体内容,因此⽤“SELECT *”,“Exists + ⼦查询”⽤来判断该⼦查询是否返回记录。
Exists:若⼦查询的结果集⾮空时,返回“True”;若⼦查询的结果集为空时,返回“False” 。
NOT EXISTS :若⼦查询结果为空,返回“TRUE”值;若⼦查询的结果集⾮空时,返回 “FALSE。
4.查询没有选C1课程的学⽣的学号、姓名
5.查询选修了所有课程的学⽣的姓名(续)
6.查询⾄少选修了S1所选的全部课程的学⽣名
7.在FROM语句中使⽤⼦查询,对查询结果定义表名及列名例:求平均成绩超过80分的学号及平均成绩。
sql语句中exists用法
sql语句中exists用法SQL语句中的EXISTS用法在使用SQL语句进行数据查询和操作时,可以通过使用关键字EXISTS来检查子查询中是否存在满足指定条件的记录。
EXISTS关键字的使用可以帮助我们更加灵活地进行数据查询和筛选,提高数据查询的效率。
本文将详细介绍SQL语句中的EXISTS用法,并提供一些实际应用场景作为示例,帮助读者更好地理解和运用该关键字。
一、EXISTS关键字的基本语法在SQL语句中,EXISTS关键字的基本语法如下:SELECT column_name(s)FROM table_nameWHERE EXISTS (subquery);在这个语法结构中,column_name(s)表示要查询的字段,可以是一个或多个字段;table_name表示要查询的表名;subquery表示一个子查询语句,用来检查是否存在满足指定条件的记录。
二、使用EXISTS关键字的基本原理当EXISTS关键字作用于一个子查询时,它首先执行该子查询,并根据子查询的结果集来确定是否存在满足条件的记录。
如果子查询的结果集不为空,则EXISTS返回True,否则返回False。
通过与WHERE子句结合使用,我们可以根据EXISTS的返回结果来进行进一步的筛选和操作。
三、使用EXISTS关键字的实例下面通过一些实际的应用场景来演示EXISTS的使用方法和效果。
1. 检查某个表中是否存在满足条件的记录我们有一个名为"Customers"的表,其中包含"CustomerID"、"CustomerName"等字段。
我们想要检查表中是否存在某个特定的客户,可以使用下面的SQL语句:SELECT *FROM CustomersWHERE EXISTS (SELECT *FROM CustomersWHERE CustomerName = 'ABC Company');该语句将返回满足条件的记录,如果表中存在满足条件的记录,否则不返回任何结果。
sql中exists用法循环
sql中exists用法循环SQL 中的EXISTS 用法和循环在SQL 中,EXISTS 是一个非常有用的关键字,用于检查一个子查询是否返回了任何行。
它返回一个布尔值,即是否存在满足给定条件的行。
这个关键字通常被用于WHERE 子句中,以过滤那些满足条件的行。
在本文中,我们将深入探讨EXISTS 的用法,并探讨它在循环中的应用。
一、EXISTS 的基本用法EXISTS 关键字后面需要跟着一个子查询,来检查该子查询是否返回结果。
如果子查询返回了至少一行数据,则EXISTS 返回True,并将外部查询的结果包含到结果集中。
如果子查询没有返回结果行,则EXISTS 返回False,并不会影响到外部查询结果集。
下面以一个示例来说明EXISTS 的用法:假设有两个表,一个是Customers 表,包含了客户的信息,另一个是Orders 表,包含了客户的订单信息。
我们想要找到至少有一个订单的客户。
可以使用以下SQL 查询语句:SELECT *FROM CustomersWHERE EXISTS (FROM OrdersWHERE Orders.customer_id = Customers.customer_id);在上述示例中,外部查询是从Customers 表中选择所有列,并使用EXISTS 子查询来检查是否存在一个匹配的订单。
如果存在一个匹配的订单,则该客户将被包括在结果集中。
二、EXISTS 在循环中的应用在编写复杂的SQL 查询时,经常需要在结果集中对每一行数据进行操作。
这包括对每一行进行计算、更新或删除等操作。
在这种情况下,可以使用EXISTS 的循环结构来处理每一行数据。
下面以一个示例来说明EXISTS 在循环中的应用:假设我们有一个存储了学生信息的表Students,其中包含学生的姓名、学号和成绩等信息。
我们想要将每个学生的成绩乘以10,并更新回数据库中。
我们可以使用以下SQL 查询语句实现:UPDATE StudentsSET score = score * 10WHERE EXISTS (FROM Students);在上述示例中,我们使用EXISTS 子查询来选择Students 表中的每一行数据,并对每个学生的成绩进行更新。
sql中exists的用法
sql中exists的用法在SQL中,exists是一个用于判断指定查询语句的结果是否存在数据的关键字。
exists关键字返回一个布尔值,表示指定的查询语句是否返回结果。
exists可以用在select、delete、update等语句中。
exists的语法如下:```SELECT column1, column2, ...FROM table_nameWHERE EXISTS (SELECT column1 FROM table_name WHERE condition);```其中,condition是用来过滤结果的条件,可以根据具体需求进行设置。
exists的工作原理如下:1.首先,外部查询返回一个结果集。
2.然后,对于外部查询中的每一行,内部查询将检查是否返回相应的结果。
3. 如果存在内部查询的结果,exists返回true,否则返回false。
exists的用途如下:1. 子查询的过滤条件:可以使用exists关键字来检查是否存在满足特定条件的行,然后根据结果筛选要返回的行。
```SELECT column1, column2, ...FROM table_nameWHERE EXISTS (SELECT column1 FROM table_name2 WHERE condition);```2. 条件更新或删除:可以结合exists和update/delete语句来更新或删除符合条件的数据。
```UPDATE table_nameSET column1 = valueWHERE EXISTS (SELECT column1 FROM table_name2 WHERE condition);DELETE FROM table_nameWHERE EXISTS (SELECT column1 FROM table_name2 WHERE condition);```3. 存在性检查:exists可以用于检查一些表中是否存在满足特定条件的记录。
SQL中EXISTS的用法
有一个查询为
SELECT c.CustomerId, CompanyName
FROM Customers c
WHERE EXISTS(
SELECT OrderID FROM Orders o
WHERE EXISTS (SELECT NULL)
ORDER BY CategoryName ASC
GO
B. 比较使用 EXISTS 和 IN 的查询
这个例子比较了两个语义类似的查询。第一个查询使用 EXISTS 而第二个查询使用 IN。注意两个查询返回相同的信息。
USE pubs
GO
SELECT DISTINCT pub_name
Bennet Abraham
(2 row(s) affected)
D.比较使用 EXISTS 和 IN 的查询
本示例所示查询查找由位于以字母 B 开头的城市中的任一出版商出版的书名:
USE pubs
GO
Is Anger the Enemy?
Life Without Fear
WHERE o.CustomerID = cu.CustomerID)
这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢?
Cooking with Computers: Surreptitious Balance Sheets
You Can Combat Computer Stress!
GO
下面是任一查询的结果集:
au_lname au_fname
SQL中EXISTS用法
SQL中EXISTS用法EXISTS 是判断是否存在,和in类似,但效率要比in高SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X'FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB')SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB')这两句效果一样EXISTS或者NOT EXISTS是把主查询的字段传到后边的查询中作为条件,返回值是TRUE或者FALSE。
EXISTS TRUE,那么就是查询条件成立,结果会显示出来。
NOT EXISTS TRUE,则为FALSE,查询连接条件不成立。
select * from course where not exists(select * from grade where grade.课程代号=course.课程代号)这个语句,是查询course表中课程代号在grade中没有出现的数据。
看看grade表,课程编号有K01到K06,而COURSE表,有K01到K07,那么K07在GRADE表是不存在的,那么,是符合条件的。
同样select * from course where exists(select * from grade where grade.课程代号=course.课程代号)则是查询COURSE的记录条件为编号在GRADE中存在。
那么很明显,结果是K01到K06的数据。
另外,EXISTS和NOT EXISTS的作用可以用IN或NOT IN实现,但是,效率要高。
因为EXISTS和NOT EXISTS返回的结果是TRUE或者FALSE,那么则在子查询中,遇到第一个符合条件的结果,就会退出查询,而不会进行全表的检索。
