SQL 中 exists 是怎么回事啊 怎么用啊 老师没讲懂 呵呵 高手都来帮忙啊
发布网友
发布时间:2022-04-08 19:02
我来回答
共4个回答
热心网友
时间:2022-04-08 20:32
exists 是指:是否存在 的意思
例如你要新建一个新的数据库 但是不知道以前SQLSERVER里是否已经存在该数据库了 则可以使用如下语句
IF EXISTS (SELECT * FROM SYSDATABASES WHERE NAME = 'TEST')
DROP DATABASE 'TEST'
该句意思为:在数据库总记录中查找是否已存在名为‘TEST’的数据库,
如果存在(IF EXISTS) 则执行DROP操作,呵呵 能理解了吧
按照LZ发的题目来解答的话WHERE NOT EXISTS的意思就是为,“不存在于”子查询返回的记录中
热心网友
时间:2022-04-08 21:50
exists 代表存在量词。带有exists谓词的子查询不返回任何数据,只产生逻辑真值“true”或者逻辑假值“false”。
使用存在量词exists后,若内存查询结果非空,则外层的where子句返回真值,否则返回假值。
热心网友
时间:2022-04-08 23:24
这是哪三个表
学生表:student
sno,sname
0001,张三
0002,李四
0003,xxxx
...
课程表Course
cno,cname
001,语文
002,数学
003,英语
选课表
sno,cno
0001,001
0001,002
0001,003
0002,001
0002,002
....
select Sname
from student
Where not exists
(select * from Course where not exists
(select * from sc where Sno=student.sno AND cno=Course.Cno))
咱们从最后一个select说起.
select * from sc where Sno=student.sno AND cno=Course.Cno
这个sql的意思就是遍历这三个表,
找到所有所有学生选修所有课程记的记录..
(select * from Course where not exists
(select * from sc where Sno=student.sno AND cno=Course.Cno))
那么这条sql,依据上条sql的意思是,就是选中上条sql的相反的条件,就是加入某个学生没有选某个课程,就把这个记录查出来,
假如学生0003没有选课程003,
学生0004没有选001等等.
那么最后
select Sname
from student
Where not exists
(select * from Course where not exists
(select * from sc where Sno=student.sno AND cno=Course.Cno))
这句就排除了所有没有选一门课的学生,只要某个学生没有选某们课,不管是哪一门,就在上面的sql过滤出来了,那么上句sql的相反的,
就是 not exists (不符合上面sql结果的)
就是选全部课程的学生了
我的表达意思不是很清楚,不知道能否看懂呢.....
not exists的含义你可以google出来,上面几位也说的很清楚了
这句三层嵌套语句就是这么个含义....
当然,举一反三,你也可以写出, 被全部学生都选的课程,,,被全部学生都不选的课程,,,呵呵...
热心网友
时间:2022-04-09 01:16
exists 是指:是否存在 的意思