存在量词的 SQL 写法,是不少初学数据库时卡壳的地方。这份Oracle 基础课件讲得还挺清楚,尤其是关于EXISTS的嵌套子查询例子,用的是学生、课程、选课三张表,模拟真实业务场景,挺有代入感。讲清楚了怎么通过EXISTS层层筛选数据,也顺带过了一下DMLDDLDCL这些常见指令。

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'
      )
  )

看明白了这句,再写一些权限控制(GRANTREVOKE)或建库删库(CREATE DATABASEDROP DATABASE)的指令也就不难了。建议刚入门 SQL 的你别光看语法,多琢磨下这些子查询的套路,尤其是多表条件联动时,EXISTSIN灵活多了。

哦对了,还有几个延伸阅读链接也可以一起看看:

如果你刚开始接触Oracle或者总是搞混EXISTSIN的区别,这份课件还蛮值得一看。代码不长,逻辑清晰,看完自己多敲几遍就有感觉了。