logo
🗄️ 数据库

PostgreSQL

PostgreSQL Cheat Sheet - 快速参考指南,收录常用语法、命令与实践。

📂 分类 · 数据库🧭 Markdown 速查🏷️ 2 个标签
#postgres#sql
向下滚动查看内容
返回全部 Cheat Sheets

Getting Started

Getting started

Switch and connect

SHELL
滚动查看更多
$ sudo -u postgres psql

List all databases

SHELL
滚动查看更多
postgres=# \l

Connect to the database named postgres

SHELL
滚动查看更多
postgres=# \c postgres

Disconnect

SHELL
滚动查看更多
postgres=# \q
postgres=# \!
psql commands
OptionExampleDescription
[-d] <database>psql -d mydbConnecting to database
-Upsql -U john mydbConnecting as a specific user
-h -ppsql -h localhost -p 5432 mydbConnecting to a host/port
-U -h -p -dpsql -U admin -h 192.168.1.5 -p 2506 -d mydbConnect remote PostgreSQL
-Wpsql -W mydbForce password
-cpsql -c '\c postgres' -c '\dt'Execute a SQL query or command
-Hpsql -c "\l+" -H postgres > database.htmlGenerate HTML report
-lpsql -lList all databases
-fpsql mydb -f file.sqlExecute commands from a file
-Vpsql -VPrint the psql version

{.show-header}

Getting help
--
\hHelp on syntax of SQL commands
\h DELETEDELETE SQL statement syntax
\?List of PostgreSQL command

Run in PostgreSQL console

PostgreSQL Working

Recon

Show version

CODE
滚动查看更多
SHOW SERVER_VERSION;

Show system status

SQL
滚动查看更多
\conninfo

Show environmental variables

SQL
滚动查看更多
SHOW ALL;

List users

SQL
滚动查看更多
SELECT rolname FROM pg_roles;

Show current user

SQL
滚动查看更多
SELECT current_user;

Show current user's permissions

CODE
滚动查看更多
\du

Show current database

SQL
滚动查看更多
SELECT current_database();

Show all tables in database

SQL
滚动查看更多
\dt

List functions

SQL
滚动查看更多
\df <schema>
Databases

List databases

SQL
滚动查看更多
\l

Connect to database

SQL
滚动查看更多
\c <database_name>

Show current database

SQL
滚动查看更多
SELECT current_database();

Create database

SQL
滚动查看更多
CREATE DATABASE <database_name> WITH OWNER <username>;

Drop database

SQL
滚动查看更多
DROP DATABASE IF EXISTS <database_name>;

Rename database

SQL
滚动查看更多
ALTER DATABASE <old_name> RENAME TO <new_name>;
Tables

List tables, in current db

SQL
滚动查看更多
\dt

SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;

List tables, globally

SQL
滚动查看更多
\dt *.*.

SELECT * FROM pg_catalog.pg_tables

List table schema

SQL
滚动查看更多
\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

SQL
滚动查看更多
CREATE TABLE <table_name>(
  <column_name> <column_type>,
  <column_name> <column_type>
);

Create table, with an auto-incrementing primary key

SQL
滚动查看更多
CREATE TABLE <table_name> (
  <column_name> SERIAL PRIMARY KEY
);

Delete table

SQL
滚动查看更多
DROP TABLE IF EXISTS <table_name> CASCADE;
Permissions

Become the postgres user, if you have permission errors

SHELL
滚动查看更多
sudo su - postgres
psql

Grant all permissions on database

SQL
滚动查看更多
GRANT ALL PRIVILEGES ON DATABASE <db_name> TO <user_name>;

Grant connection permissions on database

SQL
滚动查看更多
GRANT CONNECT ON DATABASE <db_name> TO <user_name>;

Grant permissions on schema

SQL
滚动查看更多
GRANT USAGE ON SCHEMA public TO <user_name>;

Grant permissions to functions

SQL
滚动查看更多
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO <user_name>;

Grant permissions to select, update, insert, delete, on a all tables

SQL
滚动查看更多
GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO <user_name>;

Grant permissions, on a table

SQL
滚动查看更多
GRANT SELECT, UPDATE, INSERT ON <table_name> TO <user_name>;

Grant permissions, to select, on a table

SQL
滚动查看更多
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user_name>;
Columns

Add column

SQL
滚动查看更多
ALTER TABLE <table_name> IF EXISTS
ADD <column_name> <data_type> [<constraints>];

