[ PROMPT_NODE_24238 ]
R2 SQL API 参考
[ SKILL_DOCUMENTATION ]
# R2 SQL API 参考
R2 SQL 查询的 SQL 语法、函数、运算符和数据类型。
## SQL 语法
sql
SELECT column_list | aggregation_function
FROM [namespace.]table_name
WHERE conditions
[GROUP BY column_list]
[HAVING conditions]
[ORDER BY column | aggregation_function [DESC | ASC]]
[LIMIT number]
## 模式发现
sql
SHOW DATABASES; -- 列出命名空间
SHOW NAMESPACES; -- SHOW DATABASES 的别名
SHOW SCHEMAS; -- SHOW DATABASES 的别名
SHOW TABLES IN namespace; -- 列出命名空间中的表
DESCRIBE namespace.table; -- 显示表模式、分区键
## SELECT 子句
sql
-- 所有列
SELECT * FROM logs.http_requests;
-- 特定列
SELECT user_id, timestamp, status FROM logs.http_requests;
**限制:** 不支持列别名、表达式或嵌套列访问
## WHERE 子句
### 运算符
| 运算符 | 示例 |
|----------|---------|
| `=`, `!=`, `<`, ``, `>=` | `status = 200` |
| `LIKE` | `user_agent LIKE '%Chrome%'` |
| `BETWEEN` | `timestamp BETWEEN '2025-01-01T00:00:00Z' AND '2025-01-31T23:59:59Z'` |
| `IS NULL`, `IS NOT NULL` | `email IS NOT NULL` |
| `AND`, `OR` | `status = 200 AND method = 'GET'` |
使用括号控制优先级:`(status = 404 OR status = 500) AND method = 'POST'`
## 聚合函数
| 函数 | 描述 |
|----------|-------------|
| `COUNT(*)` | 计算所有行 |
| `COUNT(column)` | 计算非空值 |
| `COUNT(DISTINCT column)` | 计算唯一值 |
| `SUM(column)`, `AVG(column)` | 数值聚合 |
| `MIN(column)`, `MAX(column)` | 最小值/最大值 |
sql
-- 使用 GROUP BY 进行多重聚合
SELECT region, COUNT(*), SUM(amount), AVG(amount)
FROM sales.transactions
WHERE sale_date >= '2024-01-01'
GROUP BY region;
## HAVING 子句
过滤聚合结果(在 GROUP BY 之后):
sql
SELECT category, SUM(amount)
FROM sales.transactions
GROUP BY category
HAVING SUM(amount) > 10000;
## ORDER BY 子句
排序结果依据:
- **分区键列** - 始终支持
- **聚合函数** - 通过 shuffle 策略支持
sql
-- 按分区键排序
SELECT * FROM logs.requests ORDER BY timestamp DESC LIMIT 100;
-- 按聚合排序(重复函数,不支持别名)
SELECT region, SUM(amount)
FROM sales.transactions
GROUP BY region
ORDER BY SUM(amount) DESC;
**限制:** 无法按非分区列排序。请参阅 [gotchas.md](gotchas.md#order-by-limitations)
## LIMIT 子句
``