查询基础
使用 HarborDB 强大的查询编辑器编写、执行和管理 SQL 查询的基础知识。
欢迎来到 HarborDB 的 SQL 查询世界!本指南将教您使用 HarborDB 强大的查询编辑器编写、执行和管理 SQL 查询的基础知识。
HarborDB 中的 SQL 简介
HarborDB 的查询编辑器旨在使编写和执行 SQL 查询变得直观高效。无论您是检索数据、更新记录还是创建数据库对象,HarborDB 都提供了一种简化的工作流程,具有语法高亮、自动补全和实时结果等功能。
查询编辑器的关键功能
- 语法高亮:SQL 关键字、函数和字面量被颜色编码以提高可读性
- 自动补全:在您输入时建议表名、列名和 SQL 关键字
- 多标签页:在单独的标签页中同时处理多个查询
- 结果窗格:在编辑器下方立即查看查询结果
- 导出选项:一键将结果导出为 CSV 或 JSON
- 查询历史:访问最近执行的查询
- 书签:保存常用查询以便快速访问
编写您的第一个查询
基本的 SELECT 语句
最基本的 SQL 查询从表中检索数据:
SELECT * FROM users;
这个查询:
- SELECT *:返回表中的所有列
- FROM users:指定要查询的表
- ;:终止语句(在 HarborDB 中可选)
选择特定列
要仅检索特定列:
SELECT first_name, last_name, email FROM users;
限制结果
处理大型表时,限制结果是一个好习惯:
SELECT * FROM orders LIMIT 10;
查询编辑器界面
主要组件
- 编辑器区域:在此处编写 SQL 查询
- 工具栏:执行、取消、格式化和导出控制
- 结果窗格:显示查询结果和执行信息
- 状态栏:显示连接信息、行数和执行时间
键盘快捷键
| 快捷键 | 动作 |
| ------------- | ------------------ |
| ⌘ + R | 执行查询 |
| ⌘ + . | 取消查询 |
| ⌘ + T | 新建查询标签页 |
| ⌘ + W | 关闭当前标签页 |
| ⌘ + S | 保存查询 |
| ⌘ + F | 在查询中查找 |
| ⌘ + / | 切换注释 |
| Tab | 缩进选定内容 |
| Shift + Tab | 取消缩进选定内容 |
执行查询
逐步执行
- 在编辑器中编写查询
- 点击运行按钮(▶)或按
⌘ + R - 在结果窗格中查看结果
- 在状态栏中检查执行信息
部分查询执行
您可以仅执行查询的一部分:
- 选择要执行的文本
- 右键单击并选择"执行选定内容"
- 或使用键盘快捷键
⌘ + Shift + R
执行结果
运行查询后,您将看到:
- 结果网格:数据显示在可排序、可筛选的表格中
- 行数:返回的总行数
- 执行时间:查询执行所需的时间
- 消息:来自 PostgreSQL 的任何消息(特别是对于 DML 查询)
使用 WHERE 筛选数据
基本的 WHERE 子句
SELECT * FROM products WHERE price > 100;
多个条件
SELECT * FROM orders
WHERE status = 'shipped'
AND order_date >= '2024-01-01';
使用 LIKE 进行模式匹配
SELECT * FROM customers
WHERE email LIKE '%@gmail.com';
SELECT * FROM products
WHERE name LIKE 'Pro%';
NULL 值
-- 查找 email 为 NULL 的行
SELECT * FROM users WHERE email IS NULL;
-- 查找 email 不为 NULL 的行
SELECT * FROM users WHERE email IS NOT NULL;
使用 ORDER BY 排序结果
升序排序(默认)
SELECT * FROM products ORDER BY price;
降序排序
SELECT * FROM products ORDER BY price DESC;
多个排序列
SELECT * FROM employees
ORDER BY department, last_name, first_name;
处理结果
查看结果
- 滚动:使用鼠标或键盘浏览结果
- 排序:点击列标题进行升序/降序排序
- 筛选:右键单击列标题以筛选值
- 调整大小:拖动列边框以调整宽度
- 重新排序:拖动列标题以重新排列列
单元格操作
- 复制单元格:双击单元格或按
⌘ + C - 编辑单元格:双击并编辑(仅限本地更改)
- 查看完整内容:悬停在截断的单元格上以查看工具提示
导出结果
- 点击工具栏中的导出按钮
- 选择格式:CSV 或 JSON
- 选择目标:保存到文件或复制到剪贴板
- 配置选项:分隔符、编码、标题行
保存和组织查询
保存查询
- 点击保存(
⌘ + S)或保存图标 - 选择位置:本地文件或 HarborDB 库
- 添加元数据:名称、描述、标签
查询库
在文件夹中组织保存的查询:
- 收藏夹:标记常用查询
- 最近:自动跟踪最近使用的查询
- 标签:使用自定义标签对查询进行分类
查询模板
为常见查询创建可重用的模板:
-- 模板:查找不活跃用户
SELECT user_id, email, last_login
FROM users
WHERE last_login < CURRENT_DATE - INTERVAL '90 days'
AND active = true;
常见查询模式
计数记录
SELECT COUNT(*) FROM users;
SELECT COUNT(DISTINCT country) FROM customers;
聚合数据
SELECT
category,
COUNT(*) as product_count,
AVG(price) as avg_price,
MIN(price) as min_price,
MAX(price) as max_price
FROM products
GROUP BY category;
日期/时间查询
-- 今天的订单
SELECT * FROM orders WHERE order_date = CURRENT_DATE;
-- 最近7天
SELECT * FROM logs
WHERE log_date >= CURRENT_DATE - INTERVAL '7 days';
-- 按月统计
SELECT
EXTRACT(MONTH FROM order_date) as month,
COUNT(*) as order_count
FROM orders
GROUP BY EXTRACT(MONTH FROM order_date)
ORDER BY month;
连接表
SELECT
o.order_id,
o.order_date,
c.first_name,
c.last_name,
c.email
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
WHERE o.status = 'completed';
最佳实践
1. 从 SELECT * 开始
探索新表时,使用 SELECT * 查看所有列,然后细化为特定列。
2. 使用 LIMIT
查询不熟悉的表时,始终使用 LIMIT 以避免结果过多。
3. 格式化您的查询
使用一致的格式化以提高可读性:
- 关键字大写
- 复杂查询使用缩进
- 长子句使用换行
4. 注释您的代码
为复杂查询添加注释:
-- 按产品类别计算月度收入
-- 排除退款订单和测试账户
SELECT
DATE_TRUNC('month', order_date) as month,
category,
SUM(amount) as total_revenue
FROM orders
WHERE status != 'refunded'
AND customer_id NOT IN (SELECT customer_id FROM test_accounts)
GROUP BY DATE_TRUNC('month', order_date), category
ORDER BY month DESC, total_revenue DESC;
5. 使用 WHERE 1=0 进行测试
在不获取数据的情况下查看列结构:
SELECT * FROM large_table WHERE 1=0;
常见问题故障排除
"关系不存在"
- 检查表名拼写和大小写敏感性
- 验证您是否连接到正确的数据库
- 确保您具有适当的权限
"列不存在"
- 验证 SELECT 子句中的列名
- 检查拼写错误
- 首先使用
SELECT *查看所有可用列
慢查询
- 添加
LIMIT以测试性能 - 检查缺失的索引
- 使用
EXPLAIN分析查询计划 - 考虑服务器端性能因素
连接错误
- 验证连接是否活动
- 检查网络连接性
- 确认 PostgreSQL 服务器正在运行
后续步骤
现在您理解了查询基础:
快速参考
基本 SQL 子句
SELECT- 选择要返回的列FROM- 指定要查询的表WHERE- 筛选行ORDER BY- 排序结果LIMIT- 限制行数GROUP BY- 聚合数据HAVING- 筛选聚合数据
常见函数
COUNT()- 计数行SUM()- 求和值AVG()- 平均值MIN()/MAX()- 查找极值COALESCE()- 处理 NULL 值CONCAT()- 组合字符串EXTRACT()- 获取日期部分