参考文献

SQL谓词

  • 谓词只是一个计算结果为TRUEFALSEUNKNOWN的表达式.谓词通常用于WHEREHAVING子句的搜索条件、FROM子句的连接条件以及需要布尔值的查询的任何其他部分.
  • 谓词有多种类型,其中包括:
    • Comparison(比较谓词)
    • LIKE
    • BETWEEN
    • IN
    • EXISTS
    • IS NULL (/INTEGER/DECIMAL/FLOAT...)

Comparison Predicates 比较谓词

  • = Equal to
  • > Greater than
  • < Less than
  • >= Greater than or equal to
  • <= Less than or equal to
  • <> Not equal to

EXISTS

  • EXISTS的子查询里SELECT子句的列表可以有三种写法

    • 通配符: SELECT *
    • 常量: SELECT '任意内容'
    • 列名: SELECT col_name
  • 谓词逻辑中,根据输入值的阶数对谓词进行分类.=或者BETWEEEN等输入值为一行的谓词叫作“一阶谓词”, 而像 EXISTS这样输入值为行的集合的谓词叫作“二阶谓词”.阶(oder)是用来区分集合或谓词的阶数的概念.

  • EXISTS因接受的参数是集合这样的一阶实体而被称为二阶谓词.

  • 谓词逻辑中有量词(限量词、数量词)这类特殊的谓词.我们可以用它们来表达一些这样的命题:“所有的xx都满足条件PP”或者“存在(至少一个)满足条件PPxx”.前者称为“全称量词”,后者称为“存在量词”, 分别记作 \forall\exists .

  • 这两个符号看起来很奇怪.其实,全称量词的符号其实是将字母A上下颠倒而形成的,存在量词则是将字母E 左右颠倒而形成的. “对于所有的 x,……” 的英语是 “for All x,…”, 而 “存在满足……的x”的英语是“there Exists x that…”,这就是这两个符号的由来.

    xPx=¬x¬P\forall xPx = \neg \exists x\neg P

    • 所有的xx都满足条件PP = 不存在不满足条件PPxx

    xPx=¬x¬Px\exists xPx = \neg \forall x \neg Px

    • 存在x满足条件P = 并非所有x都不满足条件P