本文整理了 PostgreSQL 在命令行环境中的常见操作,涵盖连接方式、控制台快捷命令、权限管理以及数据定义与数据操作语句,可作为日常查阅的速查表。

连接数据库

psql -U <USERNAME> -d <DBNAME> -h <HOSTNAME> -p <PORT>

默认端口为 5432。psql 命令提供了简写形式:当前系统用户与 PostgreSQL 用户同名时,可以省略 -U 及密码输入,直接连接。

命令行操作

以下控制台命令均以反斜杠开头,执行时无需添加分号:

  • \h <SQL> 查看 SQL 语句帮助,如 \h SELECT
  • \? 查看 psql 支持的所有控制命令;
  • \l 列出所有数据库;
  • \c <DBNAME> 连接指定数据库;
  • \d 列出当前数据库的所有表;
  • \d <TABLE_NAME> 列出某张表的表结构;
  • \du 列出所有用户;
  • \e 打开文本编辑器;
  • \conninfo 列出当前数据库连接信息;
  • \passwd <DBUSER> 修改数据库用户密码;
  • \q 退出 psql

用户和权限操作

新建用户

CREATE USER dbuser WITH PASSWORD 'password';

分配权限

GRANT ALL PRIVILEGES ON DATABASE dbname to dbuser;

数据库操作

创建数据库

CREATE DATABASE exampledb OWNER dbuser;

表操作

-- 创建新表
CREATE TABLE user_tbl (
    name VARCHAR(20),
    signup_date DATE
);

-- 重命名表格
ALTER TABLE user_tbl RENAME TO backup_tbl;

-- 删除表格
DROP TABLE IF EXISTS backup_tbl;
-- 添加字段
ALTER TABLE user_tbl ADD COLUMN email VARCHAR(40);

-- 更新字段
ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;

-- 重命名字段
ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;

-- 删除字段
ALTER TABLE user_tbl DROP COLUMN email;

数据(记录)操作

-- 插入记录
INSERT INTO user_tbl (name, signup_date) VALUES ('张三', '2013-12-22');

-- 查询记录
SELECT * FROM user_tbl;

-- 更新记录
UPDATE user_tbl SET name = '李四' WHERE name = '张三';

-- 删除记录
DELETE FROM user_tbl WHERE name = '李四';