目录
[1.1 什么是数据库?](#1.1 什么是数据库?)
[1.2 数据库的核心组成部分](#1.2 数据库的核心组成部分)
[1.2.1 数据库本身(存储仓库)](#1.2.1 数据库本身(存储仓库))
[1.2.2 数据库管理系统(DBMS)](#1.2.2 数据库管理系统(DBMS))
[1.2.3 ACID 特性(关系型数据库核心)](#1.2.3 ACID 特性(关系型数据库核心))
[1.2.4 数据库主要类型](#1.2.4 数据库主要类型)
[2.1 Windows 直接安装 PostgreSQL(简要步骤)](#2.1 Windows 直接安装 PostgreSQL(简要步骤))
[2.2 在 WSL2(Ubuntu)中安装 PostgreSQL](#2.2 在 WSL2(Ubuntu)中安装 PostgreSQL)
[2.2.1 前提条件](#2.2.1 前提条件)
[2.2.2 进入 WSL2 终端并更新系统](#2.2.2 进入 WSL2 终端并更新系统)
[2.2.3 安装 PostgreSQL](#2.2.3 安装 PostgreSQL)
[2.2.4 启动 PostgreSQL 服务](#2.2.4 启动 PostgreSQL 服务)
[2.2.5 设置数据库用户密码](#2.2.5 设置数据库用户密码)
[2.2.6 配置 PostgreSQL 允许远程连接(供 Windows 主机访问)](#2.2.6 配置 PostgreSQL 允许远程连接(供 Windows 主机访问))
[2.2.7 获取 WSL2 虚拟机的 IP 地址](#2.2.7 获取 WSL2 虚拟机的 IP 地址)
[2.3 在 Windows 桌面使用 DBeaver 连接 WSL2 中的 PostgreSQL](#2.3 在 Windows 桌面使用 DBeaver 连接 WSL2 中的 PostgreSQL)
[2.3.1 安装 DBeaver(Windows 版)](#2.3.1 安装 DBeaver(Windows 版))
[2.3.2 启动 DBeaver 并新建连接](#2.3.2 启动 DBeaver 并新建连接)
[2.3.3 填写连接参数](#2.3.3 填写连接参数)
[2.3.4 测试连接并完成](#2.3.4 测试连接并完成)
[2.3.5 常见问题排查](#2.3.5 常见问题排查)
[2.4 验证数据库连接](#2.4 验证数据库连接)
[附录:SQL 语言分类速查表](#附录:SQL 语言分类速查表)
第一章:数据库基本概念
1.1 什么是数据库?
定义:数据库是一个有组织、有结构的集合,用于存储、管理和高效检索数据。
可以把数据库想象成一个高度现代化的"数字文件柜":
-
文件柜 → 数据库系统
-
抽屉/文件夹 → 数据库中的表(Table)
-
每张纸 → 表中的一条记录(Row)
-
图书 管理员 → 数据库管理系统 ( DBMS ),负责查找、添加、修改、删除、安全控制等
数据库架构分为存算分离 和存算一体两种模式。
1.2 数据库的核心组成部分
1.2.1 数据库本身(存储仓库)
数据通常以表的形式组织:
-
表:类似 Excel 工作表,存储特定类型的数据(如"用户表")。
-
列(字段/属性):数据的某一类特征(如"姓名""电话")。
-
行(记录/ 元组 ):一个独立的数据实体(如一个具体用户)。
-
主键:唯一标识每一行的一个或多个列(如"用户 ID")。
1.2.2 数据库管理系统(DBMS)
DBMS 是位于数据库和用户之间的软件层,主要功能包括:
-
数据定义:创建、修改、删除表结构
-
数据操作:使用 SQL 进行增、删、改
-
数据查询:高效检索数据
-
数据控制:管理访问权限
-
事务管理:保证多操作要么全成功,要么全失败
-
并发控制:防止多用户同时操作造成数据混乱
-
备份与恢复:防止数据丢失
1.2.3 ACID 特性(关系型数据库核心)
| 特性 | 含义 |
|---|---|
| 原子性 | 事务中的操作要么全部成功,要么全部回滚 |
| 一致性 | 事务前后数据从合法状态变为另一合法状态 |
| 隔离性 | 多个事务并发执行时互不干扰 |
| 持久性 | 事务提交后数据永久保存(即使断电) |
1.2.4 数据库主要类型
| 类型 | 特点 | 代表产品 |
|---|---|---|
| 关系型( RDBMS ) | 表结构 + SQL + ACID | MySQL, PostgreSQL, Oracle, SQL Server |
| 非关系型( NoSQL ) | 灵活模型,高扩展 | MongoDB(文档), Redis(键值), Neo4j(图) |
| NewSQL | 兼具 ACID 与扩展性 | Google Spanner |
| 内存数据库 | 数据在内存,极快 | SAP HANA |
| 时序数据库 | 处理时间序列数据 | InfluxDB |
第二章:数据库安装与连接实战
本章将介绍两种环境下的 PostgreSQL 安装,以及使用 DBeaver 图形化工具进行连接管理。
-
方案一(传统):Windows 直接安装 PostgreSQL(简要回顾)。
-
方案二(推荐):在 WSL2(Ubuntu)中安装 PostgreSQL,并从 Windows 桌面使用 DBeaver 连接。
2.1 Windows 直接安装 PostgreSQL(简要步骤)
详细步骤见原文档 1.3 节,此处仅列出关键节点。
(1)双击 postgresql-17.6-1-windows-x64.exe 安装包
(2)按向导依次选择:安装目录、组件(全选)、数据目录、设置密码(示例用 123456)、端口(默认 5432)
(3)完成安装后,通过 pgAdmin 4 或命令行验证:
bash
psql -U postgres -h localhost -p 5432
# 输入密码后执行 SELECT version();
(4)配置环境变量:将 C:\Program Files\PostgreSQL\17\bin 添加到 PATH
此方式简单直接,但不利于模拟 Linux 生产环境。推荐使用 WSL2 方案。
2.2 在 WSL2(Ubuntu)中安装 PostgreSQL
2.2.1 前提条件
-
Windows 10/11 已启用 WSL2,并安装了 Ubuntu 发行版(如 Ubuntu 22.04/24.04);
-
WSL2 已正确配置,可正常联网;
2.2.2 进入 WSL2 终端并更新系统
注意:这个地方并没有讲解如何安装 WSL,需要自己通过AI去解决。
打开 Windows 终端,输入 wsl 进入 Ubuntu,然后执行:
bash
# 以管理员权限刷新软件源列表,并自动将所有已安装的软件包升级到最新版本。
sudo apt update && sudo apt upgrade -y
2.2.3 安装 PostgreSQL
bash
# 创建一个文件夹,后续所有与大数据的内容都会安装在这个文件夹中
mkdir bigdata
# 进入文件夹中
cd bigdata
# Ubuntu 默认源中无 PostgreSQL 17,可先添加官方源:
# 添加 PostgreSQL 官方签名密钥和仓库
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt install postgresql-17 postgresql-client-17 -y
输出如下内容:

2.2.4 启动 PostgreSQL 服务
在 WSL2 中,PostgreSQL 服务不会自动随系统启动(因为 WSL2 没有完整的 systemd),需要手动启动:
bash
sudo service postgresql start
验证服务状态:
bash
# 使用 PostgreSQL 自带的检测工具
sudo -u postgres pg_isready
# 尝试连接
sudo -u postgres psql -c "SELECT 1"
输出如下内容,即表示数据库完成安装并启动:

2.2.5 设置数据库用户密码
默认安装后,PostgreSQL 会创建一个名为 postgres 的 Linux 系统用户,同时也是数据库超级用户。首先切换到该用户,然后修改数据库密码:
bash
sudo -u postgres psql
在 psql 命令行中执行:
bash
# 修改数据库密码
ALTER USER postgres WITH PASSWORD '123456';
# 退出 PostgreSQL数据库
\q
密码可根据需要设置,本例统一用
123456方便测试。
2.2.6 配置 PostgreSQL 允许远程连接(供 Windows 主机访问)
默认 PostgreSQL 只监听 localhost,需要修改配置以允许来自 Windows 宿主的连接。
① 修改监听地址
编辑配置文件 postgresql.conf:
bash
echo "listen_addresses = '*'" | sudo tee -a /etc/postgresql/17/main/postgresql.conf
保存退出(Ctrl+O -> 回车 -> Ctrl+X)。
② 修改客户端认证配置
编辑 pg_hba.conf:
bash
echo "host all all 0.0.0.0/0 md5" | sudo tee -a /etc/postgresql/17/main/pg_hba.conf
生产环境应限制为特定 IP 或网段,例如
192.168.1.0/24。
③ 重启 PostgreSQL 服务
bash
sudo service postgresql restart
2.2.7 获取 WSL2 虚拟机的 IP 地址
Windows 宿主机需要知道 WSL2 的 IP 才能连接。在 WSL2 终端中执行:
bash
ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
输出如图内容:

记录下显示的 IP,例如 172.25.234.166
每次重启 WSL2 后 IP 可能会变,可以编写脚本或使用
localhost的特殊方式?注意:从 Windows 访问 WSL2 服务,不能直接使用
127.0.0.1,必须使用 WSL2 的虚拟 IP。也可以配置端口转发,但较为复杂,此处直接使用 IP 连接。
2.3 在 Windows 桌面使用 DBeaver 连接 WSL2 中的 PostgreSQL
2.3.1 安装 DBeaver(Windows 版)
(1)双击 dbeaver-ce-25.2.0-x86_64-setup.exe 安装包
(2)按向导选择安装类型(建议"All Users")、组件(全选)、安装路径(默认)
(3)完成安装后,勾选"Create Desktop Shortcut",点击 Finish
2.3.2 启动 DBeaver 并新建连接
(1)双击桌面 DBeaver 图标启动程序
(2)首次启动可能会提示创建示例数据库,选择"否"
(3)点击左上角"新建数据库连接"按钮(插头图标)→ 选择 PostgreSQL → 点击"下一步"
2.3.3 填写连接参数
| 参数 | 值 |
|---|---|
| Host | WSL2 的 IP 地址(如 172.xx.xx.xx) |
| Port | 5432 |
| Database | postgres(默认维护数据库) |
| Username | postgres |
| Password | 123456 |
2.3.4 测试连接并完成
(1)点击"测试连接"按钮
(2)如果提示下载 JDBC 驱动,点击"下载"
(3)看到"已连接"提示后,点击"完成"
此时 DBeaver 左侧会显示 PostgreSQL 服务器下的数据库列表,你可以展开 postgres → Schemas → public 查看表。

2.3.5 常见问题排查
| 现象 | 解决方法 |
|---|---|
| 连接超时 | 确认 WSL2 中 PostgreSQL 已启动(sudo service postgresql status) |
| 拒绝连接 | 检查 pg_hba.conf 是否已添加 0.0.0.0/0 并重启服务 |
| 密码错误 | 在 WSL2 中重新设置密码:sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '123456';" |
| WSL2 IP 变化 | 每次重启后重新获取 IP 并更新 DBeaver 连接设置,或使用脚本自动转发端口 |
进阶技巧 :可以在 Windows 中通过 PowerShell 设置端口转发,使 WSL2 的 5432 端口映射到 Windows 的 localhost,从而 DBeaver 固定使用
127.0.0.1:5432连接。命令如下(以管理员身份运行):
bashnetsh interface portproxy add v4tov4 listenport=5432 listenaddress=0.0.0.0 connectport=5432 connectaddress=<WSL2_IP>但需要注意 WSL2 重启后 IP 会变,需重新执行或编写自动化脚本。
2.4 验证数据库连接
在 DBeaver 中打开 SQL 编辑器,输入以下语句并执行:
sql
SELECT version();
输出如下内容即表示成功:

若返回 PostgreSQL 版本信息(如 PostgreSQL 17.6 on x86_64-pc-linux-gnu...),则代表连接成功,环境配置正确。
至此,你已完成:
-
✅ 在 WSL2 中安装并配置 PostgreSQL
-
✅ 在 Windows 桌面使用 DBeaver 远程连接 WSL2 中的数据库
-
✅ 为后续 SQL 学习准备好运行环境
附录:SQL 语言分类速查表
| 类别 | 全称 | 核心命令 | 功能描述 |
|---|---|---|---|
| DQL | Data Query Language | SELECT |
查询数据 |
| DML | Data Manipulation Language | INSERT, UPDATE, DELETE |
增、删、改数据 |
| DDL | Data Definition Language | CREATE, ALTER, DROP, TRUNCATE |
定义或修改数据库结构 |
| DCL | Data Control Language | GRANT, REVOKE |
控制访问权限 |
后续章节将基于已连接的环境,详细讲解以上 SQL 命令的实战用法。