PostgreSQL: Common psql commands you should never forget

Updated: January 5, 2024 By: Guest Contributor Post a comment

Introduction

To interact with PostgreSQL databases more effectively, understanding its native command-line interface, psql, is key. Below is a comprehensive guide through the most frequently used psql commands, from the basics of connecting to a database to more advanced operations like managing users and permissions.

Basic Connection and Interaction

psql -d database_name -U user_name

This command is used to connect to a PostgreSQL database where database_name is the name of the database you wish to connect to, and user_name is the name of the user.

List Databases

\l

Once connected, listing all databases can be done with the \l (or \list) command.

Connect to a Database

\c database_name

To switch connection to a different database within psql, use \c followed by the database name.

Listing Tables

\dt

After connecting to a database, use \dt to list all tables within the current database.

Describe Table Structure

\d table_name

To view the structure of a specific table, including columns and their data types, employ \d followed by the table name.

Execute SQL Query

SELECT * FROM table_name;

To execute a SQL query from psql, simply type the query and end it with a semicolon. make sure to include the semicolon to indicate the end of the query statement.

Exiting psql

\q

To exit psql, the \q command is used.

Creating and Dropping Databases

CREATE DATABASE new_database_name;
DROP DATABASE database_name;

These commands allow you to create a new database or delete an existing one directly from the psql interface.

User Management

CREATE USER new_user WITH PASSWORD 'password';
ALTER USER user_name WITH PASSWORD 'new_password';
DROP USER user_name;

Managing users is as critical as managing databases. These commands help you create a new user, change a user’s password, and remove a user, respectively.

Granting and Revoking Privileges

GRANT ALL PRIVILEGES ON database_name TO user_name;
REVOKE ALL ON database_name FROM user_name;

Control user access to databases with the GRANT and REVOKE commands, providing or removing rights as necessary.

Exporting and Importing Data

\copy (SELECT * FROM table_name) TO '/path/to/file.csv' DELIMITER ',' CSV HEADER;
\copy table_name FROM '/path/to/file.csv' DELIMITER ',' CSV HEADER;

The \copy command is convenient for exporting data to a CSV file or importing data from one.

Viewing Command History

\s

To display your command history, type \s. This can be helpful to review past commands or troubleshoot issues.

Turning On Query Execution Timing

\timing

When diagnosing performance or optimizing queries, the \timing command comes in handy to measure how long queries take to execute.

Working with Extensions

CREATE EXTENSION IF NOT EXISTS extension_name;
DROP EXTENSION extension_name;

PostgreSQL extensions add new functionalities. To add or remove an extension, use the CREATE EXTENSION or DROP EXTENSION commands.

Transactional Control

BEGIN;
-- your transactional SQL queries here --
COMMIT;
or
ROLLBACK;

Maintaining data integrity through transactions is facilitated by the BEGIN, COMMIT, and ROLLBACK commands.

Accessing Help

\h

When you need assistance with psql commands or SQL commands syntax, \h brings up the help documentation.

Conclusion

In conclusion, familiarizing yourself with these psql commands can significantly improve your database handling and efficiency. While there are more advanced commands and functionalities, this selection forms the foundation of your interaction with PostgreSQL, ensuring you can manage your databases confidently.