zoukankan      html  css  js  c++  java
  • 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
          )
      );
        
    
  • 相关阅读:
    javascript对象继承的实现
    浏览器兼容问题汇总<转>
    DOM笔记
    Ajax日记
    学习态度
    项目1
    导航项目-整体布局
    有关布局
    导航项目开始
    windows 服务 定时程序 跑不出数据
  • 原文地址:https://www.cnblogs.com/CSE-kun/p/13952512.html
Copyright © 2011-2022 走看看