MySQL 基础:SELECT、WHERE、JOIN 的第一次使用

不用怕数据库,跟着这三个单词,你就能查到你想要的一切。

欢迎来到 《大一突围》 专栏。很多大一同学第一次接触 MySQL,看到"数据库"三个字就觉得很难。其实,你日常生活中每天都在"查数据"------查成绩、翻通讯录、筛选淘宝商品......

SQL(结构化查询语言)就是跟数据库说话的语言。而 SELECT、WHERE、JOIN 这三个,占了日常查询的 90% 以上。今天我们用学生-课程-成绩这个最经典的例子,带你写出人生第一条有意义的 SQL。

一、准备工作:两张小表(所有例子都能跑)

为了让你立刻动手,我建了两个极其简单的表:

📄 表1:students(学生表)

📄 表2:scores(成绩表)

它们的关联关系如下图:

二、SELECT:最简单的查询(我要看什么)

sql 复制代码
SELECT 列名1, 列名2 FROM 表名;

这就像从一个大箱子里捡出你需要的物品。

例子1:查询所有学生的姓名和专业

sql 复制代码
SELECT name, major FROM students;

结果:

例子2 :查询所有列(用 * 通配符)

sql 复制代码
SELECT * FROM students;

这会返回整张表的全部内容。

Mermaid 流程图 -- SELECT 执行逻辑 :

三、WHERE:给查询加条件(我要什么)

很多时候你不想要全部数据,只想筛选出符合某些条件的行。这时用 WHERE。

sql 复制代码
SELECT 列名 FROM 表名 WHERE 条件;

例子3:只查询计算机专业的学生

sql 复制代码
SELECT name, major FROM students WHERE major = '计算机';

结果:

例子4:成绩大于等于 80 分的记录

sql 复制代码
SELECT * FROM scores WHERE score >= 80;

结果:

常用 WHERE 条件符号 :=、>、<、>=、<=、<>(不等于)、LIKE(模糊匹配)、AND / OR。

Mermaid 对比图 -- 不带 WHERE vs 带 WHERE:

四、JOIN:把多张表连在一起(我要关联信息)

这是很多新手的第一个"拦路虎"。但请你记住:JOIN 就是根据某个共同的字段,把两张表的行拼在一起。

最常见的 JOIN 是 INNER JOIN(内连接),它只返回两个表中都能匹配上的行。

sql 复制代码
SELECT 列名
FROM 表A
INNER JOIN 表B ON 表A.关联字段 = 表B.关联字段;

例子5:查询每个学生对应的成绩(显示学生姓名、课程、分数)

学生名字在 students 表,成绩在 scores 表,通过 student_id 连接。

sql 复制代码
SELECT students.name, scores.course, scores.score
FROM students
INNER JOIN scores ON students.student_id = scores.student_id;

结果:

Mermaid 图解 -- JOIN 就像拼积木:

实际 INNER JOIN 只会保留那些在 scores 表里有成绩的学生。如果某个学生没有成绩(不存在的 student_id),就不会出现在结果中。

五、综合实战:一条 SQL 同时使用 SELECT、WHERE 和 JOIN

需求:查询计算机专业学生的所有课程成绩,只显示分数 ≥ 80 的记录。

拆解:

  • 需要 JOIN 连接 students 和 scores

  • 需要 WHERE 筛选 major = '计算机' 且 score >= 80

sql 复制代码
SELECT students.name, scores.course, scores.score
FROM students
INNER JOIN scores ON students.student_id = scores.student_id
WHERE students.major = '计算机' AND scores.score >= 80;

结果:

六、给大一新生的三个建议

  1. 先在本机安装 MySQL + Workbench ,或者使用免费的在线练习平台(如 SQLZoo、LeetCode 的数据库题库),手打所有例子。

  2. 把 JOIN 想象成"VLOOKUP":就像 Excel 里根据 ID 去另一张表找信息。

  3. 不要背语法,背逻辑 :SELECT(选哪几列)→ FROM(从哪张表)→ JOIN(连哪张表)→ WHERE(筛选哪些行)。

❓ 问题:如果你是第一次写 SQL,试着回答:查询"所有选了'数据库'课程且成绩大于 80 分的学生姓名",SQL 应该怎么写?欢迎在评论区写下你的答案,我会选出两位幸运同学送《SQL 必知必会》电子版学习资料。

📌 觉得有用请点 👍 + 关注 ,本专栏 《大一突围》 下期预告:

👉 《Git 从零到 PR:大一新生第一个开源贡献》

收藏 + 转发给需要学数据库的同学,一起入门 SQL 不踩坑。

相关推荐
Decay__23 分钟前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
小徐不徐说5 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
论文复现现场5 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Decay__6 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
心梦缘-雪雁7 小时前
SQL Server 查询数据存在哪个表里
数据库
lusklusklusk8 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW9 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
SelectDB9 小时前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
曼岛_9 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学
瀚高PG实验室10 小时前
HGDB V9.0.5 .pgpass 免密登录提示 IsEncryptNon-base64 encoding 警告处理
数据库·postgresql·瀚高数据库