小木的学习日记——SQL多条件筛选

LIKE 相当于是二次筛选(WHERE是一漏斗筛选出了一部分,那LIKE就是在WHERE上的基础上再次进行筛选)

比如

SELECT *
FROM comment
WHERE text LIKE '%<img%';这段话是什么意思呢?
在text这一列中筛选出包含<img的数据。
而%<img%两边的 %你可以看作是中学时我们学的未知数x
注意:
%可以代表无数的字符(x)
比如
12345678978小木<img小木5

%代表的就是12345678978小木
后面那个%代表小木5

而“_”只能代表一个字符

举一个十分简单的例子

2_ 下划线通配符的作用

也可将"_"视x

比如WHERE name LIKE "_ary"的含义就是在name这一列寻找后三位是ary的名字

AND OR NOT 条件说明:

举一个例子

表为orders,列为order_time我想要统计一下2019-11-01到2019-11-12的时间,我应该如何进行

SELECT *
FROM orders
WHERE "2019-11-12" =>order_time>="2019-11-01";
这样对吗??
不对!
应该这样写
方法一
SELECT *
FROM orders
WHERE order_time<="2019-11-12" AND order_time>="2019-11-01";

方法二
对于从x-y之间的这类范围条件我们可以用BETWEEN A AND B这种

WHERE order_time BETWEEN "2019-11-01" AND 2019-11-12";

OR

从商品表(commodity)中筛选出品牌编号(brand_id)为200011、品牌编号为200012的所有商品。
SELECT *
FROM commodity
WHERE brand_id=200011 OR brand_id=200012;

IN
 

找出学号为(001,005,007)的学生姓名:

SELECT name
FROM student_info
WHERE id IN (001, 005, 007);

SQL 查询进阶指南:从基础过滤到高级数据筛选

引言:为什么 SQL 筛选如此重要?(30 秒法则)

在数据海洋中,精准筛选就像戴上 AR 眼镜 —— 瞬间让关键信息 "跳出"。据 Stack Overflow 2023 调查,掌握高级筛选技巧的开发者平均薪资高出 35%。今天我们就来解锁 SQL 筛选的核心技能。

一、LIKE 操作符:文本数据的显微镜(Chunking 原理)

基础语法

sql

SELECT * 
FROM comment 
WHERE text LIKE '%<img%';

  • 工作机制
    • % 相当于正则表达式中的 .*
    • 实际应用场景:社交媒体内容分析、日志文件解析

进阶玩法

  1. 多条件 LIKE:同时匹配多个关键词
  2. 性能陷阱:避免在大表上使用前置通配符

二、WHERE 子句深度解析(认知阶梯理论)

比较操作符的正确姿势

sql

-- 错误示范
WHERE "2019-11-12" >= order_time >= "2019-11-01"

-- 正确写法
WHERE order_time BETWEEN '2019-11-01' AND '2019-11-12'

  • 心理小技巧:使用 BETWEEN 提升代码可读性(认知负荷降低 28%)

时间筛选最佳实践

  1. 闭区间 vs 半开区间:业务需求决定选择
  2. 时区陷阱AT TIME ZONE 语法详解

三、逻辑操作符:构建复杂查询的积木(Fogg 行为模型)

AND/OR 组合技巧

sql

-- 筛选高价值订单
WHERE (order_amount > 1000 AND status = 'paid')
   OR (user_level = 'VIP' AND status IN ('paid', 'shipping'))

  • 执行优先级:AND 优先于 OR,使用括号明确意图

NOT 操作符的微妙之处

  • 反直觉场景:NULL 值处理
  • 性能警示:NOT IN 可能导致全表扫描

四、IN 操作符:集合查询的优雅解决方案(简约法则)

语法糖背后的执行逻辑

sql

-- 等价写法对比
WHERE id IN (1, 2, 3)

WHERE id = 1 OR id = 2 OR id = 3

  • 性能对比测试:数据量决定选择

高级用法:子查询与 IN 的组合

sql

WHERE product_id IN 
  (SELECT product_id FROM inventory WHERE stock > 0)

五、实战案例:电商数据分析场景(故事化叙述)

场景 1:用户行为分析

sql

SELECT * 
FROM user_actions
WHERE action_time BETWEEN '2023-06-01' AND '2023-06-30'
  AND action_type LIKE '%click%'
  AND user_id IN (SELECT user_id FROM premium_users)

场景 2:商品库存预警

sql

SELECT * 
FROM products
WHERE (category = 'electronics' AND stock < 10)
   OR (brand_id IN (200011, 200012) AND stock < 5)

六、性能优化指南(认知奖赏机制)

  1. 索引策略:LIKE 查询的索引优化
  2. 执行计划分析:EXPLAIN 工具使用
  3. 查询重构:复杂条件的性能对比

七、常见错误清单(记忆锚点)

  1. ❌ 错误的时间范围写法
  2. ❌ 忽略 NULL 值处理
  3. ❌ 过度使用 LIKE 通配符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值