目录
本篇文章内容的前置知识为过滤数据,如果不了解,可点击链接学习
组合Where子句
之前所讲的 WHERE 子句在过滤数据时使用的都是单一的条件。为了进行更强的过滤控制,SQL 允许给出多个 WHERE 子句。这些子句有两种使用方式,即以 AND 子句或 OR 子句的方式使用。
AND 操作符
AND 操作符用于组合多个条件,要求所有条件都成立时才会返回记录。例如:
SELECT vend_id, prod_price, prod_name
FROM products
WHERE vend_id = 100 AND prod_price <= 100;
该查询会返回 vend_id 为 100 且 prod_price 小于或等于 100 的产品。
OR 操作符
OR 操作符用于表示多个条件之间只要有一个成立即可。例如:
SELECT prod_name, vend_id
FROM products
WHERE vend_id = 100 OR vend_id = 101;
该查询会返回 vend_id 为 100 或 101 的所有产品,无论其他条件如何。
AND 和 OR 组合使用
在 SQL 中,AND 和 OR 可以组合使用。当这两者一起使用时,AND 的优先级更高,所以 SQL 在处理时会先处理 AND 操作符,除非使用括号改变优先级。例如:
SELECT prod_name, prod_price, vend_id
FROM products
WHERE vend_id = 100 OR vend_id = 101 AND prod_price >= 100;
该查询返回满足以下任一条件的产品:
vend_id 为 100(无论价格如何)或 vend_id 为 101 且 prod_price 大于等于 100。
SELECT prod_name, prod_price, vend_id
FROM products
WHERE (vend_id = 100 OR vend_id = 101) AND prod_price >= 100;
该查询返回 供应商为 100 或 101 且 价格大于等于 100 的产品。
IN 操作符
IN 操作符是多个 OR 条件的简写,它可以使查询更加简洁。例如:
SELECT prod_name, vend_id
FROM products
WHERE vend_id IN (100, 101);
相当于:
SELECT prod_name, vend_id
FROM products
WHERE vend_id = 100 OR vend_id = 101;
IN 操作符的优先级高于 OR,低于 AND
NOT 操作符
NOT 操作符用于否定条件,返回不符合指定条件的记录。NOT 放在被否定的条件前。
SELECT prod_name, vend_id
FROM products
WHERE NOT vend_id = 100;
该查询会返回所有 vend_id 不等于 100 的产品。
SELECT *
FROM products
WHERE NOT (vend_id IN (100, 101));
该查询会返回 vend_id 不在 100 和 101 中的产品。
LIKE 操作符
LIKE 操作符用于 SQL 查询中进行模式匹配。与直接使用精确值的比较不同,LIKE 允许使用通配符来查找与模式匹配的记录。
百分号(%)通配符
百分号 % 用于匹配任意数量的字符(包括 0 个字符)
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE '无线%';
该查询将返回所有以 "无线" 开头的产品名称。
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE '%电脑';
该查询将返回所有以 "电脑" 结尾的产品名称。
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE '%电%';
该查询将返回产品名称中包含 “电” 字 的产品。
下划线(_)通配符
下划线 _ 用于匹配单个字符。
SELECT prod_price, prod_name
FROM products
WHERE prod_price LIKE '_99';
该查询将返回产品价格中任意一个数字后跟 99 的产品,比如 299,399
尚未完结,可点击链接跳转下一篇文章