安装PostgreSQL
在Mac上可以直接使用Homebrew安装:
启动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 2 3
| \x auto \pset border 2 \pset pager always
|
- 导出数据到文件:
1 2 3
| \o output.txt SELECT * FROM users; \o
|
- 快速查看表结构:
- 执行系统命令:
- 事务控制:
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 键可自动补全对象名
- 按
↑/↓ 键可浏览历史命令