Update column

SQL
滚动查看更多
ALTER TABLE <table_name> IF EXISTS
ALTER <column_name> TYPE <data_type> [<constraints>];

Delete column

SQL
滚动查看更多
ALTER TABLE <table_name> IF EXISTS
DROP <column_name>;

Update column to be an auto-incrementing primary key

SQL
滚动查看更多
ALTER TABLE <table_name>
ADD COLUMN <column_name> SERIAL PRIMARY KEY;

Insert into a table, with an auto-incrementing primary key

SQL
滚动查看更多
INSERT INTO <table_name>
VALUES (DEFAULT, <value1>);


INSERT INTO <table_name> (<column1_name>,<column2_name>)
VALUES ( <value1>,<value2> );
Data

Select all data

SQL
滚动查看更多
SELECT * FROM <table_name>;

Read one row of data

SQL
滚动查看更多
SELECT * FROM <table_name> LIMIT 1;

Search for data

SQL
滚动查看更多
SELECT * FROM <table_name> WHERE <column_name> = <value>;

Insert data

SQL
滚动查看更多
INSERT INTO <table_name> VALUES( <value_1>, <value_2> );

Update data

SQL
滚动查看更多
UPDATE <table_name>
SET <column_1> = <value_1>, <column_2> = <value_2>
WHERE <column_1> = <value>;

Delete all data

SQL
滚动查看更多
DELETE FROM <table_name>;

Delete specific data

SQL
滚动查看更多
DELETE FROM <table_name>
WHERE <column_name> = <value>;
Users

List roles

SQL
滚动查看更多
SELECT rolname FROM pg_roles;

Create user

SQL
滚动查看更多
CREATE USER <user_name> WITH PASSWORD '<password>';

Drop user

SQL
滚动查看更多
DROP USER IF EXISTS <user_name>;

Alter user password

SQL
滚动查看更多
ALTER ROLE <user_name> WITH PASSWORD '<password>';
Schema

List schemas

SQL
滚动查看更多
\dn

SELECT schema_name FROM information_schema.schemata;

SELECT nspname FROM pg_catalog.pg_namespace;

Create schema

SQL
滚动查看更多
CREATE SCHEMA IF NOT EXISTS <schema_name>;

Drop schema

SQL
滚动查看更多
DROP SCHEMA IF EXISTS <schema_name> CASCADE;
Dates

Show current date YYYY-MM-DD

SQL
滚动查看更多
SELECT current_date;

Calculate age between two dates

SQL
滚动查看更多
SELECT age(timestamp, timestamp);

Show current time with time zone

SQL
滚动查看更多
SELECT current_time;

Make dates using integers

SQL
滚动查看更多
SELECT make_date(2021,03,25);

PostgreSQL Commands

Tables
--
\d <table>Describe table
\d+ <table>Describe table with details
\dtList tables from current schema
\dt *.*List tables from all schemas
\dt <schema>.*List tables for a schema
\dpList table access privileges
\det[+]List foreign tables
Query buffer
--
\e [FILE]Edit the query buffer (or file)
\ef [FUNC]Edit function definition
\pShow the contents
\rReset (clear) the query buffer
\s [FILE]Display history or save it to file
\w FILEWrite query buffer to file
Informational
--
\l[+]List all databases
\dn[S+]List schemas
\di[S+]List indexes
\du[+]List roles
\ds[S+]List sequences
\df[antw][S+]List functions
\deu[+]List user mappings
\dv[S+]List views
\dlList large objects
\dT[S+]List data types
\da[S]List aggregates
\db[+]List tablespaces
\dc[S+]List conversions
\dC[+]List casts
\ddpList default privileges
\dd[S]Show object descriptions
\dD[S+]List domains
\des[+]List foreign servers
\dew[+]List foreign-data wrappers
\dF[+]List text search configurations
\dFd[+]List text search dictionaries
\dFp[+]List text search parsers
\dFt[+]List text search templates
\dL[S+]List procedural languages
\do[S]List operators
\dO[S+]List collations
\drdsList per-database role settings
\dx[+]List extensions

S: show system objects, +: additional detail

