PostgreSQL 常用命令方面的参考,总共50条:
- 启动 PostgreSQL 服务器:
sudo service postgresql start
- 停止 PostgreSQL 服务器:
sudo service postgresql stop
- 重启 PostgreSQL 服务器:
sudo service postgresql restart
- 查看 PostgreSQL 服务器状态:
sudo service postgresql status
- 进入 psql 控制台:
psql
- 退出 psql 控制台:
\q
- 切换到某个数据库:
\c dbname
- 显示所有数据库:
\l
- 创建数据库:
createdb dbname
- 删除数据库:
dropdb dbname
- 备份数据库:
pg_dump dbname > backup.sql
- 恢复数据库:
psql dbname < backup.sql
- 显示所有表:
\dt
- 创建表:
CREATE TABLE table_name (column1 datatype, column2 datatype, column3 datatype);
- 查看表结构:
\d table_name
- 添加列:
ALTER TABLE table_name ADD COLUMN column_name datatype;
- 修改列数据类型:
ALTER TABLE table_name ALTER COLUMN column_name TYPE datatype;
- 删除列:
ALTER TABLE table_name DROP COLUMN column_name;
- 添加主键:
ALTER TABLE table_name ADD CONSTRAINT pk_constraint PRIMARY KEY (column_name);
- 添加外键:
ALTER TABLE child_table ADD CONSTRAINT fk_constraint FOREIGN KEY (column_name) REFERENCES parent_table (column_name);
- 删除约束:
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
- 插入数据:
INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);
- 更新数据:
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
- 删除数据:
DELETE FROM table_name WHERE condition;
- 查询数据:
SELECT column1, column2 FROM table_name WHERE condition;
- 模糊查询:
SELECT * FROM table_name WHERE column_name LIKE 'value%';
- 分组查询:
SELECT column1, COUNT(column2) FROM table_name GROUP BY column1;
- 连接查询:
SELECT t1.column1, t2.column2 FROM table1 t1 INNER JOIN table2 t2 ON t1.column1 = t2.column1;
- 子查询:
SELECT column1 FROM table_name WHERE column2 = (SELECT MAX(column2) FROM table_name);
- 排序:
SELECT * FROM table_name ORDER BY column_name [ASC | DESC];
- 限制返回结果行数:
SELECT * FROM table_name LIMIT number_of_rows;
- 跳过前几条记录:
SELECT * FROM table_name OFFSET number_of_rows;
- 计算列的平均值:
SELECT AVG(column_name) FROM table_name;
- 计算列的最大值:
SELECT MAX(column_name) FROM table_name;
- 计算列的最小值:
SELECT MIN(column_name) FROM table_name;
- 计算列的总和:
SELECT SUM(column_name) FROM table_name;
- 计算行数:
SELECT COUNT(*) FROM table_name;
- 事务处理:
BEGIN; -- SQL statements COMMIT;
- 回滚事务:
ROLLBACK;
- 为用户添加权限:
GRANT privilege_name ON table_name TO user_name; GRANT ALL PRIVILEGES ON table_name TO user_name;
- 删除用户权限:
REVOKE privilege_name ON table_name FROM user_name;
- 创建用户:
CREATE USER user_name WITH PASSWORD 'password';
- 修改用户密码:
ALTER USER user_name WITH PASSWORD 'new_password';
- 删除用户:
DROP USER user_name;
- 更改数据库所有者:
ALTER DATABASE dbname OWNER TO user_name;
- 创建扩展:
CREATE EXTENSION extension_name;
- 查看已安装的扩展:
\dx
- 卸载扩展:
DROP EXTENSION extension_name;
- 查看 pg_hba.conf 文件路径:
SHOW hba_file;
- 查看 postgresql.conf 文件路径:
SHOW config_file;
以上是更多 PostgreSQL 常用命令方面的参考,希望对你有所帮助。
下面是 PostgreSQL 常见问题处理方面的参考,总共50条:
- 数据库连接失败,可能是数据库服务未启动或者网络问题。
- 在连接数据库时出现“password authentication failed”的错误,可能是密码不正确或者用户没有权限。
- 无法登录 psql 控制台,可能是输入的用户名或者密码不正确。
- 备份数据库时出现“could not execute query: ERROR: must be owner of database” 的错误,可能是备份的用户没有足够的权限。
- 恢复数据库时出现“could not connect to database postgres: FATAL: database “postgres” does not exist”的错误,可能是需要手动创建空的目标数据库。
- PostgreSQL 出现“too many clients already” 的错误,可能是同时连接到数据库的客户端数量超过了最大值。
- 重启 PostgreSQL 服务器时出现“Unable to connect to database: FATAL: the database system is starting up” 的错误,需要等待 PostgreSQL 启动完成后再进行连接。
- 在执行 SQL 语句时出现“ERROR: syntax error at or near ‘关键字’” 的错误,可能是 SQL 语句书写有误。
- 在执行 SQL 语句时出现“ERROR: relation ‘表名’ does not exist” 的错误,可能是表名输入错误或者表不存在。
- 在执行 SQL 语句时出现“ERROR: column ‘列名’ does not exist” 的错误,可能是列名输入错误或者列不存在。
- 在执行 SQL 语句时出现“ERROR: duplicate key value violates unique constraint ‘约束名’” 的错误,可能是插入的数据重复导致唯一性约束冲突。
- 在执行 SQL 语句时出现“ERROR: null value in column ‘列名’ violates not-null constraint” 的错误,可能是插入的数据为 null,但是该列不允许 null 值。
- 在执行 SQL 语句时出现“ERROR: update or delete on table ‘表名’ violates foreign key constraint ‘约束名’” 的错误,可能是删除或更新了父表中有关联的子表数据。
- 在执行 SQL 语句时出现“ERROR: deadlock detected” 的错误,可能是因为两个事务之间存在死锁问题。
- PostgreSQL 出现“server closed the connection unexpectedly” 的错误,可能是网络连接不稳定或者服务器过载。
- PostgreSQL 出现“could not write to temporary file: No space left on device” 的错误,可能是临时文件夹磁盘空间不足。
- 在使用 pg_dump 备份数据库时出现“pg_dump: [archiver (db)] connection to database “数据库名” failed: could not connect to server: Connection refused” 的错误,可能是备份用户没有足够的权限。
- 在执行 ALTER TABLE 命令时出现“ERROR: deadlock detected” 的错误,可能是多个事务同时修改同一个表结构导致死锁。
- 在执行 INSERT、UPDATE 或 DELETE 语句时出现“ERROR: could not serialize access due to concurrent update” 的错误,可能是多个事务同时访问同一个数据导致冲突。
- 在使用 COPY 命令导入数据时出现“ERROR: invalid byte sequence for encoding” 的错误,可能是数据编码与数据库编码不一致。
- 在执行查询时出现“ERROR: out of memory” 的错误,可能是查询返回的记录太多导致内存溢出。
- 在使用数据库时出现“ERROR: could not fork new process for connection” 的错误,可能是系统资源不足导致无法创建新的进程。
- 在执行 ALTER TABLE 命令时出现“ERROR: column “列名” cannot be cast to type “类型”” 的错误,可能是需要显式指定类型转换方式。
- 在执行 UPDATE 或 DELETE 语句时没有使用 WHERE 子句导致误删或误改数据。
- 在执行 CREATE INDEX 命令时没有添加并发控制选项导致索引的建立过程阻塞其他操作。
- 在执行 SELECT COUNT(*) 语句时出现性能问题,可以考虑使用 pg_stat_user_tables 视图进行性能分析。
- 在使用大量子查询的复杂 SQL 语句时出现性能问题,可以考虑优化 SQL 语句结构或者使用 WITH 子句进行优化。
- 在执行 VACUUM 命令时出现性能问题和锁表问题,可以考虑使用 autovacuum 自动清理机制。
- 在使用多个 PostgreSQL 实例时注意端口的冲突问题。
- PostgreSQL 出现“Could not find a ‘postgres’ user with uid 10” 的错误,可能是需要手动创建一个名为 postgres 的用户。
- 在执行 SQL 语句时出现“ERROR: duplicate key value violates unique constraint" 的错误,可以考虑使用 ON CONFLICT 子句进行优化。
- 在执行 SQL 语句时出现“ERROR: relation already exists: 表名” 的错误,可以使用 IF NOT EXISTS 选项忽略重复创建表的错误。
- 在插入数据时出现“ERROR: new row for relation ‘表名’ violates check constraint ‘约束名’” 的错误,可能是插入的数据不满足表定义的检查约束。
- 在升级 PostgreSQL 版本时注意备份数据和配置文件,避免数据丢失或者配置文件不兼容导致无法正常启动服务。
- 在使用 pg_upgrade 工具升级 PostgreSQL 版本时,需要在旧版和新版之间安装兼容版本的 PostgreSQL。
- 在使用 pg_restore 还原备份文件时出现“pg_restore: [archiver] unsupported version (1.13) in file header”的错误,需要使用相应版本的 pg_restore 工具进行还原。
- 在使用 pg_dump 备份数据库时出现“pg_dump: error: query was: SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname != ‘pg_catalog’ AND schemaname != ‘information_schema’;” 的错误,可能是备份用户没有足够的权限。
- 在使用 COPY 命令导出数据时出现“ERROR: could not open file ‘文件名’ for writing: Permission denied”的错误,可能是导出用户没有写入文件的权限。
- 在执行 CREATE TABLE 语句时注意表名和列名不要使用 PostgreSQL 的保留关键字。
- 在使用 pg_dump 进行备份时可以添加 -Fc 选项将结果转换为二进制格式,以达到压缩备份的效果。
- 在创建索引时可以考虑使用 B-tree 索引或者 GiST 索引以提高检索速度。
- 在执行 ALTER TABLE 命令时可以使用 CONCURRENTLY 关键字实现并发修改表结构。
- 使用 EXPLAIN 命令分析 SQL 语句的执行计划,以便优化 SQL 语句。
- 在修改表结构时最好先测试在开发环境,避免意外修改生产数据。
- 在执行查询时可以使用 LIMIT 和 OFFSET 子句进行分页操作,以减少返回的记录数量。
- 在使用 psql 控制台时可以通过设置 \pset 命令进行输出格式定制。
- PostgreSQL 出现“could not bind IPv4 socket: Address already in use”的错误,可能是端口被占用。
- 在使用 pg_ctl 命令管理 PostgreSQL 服务器时,可以使用 -l 选项指定日志文件路径。
- 在修改配置文件时需要重启 PostgreSQL 服务器才能使配置生效。
- 在使用 PostgreSQL 时需要注意数据库安全性,建议使用非默认的端口和密码,以及限制远程访问权限。
以上是 PostgreSQL 常见问题处理方面的参考,希望对你有所帮助。