• SQL-全称量词查询


    全称量词

    全称量词是指在语句中含有短语“全额”、“每一个”、“任意”、“一切”等都是在指定范围内,表示该指定范围内的全体对象或该指定范围整体的含义的词。 含有全称量词的命题叫作全称命题。全称量词的否定是存在量词。

    SQL实现

    SQL中没有全称量词,但可以把带有全称量词的谓词转换为等价的带有存在量词的谓词。

    用EXIST/NOT EXIST实现全称量词的查询
    例子:
    查询选修了全部课程的学生姓名(王珊、萨师煊的《数据库系统概论》第五版书中的P110)

    SELECT Sname
    FROM Student            /*不存在一门课程,该学生没有选修*/
    WHERE NOT EXISTS
      ( SELECT *
        FROM Course           /*对于某一学生,他没有选修的课*/
        WHERE NOT EXISTS
          ( SELECT *
            FROM SC            /*对于某一学生,某门课,该学生是否选修*/
            WHERE Sno = Student.Sno AND Cno = Course.Cno
          )
      );
    

    例2:
    查询至少选修了学生201215122选修的全部课程的学生学号。
    y:表示学校任意一门选修课,
    P:表示学生201215122选修了y,
    q:表示要查询的学生也选修了y

    问题的等价转换语义为:不存在一门课程y,学生201215122选修了,但同时要查询的学生却没有选修。
    于是可以得到如下SQL语句:

    SELECT DISTINCT Sno
    FROM SC SCX            /*学生x*/
    WHERE NOT EXISTS
      ( SELECT *            /*y选但x没选*/
        FROM SC SCY            /*学生y=学生201215122*/
        WHERE SCY.Sno = '20121522' AND NOT EXISTS
          ( SELECT *            /*x选了y选的课*/
            FROM SC SCZ
            WHERE SCZ.Sno = SCX.Sno AND SCZ.Cno = SCY.Cno
          )
      );
        
    
  • 相关阅读:
    Vue插件配置和 后台交互
    Vue项目环境搭建
    数据结构之链表
    数据结构之线性表顺序结构
    leetcode-- Longest Common Prefix
    数据结构之拓扑排序
    数据结构之shell排序
    数据结构之插入排序
    leetcode
    leetcode
  • 原文地址:https://www.cnblogs.com/CSE-kun/p/13952512.html
Copyright © 2020-2023  润新知