六月 28, 2024
摘要:PostgreSQL 备忘单为您提供了常用的 PostgreSQL 命令和语句,让您能够快速有效地使用 PostgreSQL。
目录
下载 PostgreSQL 备忘单
我们为您提供了 PDF 格式的 3 页 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;
使用username
和password
创建一个新角色:
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;