跳转到内容

SQL 基础

关系型数据库的核心:查询、过滤、连接、聚合和修改数据,以及日常使用的模式与事务语句。标准 SQL,适用于 PostgreSQL、MySQL、SQLite 及大多数引擎——除少量方言差异外。

打印或保存此页面以便离线参考。

查询

命令说明
SELECT * FROM users;返回表的所有列和行。
SELECT name, email FROM users;仅返回指定的列。
SELECT DISTINCT country FROM users;返回唯一值,去除重复。
SELECT COUNT(*) FROM users;统计行数。

过滤与排序

命令说明
WHERE age >= 18只保留满足条件的行。
WHERE name LIKE 'A%'模式匹配:以 A 开头的名字。
WHERE id IN (1,2,3)匹配列表中的任意值。
ORDER BY created_at DESC排序,最新的在前。
LIMIT 10 OFFSET 20返回 10 行,跳过前 20 行(分页)。

连接

命令说明
INNER JOIN orders ON orders.user_id = users.id两个表中都匹配的行。
LEFT JOIN orders ON ...左表全部行,加匹配(无匹配为 NULL)。
COUNT(*) ... GROUP BY user_id将行聚合成分组。
HAVING COUNT(*) > 5在聚合后过滤分组。

修改数据

命令说明
INSERT INTO users (name) VALUES ('Ada');添加新行。
UPDATE users SET active = true WHERE id = 1;修改已有行——务必带 WHERE。
DELETE FROM users WHERE id = 1;删除满足条件的行。
UPSERT / ON CONFLICT DO UPDATE插入,或在已存在时更新该行。

模式

命令说明
CREATE TABLE t (id INTEGER PRIMARY KEY, name TEXT);定义新表及其列。
ALTER TABLE t ADD COLUMN email TEXT;为已有表添加列。
CREATE INDEX idx ON t (email);加速某列的查找。
FOREIGN KEY (user_id) REFERENCES users(id)在两个表之间强制关系。

事务

命令说明
BEGIN;开始一个事务。
COMMIT;使事务中的所有更改永久生效。
ROLLBACK;撤销 BEGIN 以来的所有更改。
SAVEPOINT sp1;标记一个可部分回滚到的点。

在 Android 上使用 数据库管理器 将其付诸实践。