Skip to content

访问数据库

学习目标本节将教会你如何连接到已创建的 PostgreSQL 数据库,并了解基本的交互方式。

1.4 数据库访问方式

创建数据库后,你可以通过多种方式进行访问。作为初学者,了解这些方式将帮助你灵活地操作数据库:

mermaid
graph TD;
    A[PostgreSQL数据库] --> B[psql命令行工具];
    A --> C[图形界面工具];
    A --> D[编程语言接口];

    B --> B1[交互式SQL命令执行];
    C --> C1[pgAdmin];
    C --> C2[其他支持ODBC/JDBC的工具];
    D --> D1[各种编程语言绑定];
text
1. psql交互式终端 - PostgreSQL官方命令行工具
2. 图形界面工具 - 如pgAdmin等可视化管理工具
3. 编程接口 - 通过各种语言连接数据库

初学者建议作为初学者,强烈建议先掌握 psql 命令行工具,它可以帮助你理解 PostgreSQL 的核心概念,并为以后使用图形工具或编程接口打下基础。

使用 psql 连接数据库

psql 是 PostgreSQL 自带的交互式终端程序,它允许你直接输入 SQL 命令并查看执行结果。

基本连接

连接到指定数据库的基本命令如下:

bash
$ psql mydb

如果不提供数据库名称,psql 将默认尝试连接与你当前用户名相同的数据库:

bash
$ psql

连接成功界面

成功连接后,你将看到类似如下的欢迎信息:

psql (17.2)
Type "help" for help.

mydb=>

提示符末尾的符号表示你的用户权限:

  • => 表示普通用户
  • =# 表示超级用户(数据库管理员)

关于超级用户如果你看到 `=#` 提示符,说明你拥有超级用户权限。自行安装的 PostgreSQL 实例通常默认以超级用户身份连接。

psql 基础操作演示

查询示例

一旦连接到数据库,你可以开始执行 SQL 查询。以下是一些简单的例子:

sql
mydb=> SELECT version();
sql
mydb=> SELECT current_date;
sql
mydb=> SELECT 2 + 2;

执行结果示例:

sql
mydb=> SELECT version();
                                         version
-------------------------------------------------------------------
 PostgreSQL 17.2 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit
(1 row)

mydb=> SELECT current_date;
    date
------------
 2016-01-07
(1 row)

mydb=> SELECT 2 + 2;
 ?column?
----------
        4
(1 row)

psql 内部命令

除了标准 SQL 命令外,psql 还有许多以反斜杠 \ 开头的特殊内部命令:

psql 常用内部命令
命令描述
\h获取 SQL 命令的帮助
\?获取 psql 内部命令的帮助
\l列出所有数据库
\c 数据库名连接到其他数据库
\dt显示当前数据库中的表
\d 表名显示表的结构
\du列出所有用户
\q退出 psql

示例:获取 SQL 命令帮助

bash
mydb=> \h

退出 psql

完成工作后,使用以下命令退出 psql:

bash
mydb=> \q

学习建议虽然有很多图形化工具可以操作 PostgreSQL,但掌握 psql 基本命令对深入理解数据库操作非常有价值。建议初学者花时间熟悉这个工具,它将为你的 PostgreSQL 学习之旅提供坚实基础!

实际业务场景应用假设你是一家电商公司的数据分析师,需要快速查询某天的销售数据。通过 psql,你可以迅速连接到数据库并执行查询:
sql
-- 连接到销售数据库
$ psql sales_db

-- 查询今日销售总额
sales_db=> SELECT SUM(amount) FROM transactions WHERE date = CURRENT_DATE;

-- 查询畅销商品
sales_db=> SELECT product_name, COUNT(*) as sales_count
           FROM transactions
           WHERE date = CURRENT_DATE
           GROUP BY product_name
           ORDER BY sales_count DESC
           LIMIT 10;

这种直接通过命令行的操作方式在紧急情况下特别有用,无需启动复杂的图形界面工具就能快速获取关键数据。