PostgreSQL 备忘清单为您提供了常用的 PostgreSQL 命令和语句。
| 参数 | 示例 | 说明 |
|---|---|---|
[-d] <database> | psql -d mydb | 连接到数据库 |
-U | psql -U john mydb | 以特定用户身份连接 |
-h -p | psql -h localhost -p 5432 mydb | 连接到主机/端口 |
-U -h -p -d | psql -U admin -h 192.168.1.5 -p 2506 -d mydb | 连接远程 PostgreSQL |
-W | psql -W mydb | 强制密码 |
-c | psql -c '\c postgres' -c '\dt' | 执行 SQL 查询或命令 |
-H | psql -c "\l+" -H postgres > database.html | 生成 HTML 报告 |
-l | psql -l | 列出所有数据库 |
-f | psql mydb -f file.sql | 从文件执行命令 |
-V | psql -V | 打印 psql 版本 |
列出当前数据库中的表
\dt
SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;
全局列表
\dt *.*.
SELECT * FROM pg_catalog.pg_tables
列表表架构
\d <table_name>
\d+ <table_name>
SELECT column_name, data_type, character_maximum_length
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '<table_name>';
CREATE TABLE <table_name>(
<column_name> <column_type>,
<column_name> <column_type>
);
创建表,主键自增
CREATE TABLE <table_name> (
<column_name> SERIAL PRIMARY KEY
);
DROP TABLE IF EXISTS <table_name> CASCADE;
成为 postgres 用户,如果您有权限错误
sudo su - postgres
psql
授予 对数据库的所有权限
GRANT ALL PRIVILEGES ON DATABASE <db_name> TO <user_name>;
授予数据库连接权限
GRANT CONNECT ON DATABASE <db_name> TO <user_name>;
授予架构权限
GRANT USAGE ON SCHEMA public TO <user_name>;
授予函数权限
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO <user_name>;
授予在所有表上选择、更新、插入、删除的权限
GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO <user_name>;
在表上授予权限
GRANT SELECT, UPDATE, INSERT ON <table_name> TO <user_name>;
授予对表的选择权限
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user_name>;
ALTER TABLE <table_name> IF EXISTS
ADD <column_name> <data_type> [<constraints>];
更新栏
ALTER TABLE <table_name> IF EXISTS
ALTER <column_name> TYPE <data_type> [<constraints>];
删除列
ALTER TABLE <table_name> IF EXISTS
DROP <column_name>;
将列更新为自增主键
ALTER TABLE <table_name>
ADD COLUMN <column_name> SERIAL PRIMARY KEY;
使用自动递增的主键插入表中
INSERT INTO <table_name>
VALUES (DEFAULT, <value1>);
INSERT INTO <table_name> (<column1_name>,<column2_name>)
VALUES ( <value1>,<value2> );
选择 所有数据
SELECT * FROM <table_name>;
读取一行数据
SELECT * FROM <table_name> LIMIT 1;
搜索数据
SELECT * FROM <table_name> WHERE <column_name> = <value>;
插入 数据
INSERT INTO <table_name> VALUES( <value_1>, <value_2> );
更新 数据
UPDATE <table_name>
SET <column_1> = <value_1>, <column_2> = <value_2>
WHERE <column_1> = <value>;
删除 所有数据
DELETE FROM <table_name>;
删除特定数据
DELETE FROM <table_name>
WHERE <column_name> = <value>;
| :- | - |
|---|---|
\l[+] | 列出所有数据库 |
\dn[S+] | 列出架构 |
\di[S+] | 列出索引 |
\du[+] | 列出角色 |
\ds[S+] | 列出序列 |
\df[antw][S+] | 列出函数 |
\deu[+] | 列出用户映射 |
\dv[S+] | 列表视图 |
\dl | 列出大对象 |
\dT[S+] | 列出数据类型 |
\da[S] | 列出聚合 |
\db[+] | 列出表空间 |
\dc[S+] | 列出转化 |
\dC[+] | 列出演员表 |
\ddp | 列出默认权限 |
\dd[S] | 显示对象描述 |
\dD[S+] | 列出域 |
\des[+] | 列出国外服务器 |
\dew[+] | 列出外部数据包装器 |
\dF[+] | 列出文本搜索配置 |
\dFd[+] | 列出文本搜索词典 |
\dFp[+] | 列出文本搜索解析器 |
\dFt[+] | 列出文本搜索模板 |
\dL[S+] | 列出程序语言 |
\do[S] | 列出运算符 |
\dO[S+] | 列出排序规则 |
\drds | 列出每个数据库的角色设置 |
\dx[+] | 列出扩展 |
S:显示系统对象,+:附加细节
| :- | - |
|---|---|
\copy ... | 导入/导出表 另见: 复制 |
\echo [STRING] | 打印字符串 |
\i FILE | 执行文件 |
\o [FILE] | 将所有结果导出到文件 |
\qecho [STRING] | 输出流的字符串 |
将表格导出为 CSV 文件
\copy table TO '<path>' CSV
\copy table(col1,col1) TO '<path>' CSV
\copy (SELECT...) TO '<path>' CSV
将 CSV 文件导入表格
\copy table FROM '<path>' CSV
\copy table(col1,col1) FROM '<path>' CSV
另见:复制
pg_upgrade 跨版本升级
$ /usr/lib/postgresql/16/bin/pg_upgrade \
-b /usr/lib/postgresql/15/bin \
-B /usr/lib/postgresql/16/bin \
-d /var/lib/postgresql/15/main \
-D /var/lib/postgresql/16/main \
-o " -c config_file=/etc/postgresql/15/main/postgresql.conf" \
-O " -c config_file=/etc/postgresql/16/main/postgresql.conf"
-b 旧版本二进制文件目录-B 新版本二进制文件目录-d 旧版本数据目录-D 新版本数据目录-o 旧版本主配置文件-O 新版本主配置文件-c 仅check,不执行升级,可先加-c检查是否有报错,没有报错再运行升级使用 pg_upgrade -? 获取完整的选项列表