Connection
--
\c [DBNAME]Connect to new database
\encoding [ENCODING]Show or set client encoding
\password [USER]Change the password
\conninfoDisplay information
Formatting
--
\aToggle between unaligned and aligned
\C [STRING]Set table title, or unset if none
\f [STRING]Show or set field separator for unaligned
\HToggle HTML output mode
<code>\t [on|off]</code>Show only rows
\T [STRING]Set or unset HTML <table> tag attributes
<code>\x [on|off]</code>Toggle expanded output
Input/Output
--
\copy ...Import/export table<br> See also: copy
\echo [STRING]Print string
\i FILEExecute file
\o [FILE]Export all results to file
\qecho [STRING]String to output stream
Variables
--
\prompt [TEXT] NAMESet variable
\set [NAME [VALUE]]Set variable (or list all if no parameters)
\unset NAMEDelete variable
Misc
--
\cd [DIR]Change the directory
<code>\timing [on|off]</code>Toggle timing
\! [COMMAND]Execute in shell
\! ls -lList all in shell
Large Objects
  • \lo_export LOBOID FILE
  • \lo_import FILE [COMMENT]
  • \lo_list
  • \lo_unlink LOBOID

{.marker-none}

Miscellaneous

Backup

Use pg_dumpall to backup all databases

SHELL
滚动查看更多
$ pg_dumpall -U postgres > all.sql

Use pg_dump to backup a database

SHELL
滚动查看更多
$ pg_dump -d mydb -f mydb_backup.sql
--
-aDump only the data, not the schema
-sDump only the schema, no data
-cDrop database before recreating
-CCreate database before restoring
-tDump the named table(s) only
-FFormat (c: custom, d: directory, t: tar)

Use pg_dump -? to get the full list of options

Restore

Restore a database with psql

SHELL
滚动查看更多
$ psql -U user mydb < mydb_backup.sql

Restore a database with pg_restore

SHELL
滚动查看更多
$ pg_restore -d mydb mydb_backup.sql -c
--
-USpecify a database user
-cDrop database before recreating
-CCreate database before restoring
-eExit if an error has encountered
-FFormat (c: custom, d: directory, t: tar, p: plain text sql(default))

{.marker-none}

Use pg_restore -? to get the full list of options

Remote access

Get location of postgresql.conf

SHELL
滚动查看更多
$ psql -U postgres -c 'SHOW config_file'

Append to postgresql.conf

SHELL
滚动查看更多
listen_addresses = '*'

Append to pg_hba.conf (Same location as postgresql.conf)

SHELL
滚动查看更多
host  all  all  0.0.0.0/0  md5
host  all  all  ::/0       md5

Restart PostgreSQL server

SHELL
滚动查看更多
$ sudo systemctl restart postgresql
Import/Export CSV

Export table into CSV file

SHELL
滚动查看更多
\copy table TO '<path>' CSV
\copy table(col1,col1) TO '<path>' CSV
\copy (SELECT...) TO '<path>' CSV

Import CSV file into table

SHELL
滚动查看更多
\copy table FROM '<path>' CSV
\copy table(col1,col1) FROM '<path>' CSV

See also: Copy

Also see

相关 Cheat Sheets

1v1免费职业咨询
logo

Follow Us

linkedinfacebooktwitterinstagramweiboyoutubebilibilitiktokxigua

We Accept

/image/layout/pay-paypal.png/image/layout/pay-visa.png/image/layout/pay-master-card.png/image/layout/pay-airwallex.png/image/layout/pay-alipay.png

地址

Level 10b, 144 Edward Street, Brisbane CBD(Headquarter)
Level 2, 171 La Trobe St, Melbourne VIC 3000
四川省成都市武侯区桂溪街道天府大道中段500号D5东方希望天祥广场B座45A13号
Business Hub, 155 Waymouth St, Adelaide SA 5000

Disclaimer

footer-disclaimerfooter-disclaimer

JR Academy acknowledges Traditional Owners of Country throughout Australia and recognises the continuing connection to lands, waters and communities. We pay our respect to Aboriginal and Torres Strait Islander cultures; and to Elders past and present. Aboriginal and Torres Strait Islander peoples should be aware that this website may contain images or names of people who have since passed away.

匠人学院网站上的所有内容,包括课程材料、徽标和匠人学院网站上提供的信息,均受澳大利亚政府知识产权法的保护。严禁未经授权使用、销售、分发、复制或修改。违规行为可能会导致法律诉讼。通过访问我们的网站,您同意尊重我们的知识产权。 JR Academy Pty Ltd 保留所有权利,包括专利、商标和版权。任何侵权行为都将受到法律追究。查看用户协议

© 2017-2025 JR Academy Pty Ltd. All rights reserved.

ABN 26621887572