安装PostgreSQL

在Mac上可以直接使用Homebrew安装:

1
brew install postgresql

启动PostgreSQL服务

在MacOS上可以使用以下命令启动/停止PostgreSQL服务

1
2
brew services start postgresql # 启动
brew services stop postgresql # 关闭

在windows平台上则使用net命令:

1
2
net start postgresql-x64-14 # 启动
net stop posgresql-x64-14 # 关闭

使用PostgreSQL

在启动了PostgreSQL服务后,我们就可以使用 psql 命令行工具连接 PostgreSQL了(这个工具一般在PostgreSQL的安装目录的/bin目录下)。

直接在命令行中输入psql就能进入到默认的数据库内,或者我们可以使用 psql -U [用户名] -d [数据库名]指定用户名和要连接的数据库:

1
2
3
4
5
6
7
nietianyi@Mac ~ % brew services start postgresql
==> Successfully started `postgresql@14` (label: homebrew.mxcl.postgresql@14)
nietianyi@Mac ~ % psql
psql (14.18 (Homebrew))
Type "help" for help.

nietianyi=#

在MacOS上一般默认的管理员用户为你的MacOS用户名(例如在这里是nietianyi),而在Windows平台上的默认用户名为postgres,默认数据库名字为postgres。这意味着在MacOS上第一次登录的时候直接使用psql命令就可以直接连接上本地数据库,而在windows平台上则需要特定指定用户postgres:psql -U postgres

进入psql后我们就可以使用命令或者是SQL语句操纵数据库,psql同时支持使用指令(元命令)或者SQL操纵数据库。

数据库连接与退出

命令 描述
psql -U [用户名] -d [数据库名] 从系统命令行连接数据库
\c [数据库名] 切换数据库
\conninfo 显示当前连接信息
\q 退出 psql

信息查询

命令 描述
\l 列出所有数据库
\dt 列出当前数据库的所有表
\d [表名] 显示表结构(列、索引、约束等)
\dn 列出所有模式(schemas)
\du\dg 列出所有角色/用户
\dv 列出视图
\df 列出函数
\x 切换扩展显示模式(宽表展示)

数据操作

命令 描述
SELECT * FROM [表名]; 查询数据(需以 ; 结束)
\e 打开编辑器编写多行 SQL
\i [文件路径] 执行 SQL 文件(如 \i C:/data.sql
\copy ... 导入/导出 CSV 数据
\watch [秒数] 定时重复执行 SQL(如 SELECT NOW()\watch 5

元命令(以 \ 开头)

命令 描述
\? 查看所有元命令帮助
\h [SQL命令] 查看 SQL 命令帮助(如 \h SELECT
\timing 切换 SQL 执行时间显示
\pset [选项] 设置输出格式(如 \pset border 2
\! [系统命令] 执行系统命令(如 \! dir\! ls

调试与配置

命令 描述
\set [变量名] [值] 设置变量(如 \set PROMPT1 '%n@%/%R%# '
\echo [文本] 打印文本到屏幕
\set ECHO_HIDDEN on 显示 \d 等命令背后的 SQL
\s 查看命令历史
\g 重新执行上一个 SQL

实用技巧示例

  1. 美化查询结果
1
2
3
\x auto  -- 自动切换宽表模式
\pset border 2 -- 设置表格边框
\pset pager always -- 分页显示长结果
  1. 导出数据到文件
1
2
3
\o output.txt  -- 开始写入文件
SELECT * FROM users;
\o -- 停止写入
  1. 快速查看表结构
1
\d+ users  -- 显示详细表结构(带注释和存储信息)
  1. 执行系统命令
1
2
\! date  -- Linux/macOS 查看时间
\! dir -- Windows 查看目录
  1. 事务控制
1
2
3
BEGIN;  -- 开始事务
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT; -- 提交事务

常用 SQL 快速参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 创建表
CREATE TABLE employees (id SERIAL PRIMARY KEY, name TEXT);

-- 插入数据
INSERT INTO employees (name) VALUES ('张三');

-- 更新数据
UPDATE employees SET name = '李四' WHERE id = 1;

-- 删除数据
DELETE FROM employees WHERE id = 2;

-- 创建索引
CREATE INDEX idx_name ON employees (name);

提示:在 psql 中:

  • 所有 SQL 命令必须以分号 ; 结束
  • 所有 元命令(\开头)不要加分号
  • Tab 键可自动补全对象名
  • / 键可浏览历史命令