用 DBeaver 将 Northwind 示例数据库加载到 PostgreSQL

2026-09-02 29 预计阅读时间: 1 分钟
来源: postgr.es AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:8 分钟

学习 SQL 不一定要从生产数据开始。一个结构清晰、数据规模适中的示例数据库,足以帮助你练习 SELECT、过滤、连接、聚合和表结构设计。Northwind 原本来自 Microsoft 数据库生态,但借助现成的 PostgreSQL 脚本,可以很快在本地搭建出一套可查询的练习环境。

本文演示如何使用 DBeaver 打开并执行 northwind.sql,将表结构和示例数据加载到 PostgreSQL,然后运行第一条查询。

准备 PostgreSQL 和 DBeaver

开始前需要准备:

  • 一个可连接的 PostgreSQL 实例,可以是本机安装、Docker 容器或远程开发库。
  • DBeaver。示例使用 DBeaver Enterprise Edition 26.1.0,其他近期版本的操作方式通常类似。
  • PostgreSQL 兼容的 Northwind SQL 文件。下载后应得到一个名为 northwind.sql 的文本文件。

建议为练习单独创建数据库,避免把示例表和已有项目混在一起。例如,可以使用 PostgreSQL 客户端创建数据库:

createdb -U postgres northwind

如果 PostgreSQL 运行在其他主机或端口上,可以通过环境变量或连接参数指定目标:

PGHOST=127.0.0.1 PGPORT=5432 createdb -U postgres northwind

上面的命令假设当前用户已经拥有创建数据库的权限。如果数据库已经存在,跳过这一步即可。

在 DBeaver 中执行脚本

在 DBeaver 中创建一个指向 northwind 数据库的 PostgreSQL 连接,然后打开 northwind.sql 文件。脚本通常同时包含建表语句、约束定义和插入数据的语句,因此不需要手动逐张表创建。

打开脚本后,可以先浏览内容。对于刚接触 SQL 的开发者来说,这份文件本身就是一个小型数据建模案例:你可以观察表是如何定义的,主键和外键如何关联,以及数据是如何插入的。阅读脚本时,重点关注这些结构:

  • CREATE TABLE 如何声明列类型和约束。
  • 主键如何保证一张表中的记录唯一。
  • 外键如何表达客户、订单、产品和员工之间的关系。
  • INSERT 语句如何批量填充示例数据。

确认当前 SQL 编辑器连接的是目标 PostgreSQL 数据库后,执行整个脚本。在 DBeaver 中可以使用 Alt + X 执行 SQL 脚本。执行完成后,查看脚本执行报告;如果没有错误,并且对象导航器中出现了 Northwind 相关表,说明加载基本成功。

也可以用 PostgreSQL 命令行完成同样的导入,适合自动化或排查 DBeaver 操作问题。请将路径替换成实际文件位置:

psql -U postgres -d northwind -f ./northwind.sql

如果脚本中途失败,不要只重复执行。先查看错误所在的语句,并确认数据库、用户权限以及脚本是否适用于 PostgreSQL。对于已经执行了一部分的脚本,使用一个全新的练习数据库重新导入,通常更容易得到干净、可重复的结果。

执行第一条查询

数据库加载完成后,可以在 DBeaver 中打开新的 SQL 编辑器,运行一个简单的筛选查询。下面的例子查找德国客户,并返回客户编号、公司名称、城市和国家:

SELECT
    customer_id,
    company_name,
    city,
    country
FROM customers
WHERE country = 'Germany';

这条查询包含 SQL 中最常见的几个组成部分:

  • SELECT 指定要返回的列。
  • FROM customers 指定数据来源表。
  • WHERE 限制结果,只保留国家为 Germany 的记录。
  • 末尾的分号表示语句结束,便于客户端识别完整命令。

接下来可以逐步修改查询,观察结果如何变化。例如,按公司名称排序并限制返回数量:

SELECT
    customer_id,
    company_name,
    city,
    country
FROM customers
WHERE country = 'Germany'
ORDER BY company_name
LIMIT 10;

如果想进一步了解数据之间的关系,可以尝试把客户和订单连接起来。下面的查询统计每个客户的订单数量:

SELECT
    c.customer_id,
    c.company_name,
    COUNT(o.order_id) AS order_count
FROM customers AS c
LEFT JOIN orders AS o
    ON o.customer_id = c.customer_id
GROUP BY
    c.customer_id,
    c.company_name
ORDER BY order_count DESC;

这个例子同时展示了表别名、LEFT JOINCOUNTGROUP BY 和排序。使用 LEFT JOIN 的好处是,即使某个客户没有订单,也仍然可以出现在结果中,其订单数量会是 0

把示例数据库用起来

Northwind 的价值不只是提供几张可以查询的表。它还适合用来练习完整的 SQL 工作流:先阅读模式,再验证关系,最后通过查询回答具体问题。

可以按下面的顺序练习:

  1. 查看各张表的列和数据类型。
  2. 找出订单表与客户表之间的外键关系。
  3. 查询某个国家的客户。
  4. 统计每个客户的订单数量。
  5. 连接订单明细和产品表,计算销售数量或金额。
  6. 为一个经常使用的过滤条件设计索引,并用执行计划验证影响。

练习时尽量从小查询开始,每次只增加一个新概念。这样既容易理解结果,也方便定位 SQL 错误。不要把示例数据库直接当作生产系统的设计模板;真实项目还需要考虑权限、迁移流程、数据质量、索引策略和备份恢复。

小结

使用 DBeaver 加载 Northwind 到 PostgreSQL,核心流程只有三步:准备数据库连接,打开并执行 northwind.sql,然后运行查询验证数据。对 SQL 初学者来说,脚本可以作为一份可阅读的数据模型;对有经验的开发者来说,它则是练习连接、聚合和查询优化的轻量数据集。

建议保留一个专门的练习数据库,并在每次实验前记录使用的 SQL。这样你不仅能快速重建环境,也能逐渐积累一套真正可复用的查询示例。


相关推荐