谓词

通俗来讲谓词就是函数中的一种,是需要满足特定条件的函数,该条件就是返回值是真值。

对通常的函数来说,返回值有可能是数字、字符串或者日期等,但是谓词的返回值全都是真值(TRUE/FALSE/UNKNOWN)。这也是谓词和函数的最大区别

  1. LIKE谓词——字符串的部分一致查询
  2. BETWEEN谓词——范围查询
  3. IS NULL、IS NOT NULL——判断是否为NULL
  4. IN谓词——OR的简便用法
  5. EXIST谓词

● LIKE

"="只有在字符串完全一致时才为真,与之相反,LIKE 谓词更加模糊一些,当需要进行字符串的部分一致查询时需要使用该谓词。 

% 是代表“0 字符以上的任意字符串”的特殊符号

_表了“任意1 个字符”

● BETWEEN

使用BETWEEN 可以进行范围查询。

BETWEEN 的特点就是结果中会包含最小最大这两个临界值
如果不想让结果中包含临界值,那就必须使用<和>

● IS NULL、IS NOT NULL——判断是否为NULL

为了选取出某些值为NULL 的列的数据,不能使用=,而只能使用特定的谓词IS NULL。

与此相反,想要选取NULL 以外的数据时,需要使用IS NOT NULL。

● IN谓词——OR的简便用法

在使用INNOT IN 时是无法选取出NULL 数据的。NULL 终究还是需要使用IS NULL 和IS NOT NULL 来进行判断。

⭐IN和子查询

  IN 谓词(NOT IN 谓词)具有其他谓词所没有的用法,那就是可以使用子查询作为其参数。“能够将表作为IN 的参数”或者说“能够将视图作为IN 的参数”。

 注意:NOT IN (a,b,c,...)括号中如果出现 NULL ,则所有行的求值为FALSEUNKNOWN,并且不返回任何行

● EXIST谓词

之前我们学过的谓词,基本上都是像“列LIKE 字符串”或者“列BETWEEN 值1 AND 值2”这样需要指定2 个以上的参数,而EXIST 的左侧并没有任何参数。

因为EXIST 是只有1 个参数的谓词。EXIST 只需要在右侧书写1 个参数,该参数通常都会是一个子查询进一步讲,EXIST 通常都会使用关联子查询作为参数

EXIST 只关心记录是否存在,因此返回哪些列都没有关系,只有存在记录时才返回真(TRUE)。

可以把在EXIST 的子查询中书写SELECT * 当作SQL 的一种习惯。

  就像EXIST 可以用来替换IN 一样,NOT IN 也可以用NOT EXIST来替换。NOT EXIST 与EXIST 相反,当“不存在”满足子查询中指定条件的记录时返回真      (TRUE)。

原文地址:https://www.cnblogs.com/philipchan/p/14331345.html