所谓谓词就是返回值是真值的词
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是种习惯