5. 查询基础:SELECT 与 WHERE
这是什么:SELECT = 从表里挑出你要的行和列;WHERE 负责挑的条件,配 ORDER BY 排序、LIMIT 限量、LIKE 模糊匹配。
为什么用:查询占了日常 SQL 的八成。好消息是语法和 MySQL 完全通用——你在 MySQL 章学的本事这里原样能用;要留意的只是函数名差异。
如何用:沿用 article 表,把最常用的查询形态全部过一遍。
5.1 基本查询四件套
SELECT title, views FROM article
WHERE views >= 50
ORDER BY views DESC
LIMIT 2;
预期输出:
从零学前端:HTML 入门|130
CSS 才是网页的灵魂|85
语义逐条对照:SELECT 挑列、WHERE 筛行(>= 支持整数比较)、ORDER BY 按阅读量从高到低、LIMIT 只取前 2 行。这些和 MySQL 一字不差。
5.2 LIKE 模糊匹配
SELECT title FROM article WHERE title LIKE '%前端%';
预期输出:
从零学前端:HTML 入门
% 匹配任意多个字符,_ 匹配单个字符——和 MySQL 相同。SQL 默认对大小写不敏感的规则在 SQLite 只对 ASCII 生效,中文无影响。
5.3 常用函数差异对照
这里是 MySQL 转 SQLite 的主要「翻译表」:
| 你想做的事 | MySQL 写法 | SQLite 写法 |
|---|---|---|
| 字符串拼接 | CONCAT(a, b) |
a || b |
| 当前时间 | NOW() |
datetime('now', 'localtime') |
| 空值兜底 | IFNULL(x, 0) |
IFNULL(x, 0)(相同) |
| 字符串长度 | CHAR_LENGTH(s) |
LENGTH(s) |
| 四舍五入 | ROUND(x, 2) |
ROUND(x, 2)(相同) |
SELECT username || ' <' || email || '>' AS contact FROM user LIMIT 2;
预期输出:
frog <frog@example.com>
panda <panda@example.com>
|| 是 SQLite 唯一的字符串拼接符——没有 CONCAT 函数,这是最常踩的差异。
时间函数小试:
SELECT datetime('now', 'localtime');
预期输出(运行时刻的本地时间):
2026-10-25 21:02:45
5.4 动手改
- 查 username 以 f 开头的用户(LIKE)
- 把 5.1 的查询改成「阅读量最低的 2 篇」
- 用
||给每篇文章标题加上书名号《》
5.5 小结
- SELECT / WHERE / ORDER BY / LIMIT / LIKE 与 MySQL 完全通用
- 拼接用
||,当前时间用datetime('now','localtime') - 差异主要在函数名,语法本身零成本迁移
下一章:聚合与分组 🐸