視頻約120秒,關注收藏。
SQL 謂詞
SQL 中的謂詞指的是返回值是邏輯值的函數。我們知道函數的返回值可能是數字、字符串或者日期等等,但謂詞的返回值全部是邏輯值 (TRUE/FALSE/UNKNOW),謂詞是一種特殊的函數。
常見謂詞
LIKE 模糊查詢
<code>列名 LIKE 條件/<code>
其中關於條件,有四種匹配模式:
%: 表示任意0個或多個字符。可匹配任意類型和長度的字符。
_: 表示任意單個字符。匹配單個任意字符,它常用來限制表達式的字符長度語句。
[ ]: 表示括號內所列字符中的一個(類似正則表達式)。指定一個字符、字符串或範圍,要求所匹配對象為它們中的任一個。
[^ ]: 表示不在括號所列之內的單個字符。其取值和[]相同,但它要求所匹配對象為指定字符以外的任一個字符。
BETWEEN 範圍查詢
<code>列名 BETWEEN 左邊界 AND 右邊界/<code>
左邊界、右邊界,可以是表達式或者文字值,要求左邊界小於右邊界的值。
如果列名大於或等於左邊界且小於等於右邊界的值,則BETWEEN 返回TRUE,這樣相當於以下條件:
列名>= 左邊界 AND 列名 <= 右邊界。
IN / NOT IN 查詢
<code>列名 IN (值1, 值2, 值3…) 列名 NOT IN (值1, 值2, 值3…)/<code>
IN 用於值與一組值進行比較,如果值在值集內,則IN返回TRUE,否則返回FALSE或UNKNOW。
NOT IN 否定IN 的結果,如果值與值集內的任何值都不匹配,則NOT IN 返回TRUE,否則返回FALSE。
如果值集中的任何值為NULL,則運算符不返回任何行。
其中,IN 可以用OR 重寫,相當於 (列名 = 值1 OR 列名 = 值2 OR 列名 = 值3…)
NOT IN 可以用AND 重寫,相當於 (列名 != 值1 AND 列名 != 值2 AND 列名 != 值3…)
IS NULL / IS NOT NULL 查詢
<code>列名 IS NULL 列名 IS NOT NULL/<code>
NULL 可以表示數據未知的值,可以簡單理解為表示:不適用 或不存在的值。 NULL值是特殊的,因為任何與NULL 值的比較都不會導致TRUE 或 FALSE。
不能使用比較運算符的等於(=)將值與NULL值進行比較。
要確定列值是否為NULL,可以使用IS NULL,反之使用IS NOT NULL。
EXISTS 查詢
<code>EXISTS 子查詢/<code>
EXISTS 運算符用於指定子查詢以測試行的存在。如果子查詢包含任何行,則EXISTS運算符返回TRUE,否則返回FALSE。EXISTS 運算符在找到行後立即終止查詢處理,因此,可以利用EXISTS 運算符合此功能來提高查詢性能。
常見謂詞使用示例
假設表名為students,包含以下幾個字段:
其中,各字段定義為:sid為學生ID、name為姓名、gender為性別,age為年齡,province為所在省份,city為所在城市,district為所在區 (NULL表示未上報)。
IN 示例
<code>SELECT sid, name, province FROM students WHERE province IN (‘山東省’, ‘湖北省’)/<code>
該語句查詢來自山東及湖北省學生信息。
IS NOT NULL 示例
<code>SELECT name, province, district FROM students WHERE province IN (‘山東省’, ‘湖北省’) AND district IS NOT NULL/<code>
該語句查詢來自山東及湖北學生信息且區信息不為空。
BETWEEN 示例
<code>SELECT sid, name, age FROM students WHERE age BETWEEN 20 AND 23/<code>
該語句查詢年齡在20-23歲的學生信息。
LIKE 示例
<code>SELECT name, gender, age FROM students WHERE name LIKE ‘李%’/<code>
該語句查詢姓李的學生信息。
碎片時間,關注收藏。
往期視頻: