数据库里where怎么用?教你简单筛选数据的那些事儿
- 问答
- 2026-01-21 18:37:08
- 2
综合自常见的SQL入门教程和数据库使用指南)
今天咱们来聊聊数据库里一个超级实用的东西——WHERE子句,你可以把它想象成一个筛子,或者一个过滤器,数据库里一张表动不动就有几万、几十万条数据,比如一个会员表,里面有所有用户的姓名、电话、注册时间、积分等等,你肯定不想每次查数据都把这几万条信息全部看一遍,那太累了,你只想看其中一部分,积分超过1000分的会员有哪些?”或者“上个月刚注册的会员是谁?”,这时候,WHERE这个“筛子”就派上大用场了。
WHERE用起来其实特别简单,它通常是跟在SELECT语句(就是查询数据的语句)后面的,基本的样子长这样:SELECT 你要看的列 FROM 表名 WHERE 筛选条件;,咱们用一个具体的例子来说话。
假设我们有一张叫“员工表”的表格,里面有这些列:员工ID、姓名、部门、工资、入职年份。
找一个具体的人 老板跟你说:“把小明的信息找出来给我。”你怎么用WHERE呢?语句就是这么写:SELECT FROM 员工表 WHERE 姓名 = ‘小明’;,这里的等号“=”就是判断是不是相等,这句话的意思就是:从员工表里,把那些“姓名”这一栏的值正好等于“小明”的所有数据都给我筛出来,那个星号是个偷懒的写法,代表把所有列的信息都显示出来。
找一批符合条件的人 人事经理说:“把销售部的所有员工列个名单。”这时候语句就变成了:SELECT 姓名, 部门 FROM 员工表 WHERE 部门 = ‘销售部’;,这样,筛子就只放过部门是“销售部”的员工,并且只显示他们的姓名和部门两列信息。
光用等号肯定不够,WHERE还能用很多其他的判断符号。
比大小(数值比较) 财务说:“我想看看工资在8000元以上的员工有哪些。”这里就要用大于号“>”了:SELECT 姓名, 工资 FROM 员工表 WHERE 工资 > 8000;,同样,小于号“<”、大于等于“>=”、小于等于“<=”用法都一样,找入职年份在2020年及以前的员工”:WHERE 入职年份 <= 2020。
模糊查找 有时候你记不清全名了,只记得姓“张”,或者名字里有个“伟”字,这时候等号就不好使了,得用LIKE,LIKE需要搭配两个通配符来用:
- 百分号 %:代表任意长度的任意字符(包括零个字符)。
- 下划线 _:代表一个任意字符。
例子来了:“找出所有姓‘张’的员工。”语句是:SELECT FROM 员工表 WHERE 姓名 LIKE ‘张%’;,意思是,姓名的第一个字是“张”,后面不管跟什么字、跟几个字,都算符合条件。 再比如:“找出名字里带‘芳’字的员工。”语句是:SELECT FROM 员工表 WHERE 姓名 LIKE ‘%芳%’;,意思是,不管“芳”字在名字的开头、中间还是结尾,只要包含就行。
范围查找 老板想:“看看工资在5000到10000元之间的员工,这个区间算是公司中坚力量。”有两种写法。 第一种是用BETWEEN … AND …,特别直观:SELECT * FROM 员工表 WHERE 工资 BETWEEN 5000 AND 10000;,注意哦,这个范围是包含两头儿的,也就是工资等于5000和10000的也算在内。 第二种是用AND连接两个条件:WHERE 工资 >= 5000 AND 工资 <= 10000,效果是一样的。
多个条件组合 WHERE最强大的地方之一就是能把多个条件组合起来筛,这就要用到AND和OR了。
- AND的意思是“,要求所有条件都满足。
- OR的意思是“或者”,只要满足其中一个条件就行。
举个例子:“找出销售部里面,工资高于10000的员工。”这有两个条件:第一是部门必须是销售部,第二是工资必须高于10000,必须同时满足,所以用AND:SELECT FROM 员工表 WHERE 部门 = ‘销售部’ AND 工资 > 10000。 再换个例子:“找出所有销售部和市场部的员工。”条件就是:部门是销售部“或者”部门是市场部,满足一个就行,所以用OR:SELECT FROM 员工表 WHERE 部门 = ‘销售部’ OR 部门 = ‘市场部’。
排除/反向选择 有时候你想找的是“不是某种情况”的数据,找出除了财务部以外的所有员工。”这时候就要用NOT,或者用不等号“!=”或“<>”。 写法1:WHERE NOT 部门 = ‘财务部’ 写法2:WHERE 部门 != ‘财务部’ 写法3:WHERE 部门 <> ‘财务部’ 这三种写法的意思完全一样,就是排除掉部门是财务部的那些人。
再提一个常用的:找空值,在数据库里,空值是用NULL表示的,它代表这个字段是空的,没有填任何东西,注意,判断是不是空值,不能用等号=NULL,必须用IS NULL。“找出那些还没有分配部门的员工(部门信息是空的)”:SELECT * FROM 员工表 WHERE 部门 IS NULL,反过来,要找部门不为空的,就是WHERE 部门 IS NOT NULL。
好了,以上就是WHERE子句最常用、最核心的几种用法了,WHERE就是一个条件过滤器,通过等于、不等于、大于小于、模糊匹配、范围筛选、多条件组合这些方式,帮你从海量数据里精准地捞出你想要的那几条,多练习几次,你就会发现它真的非常方便,是操作数据库必不可少的神器。

本文由邝冷亦于2026-01-21发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/84126.html
