当前位置: 首页 > news >正文

篇02_SELECT_FROM_WHERE_基础查询

零基础学SQL 02:SELECT / FROM / WHERE —— 写出你的第一条查询

系列前文:篇01 什么是数据库?什么是 SQL?一文搞懂
系列目录:SQL 从入门到精通 · 总目录(置顶)


先说点真话

我 2016 年刚入行做数据分析那会儿,师傅丢给我第一张几百万行的业务表,说"把某部门工资大于 8000 的人拉出来"。

我当时盯着屏幕,连"从哪张表取、取哪些列、按什么条件"都没捋清,写出来的 SQL 要么报错,要么把全公司的人全查出来了,被师傅笑了一周。

后来我才明白,90% 的 SQL 入门都卡在同一件事上:搞不清 SELECT、FROM、WHERE 这三兄弟谁干啥。今天这篇就把它们一次讲透。


一、这条查询到底在干啥?

一条最基础的 SQL,长这样:

SELECT列名FROM表名WHERE条件;

把它翻译成人话:

  • FROM:去哪张表拿数据(先定位"仓库")
  • SELECT:从这张表里挑哪些列(要"苹果"还是"香蕉")
  • WHERE:只拿满足条件的行(挑"红苹果")

记住顺序:先 FROM 找表,再 WHERE 过滤,最后 SELECT 挑列。虽然书写顺序是 SELECT→FROM→WHERE,但数据库真正执行的顺序是 FROM→WHERE→SELECT,这点后面调错很有用。


二、最小可运行例子

我们统一用系列练习表里的员工表来练手(本系列所有文章都基于这 4 张表,建一次表就能跟着全系列练):

-- 📋 本系列统一练习表(复制即可建表,随时练手)CREATETABLE员工表(员工idINTPRIMARYKEY,姓名VARCHAR(20),部门VARCHAR(20),工资DECIMAL(10,2),邮箱VARCHAR(50),手机VARCHAR(20),入职日期DATE);CREATETABLE订单表(订单idINTPRIMARYKEY,员工idINT,订单金额DECIMAL(10,2),下单时间DATETIME,付款时间DATETIME,状态VARCHAR(20));CREATETABLE用户表(用户idINTPRIMARYKEY,姓名VARCHAR(20),手机VARCHAR(20),邮箱VARCHAR(50),地址VARCHAR(100));CREATETABLE任务表(任务idINTPRIMARYKEY,员工idINT,备注VARCHAR(100),状态VARCHAR(20));-- 先往员工表插几条示例数据INSERTINTO员工表VALUES(1,'张三','技术部',9000,'zhangsan@x.com','13800000001','2019-03-12'),(2,'李四','技术部',7500,'lisi@x.com','13800000002','2020-07-01'),(3,'王五','销售部',8200,'wangwu@x.com','13800000003','2018-11-23'),(4,'赵六','人事部',6000,'zhaoliu@x.com','13800000004','2021-05-09');

例子 1:查所有人的姓名和工资

SELECT姓名,工资FROM员工表;

结果:

姓名工资
张三9000
李四7500
王五8200
赵六6000

例子 2:只查技术部的人

SELECT*FROM员工表WHERE部门='技术部';

*表示"所有列"。结果只剩张三、李四两行。


三、WHERE 里能写哪些条件?

WHERE 后面可以接各种判断,最常用的:

写法含义示例
=等于WHERE 部门 = '技术部'
><>=<=大小比较WHERE 工资 > 8000
<>!=不等于WHERE 部门 <> '人事部'
AND/OR并且 / 或者WHERE 部门='技术部' AND 工资>8000
IN (...)在列表里WHERE 部门 IN ('技术部','销售部')
BETWEEN a AND b区间WHERE 工资 BETWEEN 6000 AND 8000
LIKE模糊匹配WHERE 姓名 LIKE '张%'(姓张的)

组合一下:技术部且工资大于 8000

SELECT姓名,工资FROM员工表WHERE部门='技术部'AND工资>8000;

结果只有张三。


