通俗来讲谓词就是函数中的一种,是需要满足特定条件的函数,该条件就是返回值是真值。
对通常的函数来说,返回值有可能是数字、字符串或者日期等,但是谓词的返回值全都是真值(TRUE/FALSE/UNKNOWN)。这也是谓词和函数的最大区别。
- LIKE谓词——字符串的部分一致查询
- BETWEEN谓词——范围查询
- IS NULL、IS NOT NULL——判断是否为NULL
- IN谓词——OR的简便用法
- EXIST谓词
● LIKE
"="只有在字符串完全一致时才为真,与之相反,LIKE 谓词更加模糊一些,当需要进行字符串的部分一致查询时需要使用该谓词。
% 是代表“0 字符以上的任意字符串”的特殊符号
_表了“任意1 个字符”
● BETWEEN
使用BETWEEN 可以进行范围查询。
BETWEEN 的特点就是结果中会包含最小和最大这两个临界值。
如果不想让结果中包含临界值,那就必须使用<和>。
● IS NULL、IS NOT NULL——判断是否为NULL
为了选取出某些值为NULL 的列的数据,不能使用=,而只能使用特定的谓词IS NULL。
与此相反,想要选取NULL 以外的数据时,需要使用IS NOT NULL。
● IN谓词——OR的简便用法
在使用IN 和NOT IN 时是无法选取出NULL 数据的。NULL 终究还是需要使用IS NULL 和IS NOT NULL 来进行判断。
⭐IN和子查询
IN 谓词(NOT IN 谓词)具有其他谓词所没有的用法,那就是可以使用子查询作为其参数。“能够将表作为IN 的参数”或者说“能够将视图作为IN 的参数”。
注意:NOT IN (a,b,c,...)括号中如果出现 NULL ,则所有行的求值为FALSE
或UNKNOWN
,并且不返回任何行。
● 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)。