SQL语言是操作关系型数据库的核心工具,而WHERE条件则是查询过程中筛选目标数据的关键语法。很多刚入门的学习者常常困惑,SQL语言WHERE条件怎样过滤数据,其实只要掌握基础规则和常见用法,就能轻松实现精准的数据筛选。

WHERE条件的基础语法
WHERE条件通常跟在SELECT语句的FROM子句之后,用来指定筛选规则,只有符合规则的数据行才会被返回。基础语法结构如下:
-- 基础查询语法,筛选符合条件的数据 SELECT 列名1, 列名2 FROM 表名 WHERE 筛选条件;
比如我们有一张名为user_info的用户表,要查询所有年龄大于18岁的用户,就可以这样写:
SELECT user_id, user_name, age FROM user_info WHERE age > 18;
常见的WHERE条件筛选类型
1. 比较运算筛选
最常用的筛选方式是通过比较运算符判断字段值是否符合要求,常见的比较运算符包括等于=、不等于!=或<>、大于>、小于<、大于等于>=、小于等于<=。
例如查询年龄不等于20岁的用户:
SELECT user_name, age FROM user_info WHERE age != 20;
2. 范围筛选
如果需要筛选某个区间内的数据,可以使用BETWEEN...AND...语法,它包含区间的两个端点值。比如查询年龄在18到30岁之间的用户:
SELECT user_name, age FROM user_info WHERE age BETWEEN 18 AND 30;
也可以用IN语法筛选字段值属于某个集合的数据,比如查询城市是北京、上海、广州的用户:
SELECT user_name, city
FROM user_info
WHERE city IN ('北京', '上海', '广州');3. 模糊匹配筛选
当我们需要匹配部分字符时,可以使用LIKE语法配合通配符,%代表任意长度的任意字符,_代表单个任意字符。比如查询用户名以“张”开头的用户:
SELECT user_name FROM user_info WHERE user_name LIKE '张%';
4. 空值筛选
如果要筛选字段值为空的数据,需要用IS NULL,不能用等于号判断空值。比如查询没有填写邮箱的用户:
SELECT user_name, email FROM user_info WHERE email IS NULL;
多条件组合筛选
实际查询中往往需要同时满足多个条件,这时候可以用逻辑运算符组合多个筛选规则:
AND:多个条件同时成立时,数据才会被返回OR:多个条件任意一个成立时,数据就会被返回NOT:对条件结果取反,符合反向规则的数据被返回
比如查询年龄大于18岁且城市是北京的用户:
SELECT user_name, age, city FROM user_info WHERE age > 18 AND city = '北京';
如果需要改变逻辑运算的优先级,可以用括号包裹条件,比如查询年龄大于18岁,且城市是北京或者上海的用户:
SELECT user_name, age, city FROM user_info WHERE age > 18 AND (city = '北京' OR city = '上海');
WHERE条件使用注意事项
首先,WHERE条件中不能直接使用聚合函数,比如WHERE COUNT(id) > 10是错误的,聚合函数的筛选需要放在HAVING子句中。其次,不同数据库的字符串比较规则可能有差异,部分数据库默认不区分大小写,部分区分,使用时需要根据实际数据库类型调整。另外,使用LIKE匹配时,如果通配符放在开头,可能会导致索引失效,大数据量查询时要注意性能问题。
掌握WHERE条件的这些用法,就能应对大部分SQL查询中的数据过滤需求,后续结合ORDER BY、GROUP BY等语法,还能实现更复杂的查询逻辑。