这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
过滤数据
使用 where 子句
select col from table where col = xxx;
where 子句 放在 from 子句后面。
order by 子句应该放在 from 子句后面。
where 子句的操作符
= < > >= <= <> between
不等于号 有两种 != <>
字符串值必须加上 引号
between 的用法是 between 2 and 10,and 是一个关键字
空值检测
NULL 是一种特殊的值,与0、空格、空字符串都不同
检测 null 必须使用 is null 子句
select col from table where col2 is null
组合 where 子句
为了进行更强的过滤控制,Mysql 允许给出多个 where 子句。这些子句以两种方式使用: AND 子句的方式或OR子句的方式使用。
AND 操作符
只有满足 and 连接的所有 where 子句条件的数据才会返回
Select prod_id,prod_price,prod_name
from products
where vend_id = 1003 AND prod_price <= 10;
OR 操作符
满足任一条件的数据都会返回
Select prod_id,prod_price,prod_name
from products
where vend_id = 1003 OR vend_id = 1002;
计算次序
AND 优先级比 OR 更高,因此最好通过添加 ()来保证运算顺序符合结果
Select vend_id,prod_id,prod_price,prod_name
from products
where (vend_id = 1003 or vend_id = 1002) AND prod_price >=1;
IN 操作符
where prod_id in (1002,1003);
IN 必须后面跟着一个括号,其作用与 between 不同,其含义是 col 的值必须是在括号中的取值!而不是一个范围
IN 的优点
- 计算的次序更容易管理
- 比起 OR 使用更长的合法选项清单更直观
- 速度比 OR 操作一般要快
- 可以包含其他 SELECT 语句,从而更动态地建立语句
NOT 操作符
select vend_id,prod_name,prod_price
from products
where vend_id not between 1001 and 1002
order by vend_id,prod_name;
用于否定跟在它之后的条件,支持使用 NOT 和 IN、BETWEEN 和 EXISTS 一起使用。
LIKE 操作符
这些操作符是针对已知值进行过滤的
用于在 WHERE 子句中搜索列中的指定模式。
其格式如下:
SELECT *column_name(s)*\
FROM *table_name*\
WHERE *column_name* LIKE *pattern*;