所謂謂詞就是返回值是真值的詞
01模糊查詢–like
如果只需要確定一部分內容,使用謂詞like
SELECT*
FROM SampleLike
WHERE strcol LIKE 'ddd%'
%代表任意字符,%在開頭,代表以。。。結尾的字符
%在末尾代表,以。。。。開頭的字符。%在兩邊代表與中間一致的字符
SELECT*
FROM SampleLike
WHERE strcol LIKE 'ddd___'
-也可以起到佔位的作用,但是僅能代表一個字符
小結:%–選擇;-填空
02範圍查詢–between
格式:
參數1 between 參數2 and 參數3
between與其他函數或者謂詞不同的是他使用了三個參數
SELECT product_name,sale_price
FROM PRODUCT
WHERE sale_price BETWEEN 100 AND 1000
三個參數分別爲sale_price 100 1000
注意這裏是包含臨界值100和1000的如果不想包含需要使用<和>
SELECT product_name,sale_price
FROM PRODUCT
WHERE sale_price>100
AND sale_price<1000
03IN謂詞–or的簡單用法
3.1在範圍內快速選擇
格式:in(字段1,字段2,字段3.。。。。)
SELECT product_name,purchase_price
FROM PRODUCT
WHERE purchase_price IN (320,500,5000)
如果選擇不在範圍內的使用not in
SELECT product_name,purchase_price
FROM PRODUCT
WHERE purchase_price NOT IN (320,500,5000)
3.2使用子查詢作爲in謂詞參數
SELECT product_name,sale_price
FROM Product
WHERE product_id IN(SELECT product_id
FROM ShopProduct
WHERE shop_id='000a')
如果想要選擇不在該子查詢中的內容,可以使用not in
使用子查詢作爲in的條件,好處就是如果商品發生改變,只需要改變子查詢內容,如果沒有子查詢就需要沒完沒了的修改select語句。
04謂詞–exists
exist只關心表中是否有滿足條件的記錄,並不關心返回了什麼值。如果有滿足條件的記錄返回true。
exist區別於其他的只有一個參數,就是關聯子查詢。
SELECT product_name,sale_price
FROM PRODUCT AS P
WHERE EXISTS (SELECT*
FROM ShopProduct AS SP
WHERE SP.shop_id = '000a'
AND SP.product_id= P.product_id)
這裏可以認爲在exists的子查詢中使用select*from是種習慣