PostgreSQL 教程: PostgreSQL 备忘单

六月 28, 2024

摘要:PostgreSQL 备忘单为您提供了常用的 PostgreSQL 命令和语句,让您能够快速有效地使用 PostgreSQL。

目录

下载 PostgreSQL 备忘单

我们为您提供了 PDF 格式的 3 页 PostgreSQL 备忘单。您可以下载并打印出来,以便快速参考 PostgreSQL 中最常用的语句:

下载 PostgreSQL 备忘单

PostgreSQL 命令

使用特定用户从 psql 访问 PostgreSQL 服务器:

psql -U [username];

例如,以下命令使用postgres用户访问 PostgreSQL 数据库服务器:

psql -U postgres

连接到一个特定数据库:

\c database_name;

例如,以下命令连接到dvdrental数据库:

\c dvdrental;
You are now connected to database "dvdrental" as user "postgres".

要退出 psql,请执行以下操作:

\q

在 PostgreSQL 数据库服务器中,列出所有的数据库

\l

列出所有模式:

\dn

列出所有存储过程和函数:

\df

列出所有视图

\dv

在当前数据库中,列出所有的表

\dt

或者要获取当前数据库中所有表的详细信息:

\dt+

获取一个表的详细信息。

\d+ table_name

显示一个存储过程或函数的代码:

\df+ function_name

以美化的格式显示查询输出:

\x

列出所有用户:

\du

创建一个新角色

CREATE ROLE role_name;

使用usernamepassword创建一个新角色:

CREATE ROLE username NOINHERIT LOGIN PASSWORD password;

将当前会话的角色更改为new_role

SET ROLE new_role;

允许role_1将其角色设置为role_2

GRANT role_2 TO role_1;

管理数据库

创建一个新数据库

CREATE DATABASE [IF NOT EXISTS] db_name;

永久删除一个数据库

DROP DATABASE [IF EXISTS] db_name;

管理表

创建一个新表或一个临时表

CREATE [TEMP] TABLE [IF NOT EXISTS] table_name(
   pk SERIAL PRIMARY KEY,
   c1 type(size) NOT NULL,
   c2 type(size) NULL,
   ...
);

向一个表中添加一个新列

ALTER TABLE table_name ADD COLUMN new_column_name TYPE;

在一个表中删除一列

ALTER TABLE table_name 
DROP COLUMN column_name;

重命名一个列

ALTER TABLE table_name 
RENAME column_name TO new_column_name;

设置或删除一个列的默认值:

ALTER TABLE table_name 
ALTER COLUMN [SET DEFAULT value | DROP DEFAULT]

向一个表添加一个主键

ALTER TABLE table_name 
ADD PRIMARY KEY (column,...);

从一个表中删除主键。

ALTER TABLE table_name 
DROP CONSTRAINT primary_key_constraint_name;

重命名一个表

ALTER TABLE table_name 
RENAME TO new_table_name;

删除一个表及其依赖对象:

 DROP TABLE [IF EXISTS] table_name CASCADE;

管理视图

创建一个视图

CREATE OR REPLACE view_name AS
query;

创建一个递归视图

CREATE RECURSIVE VIEW view_name(column_list) AS
SELECT column_list;

创建一个物化视图

CREATE MATERIALIZED VIEW view_name
AS
query
WITH [NO] DATA;

刷新一个物化视图:

REFRESH MATERIALIZED VIEW CONCURRENTLY view_name;

删除一个视图:

DROP VIEW [ IF EXISTS ] view_name;

删除一个物化视图:

DROP MATERIALIZED VIEW view_name;

重命名一个视图:

ALTER VIEW view_name RENAME TO new_name;

管理索引

在一个表上创建一个具有指定名称的索引:

CREATE [UNIQUE] INDEX index_name
ON table (column,...)

从一个表删除一个指定的索引:

DROP INDEX index_name;

从表中查询数据

查询一个表中的所有数据:

SELECT * FROM table_name;

查询一个表中所有行的指定列的数据:

SELECT column_list
FROM table;

查询数据并去除重复行:

SELECT DISTINCT (column)
FROM table;

使用一个条件从一个表中查询数据:

SELECT *
FROM table
WHERE condition;

为结果集中的列分配一个别名

SELECT column_1 AS new_column_1, ...
FROM table;

使用 LIKE 运算符查询数据:

SELECT * FROM table_name
WHERE column LIKE '%value%'

使用 BETWEEN 运算符查询数据:

SELECT * FROM table_name
WHERE column BETWEEN low AND high;

使用 IN 运算符查询数据:

SELECT * 
FROM table_name
WHERE column IN (value1, value2,...);

使用 LIMIT 子句限定返回的行:

SELECT *
FROM table_name
LIMIT limit OFFSET offset
ORDER BY column_name;

使用内连接左连接全外连接交叉连接自然连接,从多个表中查询数据:

SELECT * 
FROM table1
INNER JOIN table2 ON conditions;

SELECT * 
FROM table1
LEFT JOIN table2 ON conditions;

SELECT * 
FROM table1
FULL OUTER JOIN table2 ON conditions;

SELECT * 
FROM table1
CROSS JOIN table2;

SELECT * 
FROM table1
NATURAL JOIN table2;

返回一个表的行数。

SELECT COUNT (*)
FROM table_name;

按升序或降序对行进行排序:

SELECT select_list
FROM table
ORDER BY column ASC [DESC], column2 ASC [DESC],...;

使用 GROUP BY 子句对行进行分组。

SELECT *
FROM table
GROUP BY column_1, column_2, ...;

使用 HAVING 子句筛选分组。

SELECT *
FROM table
GROUP BY column_1
HAVING condition;

集合操作

使用 UNION 运算符,将两个或多个查询的结果集组合在一起:

SELECT * FROM table1
UNION
SELECT * FROM table2;

使用 EXCEPT 运算符减去一个结果集:

SELECT * FROM table1
EXCEPT
SELECT * FROM table2;

获取两个查询的结果集的交集:

SELECT * FROM table1
INTERSECT
SELECT * FROM table2;

修改数据

向一个表中插入一个新行

INSERT INTO table(column1,column2,...)
VALUES(value_1,value_2,...);

向一个表中插入多行:

INSERT INTO table_name(column1,column2,...)
VALUES(value_1,value_2,...),
      (value_1,value_2,...),
      (value_1,value_2,...),
      ...;

更新所有行的数据:

UPDATE table_name
SET column_1 = value_1,
    ...;

更新由WHERE子句中的条件指定的一组行的数据。

UPDATE table
SET column_1 = value_1,
    ...
WHERE condition;

删除一个表的所有行:

DELETE FROM table_name;

根据一个条件删除特定的行:

DELETE FROM table_name
WHERE condition;

性能

显示一个查询的查询计划:

EXPLAIN query;

显示并执行一个查询的查询计划:

EXPLAIN ANALYZE query;

收集统计信息:

ANALYZE table_name;