12.SQL之谓词

一、模糊查询–LIKE

当需要进行字符串部分一致 查询时,需要使用该谓词,部分一致大体可以分为前方一致、中间一致和后方一致三种类型。

预备知识:

  • %是代表“0个字符及其以上的任意字符串”的特殊符号

  • _(下划线)代表了“任意1个字符”,可以几个下划线一起用

# 首先准备一系列测试用的字符串,模糊查询的字符串为'ddd'
strcol:abcddd、dddabc、abdddc、abcdd、ddabc、abddc
  • 前方一致:查找开头为ddd的字符串
SELECT * FROM SampleLike WHERE strcol LIKE 'ddd%';

结果:dddabc

  • 中间一致:查找字符串中带有ddd的字符串
SELECT * FROM SampleLike WHERE strcol LIKE '%ddd%';

结果:abcddd、dddabc、abdddc

  • 后方一致:查找结尾为ddd的字符串
SELECT * FROM SampleLike WHERE strcol LIKE '%ddd';

结果:abcddd

  • 查询固定字符个数
# 选取出strcol列的值为“abc+任意2个字符”需要使用_
SELECT * FROM SampleLike WHERE strcol LIKE 'abc__';

结果:abcdd

二、范围查询–BETWEEN

使用BETWEEN可以进行范围查询

SELECT product_name, sale_price FROM Product
WHERE sale_price BETWEEN 100 AND 1000;

查询结果:
在这里插入图片描述
BETWEEN 的特点就是结果中会包含 100 和 1000 这两个临界值。

三、IS NULL、IS NOT NULL——判断是否为NULL
SELECT product_name, sale_price FROM Product
WHERE purchase_price IS NULL;
SELECT product_name, sale_price FROM Product
WHERE purchase_price IS NOT NULL;
四、OR的简便用法——IN

如何选取出进货单价(purchase_price)为320元、500元、5000元的商品

# 第一种做法是使用or
SELECT product_name,purchase_price FROM Product 
	WHERE purchase_price = 320 OR purchase_price = 500 
		OR purchase_price = 5000;
# 使用IN替代or 简化代码
SELECT product_name,purchase_price FROM Product 
	WHERE purchase_price IN (320, 500, 5000);

反之,希望选取出“进货单价不是320元、500元、5000元”的商品时,可以使用否定形式NOT IN来实现。

SELECT product_name,purchase_price FROM Product 
	WHERE purchase_price NOT IN (320, 500, 5000);

注意: IN和NOT IN时是无法选取出NULL数据的。

五、使用子查询作为IN谓词的参数

IN谓词(NOTIN谓词)具有其他谓词所没有的用法,那就是可以使用其他表(子查询,视图等)作为其参数。

SELECT product_name, sale_price FROM Product
	WHERE product_id IN (SELECT product_id FROM ShopProduct
                     WHERE shop_id = '000C');

注: 此时子查询或视图只能有单列

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值