SQL 中 exists 是怎么回事啊 怎么用啊 老师没讲懂 呵呵 高手都来帮忙啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 中 exists 是怎么回事啊 怎么用啊 老师没讲懂 呵呵 高手都来帮忙啊相关的知识,希望对你有一定的参考价值。

学数据库的时候你们老师一定那 选课那3个表做例子吧 题目查询选修了全部课程的学生的姓名
select Sname
from student
Where not exists
(select * from Course where not exists
(select * from sc where Sno=student.sno AND cno=Course.Cno))

exists 是指:是否存在 的意思

例如你要新建一个新的数据库 但是不知道以前SQLSERVER里是否已经存在该数据库了 则可以使用如下语句

IF EXISTS (SELECT * FROM SYSDATABASES WHERE NAME = 'TEST')
DROP DATABASE 'TEST'

该句意思为:在数据库总记录中查找是否已存在名为‘TEST’的数据库,

如果存在(IF EXISTS) 则执行DROP操作,呵呵 能理解了吧

按照LZ发的题目来解答的话WHERE NOT EXISTS的意思就是为,“不存在于”子查询返回的记录中
参考技术A exists 代表存在量词。带有exists谓词的子查询不返回任何数据,只产生逻辑真值“true”或者逻辑假值“false”。
使用存在量词exists后,若内存查询结果非空,则外层的where子句返回真值,否则返回假值。
参考技术B 这是哪三个表
学生表: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出来,上面几位也说的很清楚了
这句三层嵌套语句就是这么个含义....

当然,举一反三,你也可以写出, 被全部学生都选的课程,,,被全部学生都不选的课程,,,呵呵...本回答被提问者采纳
参考技术C exists 是指:是否存在 的意思

SQL语句中的declare 是啥意思,具体怎么用啊

是声明的意思,具体用法是declare @声明的变量名称 变量类型
如:declare @intDeclare int
参考技术A 是声明的意思,就是声明变量的,例如:
declare v_number number(10);
v_char varchar2(20);
这个一般是用在函数和存储过程中的,sql中不会用到追问

恩恩,就是存储过程的

以上是关于SQL 中 exists 是怎么回事啊 怎么用啊 老师没讲懂 呵呵 高手都来帮忙啊的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句中的declare 是啥意思,具体怎么用啊

python map函数怎么用啊!

sql语句中的full join具体是怎么回事啊?

用phpmyadmin中导入sql格式的数据库,但是却出现#1050 - Table 'ljcms_admin' already exists,怎么回事?

老菜鸟的请进来啊 运行里的命令怎么用啊

switch语句怎么用啊 具体啊!