四、当年我踩过的 3 个坑(重点看)

  1. 忘写 WHERE,把全表都查出来了
    早期做报表,本来只想看某个月的数据,结果漏了WHERE 入职日期 >= '2020-01-01',把历史几年全拉出来,数字直接错得离谱。结论:统计/导出前,先确认过滤条件。

  2. 字符串忘了加引号
    WHERE 部门 = 技术部会报错,正确是WHERE 部门 = '技术部'SQL 里字符串必须加单引号,数字不用。

  3. 日期格式乱写
    不同数据库日期写法不一样(Oracle 常用TO_DATE,MySQL 用'2020-01-01')。最稳的办法:先用SELECT * FROM 员工表 WHERE 入职日期 >= '2020-01-01'试,报错就查对应数据库的日期函数。


五、3 个练习(自己跑一遍)

基于上面的员工表

  1. 查工资在 7000 到 9000 之间的人(提示:BETWEEN)。
  2. 查不是人事部的人(提示:<>,或NOT 部门 = '人事部')。
  3. 查姓"王"的人(提示:LIKE '王%')。

参考答案(先自己写,再对照):

-- 1SELECT姓名,工资FROM员工表WHERE工资BETWEEN7000AND9000;-- 2SELECT姓名,部门FROM员工表WHERE部门<>'人事部';-- 3SELECT姓名FROM员工表WHERE姓名LIKE'王%';

六、小结

  • FROM找表 →WHERE过滤 →SELECT挑列
  • 字符串加单引号,数字不加
  • 统计/导出前一定先确认 WHERE 条件

下一篇我们讲排序与去重:ORDER BY / DISTINCT / LIMIT,教你把查出来的结果排个序、去个重。


互动时间:你第一次写 SQL 时,最卡壳的是哪一步?是装环境、还是写不出 WHERE 条件、还是被报错劝退?评论区聊聊,我挑典型的下篇解答。

http://www.jsqmd.com/news/1351946/

相关文章:

  • 进程互斥锁原理与实战:解决数据竞争的关键技术
  • 终极指南:3步学会用ncmdump免费解锁网易云音乐NCM格式
  • 内江本地防水补漏如何挑选?屋顶/卫生间/外墙/地下室/阳台漏水检修实测(2026年8月新) - 北京金修达天津维修部
  • vSphere 9.1 ZTP零接触部署实操:华硕NUC15 Pro完整落地教程(混合CPU PSOD修复)
  • Kali Linux国内镜像源配置全攻略:解决apt update慢与报错问题
  • Qt QLabel控件深度解析:从基础文本显示到高级动态界面开发
  • iperf3 Windows终极指南:5步快速完成专业网络性能测试
  • 01 机器学习到底是什么?从基本概念到第一个预测模型
  • 3个核心问题解决:NVIDIA Profile Inspector如何彻底改变你的显卡使用体验
  • 如何用5分钟搭建你的围棋AI教练:LizzieYzy让围棋复盘变得如此简单
  • 文献太多看不完怎么办?先筛选再精读的办法
  • 拯救者笔记本终极性能控制指南:Lenovo Legion Toolkit完全解析
  • Git Worktree:多工作树并行开发,告别分支切换困扰
  • AI短剧制作全流程实战:基于WorkBuddy与WorkRally的智能制片厂搭建指南
  • SpringBoot+Vue3构建在线政务服务中心技术解析
  • 德国自驾必备丨我国驾照如何进行德国宣誓翻译?哪些坑要避开? - 点办通
  • 大模型推理性能优化:动态内存池与PagedAttention核心技术解析
  • 终极指南:如何快速配置PotPlayer百度字幕翻译插件实现视频字幕实时翻译
  • CX3 USB 3.0 UVC摄像头固件开发与调试全攻略
  • 光谱分析中的UVE特征选择:原理、MATLAB实现与工程实践
  • 如何用ttkbootstrap在30分钟内创建专业级Tkinter界面:终极主题系统指南
  • 十六进制字符串?别猜了,编码类型一眼看穿
  • ECS、EKS 和 EC2 怎么选?从容器部署方式到运维成本的对比指南
  • 网站建设应注重实用性:拒绝花哨陷阱,回归商业本质才是硬道理
  • IT从业者干眼症防护:硬件优化与医学养护指南
  • 2026耐驰差示扫描量热仪代理客户口碑力荐,高认可度商家测评** - 工业品网
  • 终极Windows驱动清理指南:如何用DriverStoreExplorer释放数GB空间
  • Elsevier Tracker:3分钟搞定论文投稿状态自动追踪的终极指南
  • Java方法重载:核心概念、实现原理与实战应用
  • OneMore:如何让OneNote从普通笔记工具升级为专业知识管理系统