查询
| 命令 | 说明 |
|---|
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; | 标记一个可部分回滚到的点。 |