[ About | Licence | Contacts ]
Written by Oleksandr Gavenko (AKA gavenkoa), compiled on 2017-02-14 from rev 652aca73fc06+.


Installing on Debian.

Install and create new user and database:

$ sudo apt-get install postgresql postgresql-client
$ sudo su - postgres
% psql
postgres=# CREATE USER "mypguser" WITH PASSWORD 'mypguserpass';
postgres=# CREATE DATABASE "mypgdatabase" OWNER "mypguser";
postgres=# \q

Connect as user mypguser to new database:

$ su - mypguser
$ psql mypgdatabase

In order to create local host superuser:

$ sudo su - postgres
$ createuser --superuser USER
$ exit
$ sudo -u USER psql
Debian wiki instructions.

List databases, schemas and tables.

Default database is postgres.

To list databases and database locales:

$ psql -U pgadmin -l


=> SELECT datname FROM pg_database WHERE datistemplate = false;
=> \l

To switch databases:

=> \connect NAME


=> select schema_name from information_schema.schemata;
=> select nspname from pg_catalog.pg_namespace;
=> \dn *

To list all tables in the current database:

=> SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;
=> \dt

Set default schema.

set search_path to NAME;

Database, table, index size.

Database size:

SELECT pg_database_size('geekdb');  -- in bytes
SELECT pg_size_pretty(pg_database_size('dbname'));

List of databases sizes:


List tables sizes:


Table total size (with indexes):

SELECT pg_size_pretty(pg_total_relation_size('schemaname.tablename'));

Sole table size (without indexes and other):

SELECT pg_size_pretty(pg_relation_size('schemaname.tablename'));

Largest table in the PostgreSQL database:

SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;

Using psql client.

Using password file ~/.pgpass:

# comment

Connect by:

$ psql -U $USER -h $HOST  $SCHEMA

How to view execution plan:

EXPLAIN query;

How to redirect the output of query to a file:

\o output_file
SELECT * FROM pg_class;