存在量词的 SQL 写法,是不少初学数据库时卡壳的地方。这份Oracle 基础课件
讲得还挺清楚,尤其是关于EXISTS
的嵌套子查询例子,用的是学生、课程、选课三张表,模拟真实业务场景,挺有代入感。讲清楚了怎么通过EXISTS
层层筛选数据,也顺带过了一下DML
、DDL
、DCL
这些常见指令。
用EXISTS
查女性学生是否选了老师姓LIU
的课程,语句写得不复杂,但逻辑挺有意思。像这样:
SELECT SNAME FROM S
WHERE SEX='F'
AND EXISTS (
SELECT * FROM SC
WHERE SC.SNO = S.SNO
AND EXISTS (
SELECT * FROM C
WHERE C.CNO = SC.CNO AND TNAME='LIU'
)
)
看明白了这句,再写一些权限控制(GRANT
、REVOKE
)或建库删库(CREATE DATABASE
、DROP DATABASE
)的指令也就不难了。建议刚入门 SQL 的你别光看语法,多琢磨下这些子查询的套路,尤其是多表条件联动时,EXISTS比IN
灵活多了。
哦对了,还有几个延伸阅读链接也可以一起看看:
如果你刚开始接触Oracle
或者总是搞混EXISTS
和IN
的区别,这份课件还蛮值得一看。代码不长,逻辑清晰,看完自己多敲几遍就有感觉了。