谓词
你想成为幸福的人吗?但愿你首先学会吃得起苦。——屠格涅夫
学习重点
谓词就是返回值为真值的函数
掌握 LIKE 的三种使用方法(前方一致,中间一致,后方一致)
需要注意的 BETWEEN 包含三个参数
想要取得 NULL 数据的时候必须使用 IS NULL
可以将子查询作为 IN 和 EXISTS 的参数
谓词
谓词就是满足特定条件的函数,该条件就是返回值是真值.对通常的函数来说,返回值有可能是数字,字符串,或者日期等等 但是谓词的返回值全都是真值(TRUE/FALSE/UNKNOWN) 这也是谓词和函数的最大区别
LIKE
BETWEEN
IS NULL, IS NOT NULL
IN
EXISTS
LIKE 谓词—字符串的部分一致查询
LIKE 查询也叫模糊查询
字符串中部分一致 它分为前方一致,中间一致,后方一致三种类型
前方一致查询
- 比如 dddaac 找到符合 ddd 的类型
SELECT * FROM sample WHERE strcol LIKE 'ddd%';
%代表 0 字符以上的任意字符串
中间一致查询
- 比如 aaadddccc 找到中间符合 ddd 的类型
SELECT * FROM sample WHERE strcol LIKE '%ddd%';
后方一致查询
- 比如 aaaddd 选取出字符串已’ddd’结尾的
SELECT * FROM sample WHERE strcol LIKE '%ddd'
下划线 任意 1 个字符
我们还可以用_(下划线)来代替%,与%不同的是它代表了任意 1 个字符
选取出 abc+任意 2 个字符
SELECT * FROM sample WHERE strcol LIKE 'abc__'
BETWEEN 谓词 — 范围查询
使用 BETWEEN 可以进行范围查询
语法
SELECT product_name,sale_price FROM Product WHERE sale_price BETWEEN 100 AND 1000;
这样它查询出的结果就是 100 到 1000 的结果 其中包括 100 和 1000
如果不想要临界值可以用<和>
SELECT product_name,sale_price FROM Product WHERE sale_price>100 AND sale_price < 1000;
IS NULL, IS NOT NULL —判断是否为 NULL
- 为了选出某些值为 NULL 的列的数据,不能使用 = 而只能使用特定的谓词 IS NULL
SELECT product_name,purchase_price FROM product WHERE purchase_price IS NULL
这样就找出来了价格为 null 的
相反的
SELECT product_name,purchase_price FROM product WHERE purchase_price IS NOT NULL
IN 谓词 —OR 的简便用法
- OR 的用法
SELECT product_name, purchase_price
FROM Product
WHERE purchase_price = 320
OR purchase_price = 500
OR purchase_price = 5000;
- IN 的用法,在值里面选
SELECT product_name, purchase_price
FROM Product
WHERE purchase_price IN (320, 500, 5000);
特别注意的就是 IN 和 NOT IN 是无法选出 NULL 的数据
- 子查询里面使用 IN
SELECT product_name, sale_price
FROM Product
WHERE product_id IN (SELECT product_id
FROM ShopProduct
WHERE shop_id = '000C');