Introduction
PostgreSQL is a powerful, open-source relational database management system (RDBMS) known for its robustness, extensibility, and compliance with SQL standards. Mastering PostgreSQL commands is essential for database administration, querying, and management. This cheat sheet provides a quick reference to some of the most commonly used PostgreSQL commands.
PostgreSQL Commands Cheat Sheet
Here’s a handy cheat sheet of the most commonly used PostgreSQL commands:
Command | Description |
---|---|
\l |
Lists all databases on the server. |
CREATE DATABASE db_name; |
Creates a new database. |
\c db_name |
Connects to the specified database. |
DROP DATABASE db_name; |
Deletes a database and all of its tables. |
\dt |
Lists all tables in the current database. |
CREATE TABLE tbl_name (column_definitions); |
Creates a new table. |
DROP TABLE tbl_name; |
Deletes a table from the database. |
\d tbl_name |
Displays the structure of a table. |
ALTER TABLE tbl_name ADD column_name column_definition; |
Adds a new column to a table. |
ALTER TABLE tbl_name DROP COLUMN column_name; |
Deletes a column from a table. |
SELECT * FROM tbl_name; |
Selects all records from a table. |
SELECT column1, column2 FROM tbl_name WHERE condition; |
Selects specific columns and records that meet a condition. |
INSERT INTO tbl_name (column1, column2) VALUES (value1, value2); |
Inserts new data into a table. |
UPDATE tbl_name SET column1 = value1, column2 = value2 WHERE condition; |
Updates existing data in a table. |
DELETE FROM tbl_name WHERE condition; |
Deletes records from a table that meet a condition. |
CREATE INDEX index_name ON tbl_name (column_name); |
Creates an index on a table. |
DROP INDEX index_name; |
Deletes an index from a table. |
CREATE USER username WITH PASSWORD 'password'; |
Creates a new user. |
GRANT ALL PRIVILEGES ON DATABASE db_name TO username; |
Grants all privileges to a user on a database. |
REVOKE ALL PRIVILEGES ON DATABASE db_name FROM username; |
Revokes all privileges from a user on a database. |
\du |
Lists all roles and users. |
DROP USER username; |
Deletes a user. |
\conninfo |
Shows the current connection information. |
SELECT version(); |
Displays the PostgreSQL version. |
SHOW ALL; |
Displays all server configuration parameters. |
EXPLAIN SELECT * FROM tbl_name; |
Shows how PostgreSQL executes a SELECT statement. |
VACUUM; |
Cleans up the database and recovers space. |
ANALYZE; |
Collects statistics about the contents of tables in the database. |
BEGIN; |
Starts a new transaction. |
COMMIT; |
Commits the current transaction. |
ROLLBACK; |
Rolls back the current transaction. |
\q |
Exits the PostgreSQL command-line tool. |
Explanation of Key Commands with Examples
\l
Description: Lists all databases on the server.
\l
Output:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
myDatabase| postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
Explanation: This command lists all the databases present on the PostgreSQL server.
CREATE DATABASE db_name;
Description: Creates a new database.
CREATE DATABASE myDatabase;
Output:
CREATE DATABASE
Explanation: This command creates a new database named myDatabase
.
\c db_name
Description: Connects to the specified database.
\c myDatabase
Output:
You are now connected to database "myDatabase" as user "postgres".
Explanation: This command switches the current database context to myDatabase
.
DROP DATABASE db_name;
Description: Deletes a database and all of its tables.
DROP DATABASE myDatabase;
Output:
DROP DATABASE
Explanation: This command deletes the database myDatabase
along with all its tables and data.
\dt
Description: Lists all tables in the current database.
\dt
Output:
List of relations
Schema | Name | Type | Owner
--------+---------------+-------+----------
public | employees | table | postgres
Explanation: This command lists all the tables present in the currently connected database.
CREATE TABLE tbl_name (column_definitions);
Description: Creates a new table.
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
position VARCHAR(100),
salary NUMERIC(10, 2)
);
Output:
CREATE TABLE
Explanation: This command creates a new table named employees
with columns id
, name
, position
, and salary
.
DROP TABLE tbl_name;
Description: Deletes a table from the database.
DROP TABLE employees;
Output:
DROP TABLE
Explanation: This command deletes the employees
table from the database.
\d tbl_name
Description: Displays the structure of a table.
\d employees
Output:
Table "public.employees"
Column | Type | Collation | Nullable | Default
---------+-----------------------+-----------+----------+------------------------------------
id | integer | | not null | nextval('employees_id_seq'::regclass)
name | character varying(100)| | |
position| character varying(100)| | |
salary | numeric(10,2) | | |
Indexes:
"employees_pkey" PRIMARY KEY, btree (id)
Explanation: This command shows the structure of the employees
table, including column names, types, and constraints.
ALTER TABLE tbl_name ADD column_name column_definition;
Description: Adds a new column to a table.
ALTER TABLE employees ADD birthdate DATE;
Output:
ALTER TABLE
Explanation: This command adds a new column birthdate
of type DATE
to the employees
table.
ALTER TABLE tbl_name DROP COLUMN column_name;
Description: Deletes a column from a table.
ALTER TABLE employees DROP COLUMN birthdate;
Output:
ALTER TABLE
Explanation: This command removes the birthdate
column from the employees
table.
SELECT * FROM tbl_name;
Description: Selects all records from a table.
SELECT * FROM employees;
Output:
id | name | position | salary
----+-----------+----------+----------
1 | John Doe | Manager | 75000.00
(1 row)
Explanation: This command retrieves all records from the employees
table.
SELECT column1, column2 FROM tbl_name WHERE condition;
Description: Selects specific columns and records that meet a condition.
SELECT name, position FROM employees WHERE salary > 50000;
Output:
name | position
-----------+----------
John Doe | Manager
(1 row)
Explanation: This command retrieves the name
and position
of employees whose salary
is greater than 50,000.
INSERT INTO tbl_name (column1, column2) VALUES (value1, value2);
Description: Inserts new data into a table.
INSERT INTO employees (name, position, salary) VALUES ('John Doe', 'Manager', 75000);
Output:
INSERT 0 1
Explanation: This command inserts a new record into the employees
table with the specified values.
UPDATE tbl_name SET column1 = value1, column2 = value2 WHERE condition;
Description: Updates existing data in a
table.
UPDATE employees SET salary = 80000 WHERE name = 'John Doe';
Output:
UPDATE 1
Explanation: This command updates the salary
of John Doe
to 80,000 in the employees
table.
DELETE FROM tbl_name WHERE condition;
Description: Deletes records from a table that meet a condition.
DELETE FROM employees WHERE name = 'John Doe';
Output:
DELETE 1
Explanation: This command deletes the record of John Doe
from the employees
table.
CREATE INDEX index_name ON tbl_name (column_name);
Description: Creates an index on a table.
CREATE INDEX idx_salary ON employees (salary);
Output:
CREATE INDEX
Explanation: This command creates an index named idx_salary
on the salary
column of the employees
table.
DROP INDEX index_name;
Description: Deletes an index from a table.
DROP INDEX idx_salary;
Output:
DROP INDEX
Explanation: This command deletes the index idx_salary
from the employees
table.
CREATE USER username WITH PASSWORD ‘password’;
Description: Creates a new user.
CREATE USER newuser WITH PASSWORD 'password';
Output:
CREATE ROLE
Explanation: This command creates a new user newuser
with the specified password.
GRANT ALL PRIVILEGES ON DATABASE db_name TO username;
Description: Grants all privileges to a user on a database.
GRANT ALL PRIVILEGES ON DATABASE myDatabase TO newuser;
Output:
GRANT
Explanation: This command grants all privileges on myDatabase
to the user newuser
.
REVOKE ALL PRIVILEGES ON DATABASE db_name FROM username;
Description: Revokes all privileges from a user on a database.
REVOKE ALL PRIVILEGES ON DATABASE myDatabase FROM newuser;
Output:
REVOKE
Explanation: This command revokes all privileges on myDatabase
from the user newuser
.
\du
Description: Lists all roles and users.
\du
Output:
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
newuser | | {}
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
Explanation: This command lists all roles and users present in the PostgreSQL server.
DROP USER username;
Description: Deletes a user.
DROP USER newuser;
Output:
DROP ROLE
Explanation: This command deletes the user newuser
.
\conninfo
Description: Shows the current connection information.
\conninfo
Output:
You are connected to database "myDatabase" as user "postgres" on host "localhost" at port "5432".
Explanation: This command shows information about the current database connection.
SELECT version();
Description: Displays the PostgreSQL version.
SELECT version();
Output:
version
----------------------------------------------------------------------------------------------------------
PostgreSQL 13.3 (Ubuntu 13.3-1.pgdg20.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, 64-bit
(1 row)
Explanation: This command retrieves the version information of the PostgreSQL server.
SHOW ALL;
Description: Displays all server configuration parameters.
SHOW ALL;
Output:
name | setting | description
----------------------------------+-----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------
allow_system_table_mods | off | Allows modifications of the structure of system tables.
application_name | psql | Sets the application name to be reported in statistics and logs.
archive_command | (disabled) | Sets the shell command that will be called to archive a WAL file.
archive_mode | off | Allows archiving of WAL files using archive_command.
(10 rows)
Explanation: This command displays the current values of all server configuration parameters.
EXPLAIN SELECT * FROM tbl_name;
Description: Shows how PostgreSQL executes a SELECT statement.
EXPLAIN SELECT * FROM employees;
Output:
QUERY PLAN
----------------------------------------------------------
Seq Scan on employees (cost=0.00..12.00 rows=200 width=32)
(1 row)
Explanation: This command provides information on how PostgreSQL executes the specified SELECT statement.
VACUUM;
Description: Cleans up the database and recovers space.
VACUUM;
Output:
VACUUM
Explanation: This command cleans up the database by reclaiming storage occupied by dead tuples.
ANALYZE;
Description: Collects statistics about the contents of tables in the database.
ANALYZE;
Output:
ANALYZE
Explanation: This command collects statistics about the contents of tables, which helps the query planner to make efficient decisions.
BEGIN;
Description: Starts a new transaction.
BEGIN;
Output:
BEGIN
Explanation: This command starts a new transaction block.
COMMIT;
Description: Commits the current transaction.
COMMIT;
Output:
COMMIT
Explanation: This command commits the current transaction, making all changes made in the transaction permanent.
ROLLBACK;
Description: Rolls back the current transaction.
ROLLBACK;
Output:
ROLLBACK
Explanation: This command rolls back the current transaction, undoing all changes made in the transaction.
\q
Description: Exits the PostgreSQL command-line tool.
\q
Output:
(Note: This command simply exits the psql shell without any output.)
Explanation: This command exits the PostgreSQL interactive terminal.
Conclusion
Mastering PostgreSQL commands is essential for efficiently managing databases and performing administrative tasks. This cheat sheet provides a quick reference to some of the most commonly used commands, helping you navigate and operate your PostgreSQL databases more effectively. Keep this guide handy to make the most of PostgreSQL. Happy coding!
By understanding and using these commands, you can simplify your database management processes, enhance your efficiency, and ensure your databases are well-maintained.