返回知识库

工程与栈 · Web 技术

SQLSQL

SQL 是声明式查询:你描述要哪些列、哪些行,数据库交结果。漏掉 WHERE 就会倒出整张表。

先认出这本点歌本,再说要哪几行

下面就是 songs 表:默认 WHERE 只要爵士。漏掉条件,多出来的行也写在同一本上。

夜校点歌柜 · songsWHERE 爵士 · 1 行

SELECT title, genre FROM songs WHERE genre = 爵士

  • 夜曲 · 爵士

WHERE 爵士 · 1 行筛出的行长在点歌本上。

原因:WHERE genre = 爵士,点歌本只留下夜曲。下一步:点「漏掉 WHERE」,看摇滚会不会也倒出来。

知识点:SQL 声明要什么

本子上的行已经演示了筛选,这里只命名四条。

  • SELECT 说要哪些列,FROM 说从哪张表,WHERE 说留下哪些行。
  • 你描述结果形状,数据库自己决定怎么找,不是你写循环去翻。
  • 用户输入必须参数化,不能把名字拼进字符串。
  • 离开后要盯:漏 WHERE 会倒出整张表;慢查询先看有没有条件。

什么时候用、怎么用

关系表要精确筛选、汇总、连接时用 SQL;只改一个对象时可以走 ORM。

  • 信号:列表、报表、跨表统计、要核对执行计划。
  • 适用:先写清要什么行,再决定 JOIN / GROUP BY。
  • 不适用:把用户输入直接拼进语句——那是注入,不是查询。
  • 最短路径:写下要的列和条件 → 跑一次看行 → 用户值用参数。

正反例:同一本点歌本

目标都是只要爵士,只改 WHERE 在不在。

正例写明 WHERE genre = 爵士

只剩夜曲一行。结果长在本子上。

反例SELECT 全表,不写条件

摇滚和流行也倒出来。失败写在多出来的行上。

快速自测

只要爵士曲目,却写出 SELECT * FROM songs,会发生什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。