PostgreSQL is a relational database management system (RDBMS) similar to MySQL. I usually go for MySQL, but I’m going to be working on a project that uses PostgreSQL, so I need to get familiar with it.
Installation
Installation on an Ubuntu system is easy:
1
sudo apt install postgresql
Roles
PostgreSQL uses roles as method of authentication. A role is basically a user, and each role has certain permissions.
With a new installation, a postgres
role is created that is allowed to connect via peer authentication
.
Peer Authentication
This method of authentication is only allowed for local connections. It consists on checking the currently logged-in Unix username against the available roles.
This means; to log-in using the postgres
role, we need to first log-in as the postgres
user:
1
2
sudo -i -u postgres
psql
Prompt
The PostgreSQL prompt looks like this:
1
postgres=#
To exit you can use \q
or Ctrl + d
.
Working with databases
To list all the databases \list
or \l
can be used:
1
2
3
4
5
6
7
8
9
10
postgres-# \list
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+---------+-----------------------
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
By default, you will be connected to the postgres
database. \conninfo
can be used to check which database you are currently connected to:
1
2
\conninfo
You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
To create a new database:
1
CREATE DATABASE test;
You can switch databases with \connect
or \c
:
1
2
\c test
You are now connected to database "test" as user "postgres".
To delete a database:
1
DROP DATABASE test;
Woking with tables
Once connected to a database, \dt
can be used to list all the tables:
1
2
3
4
5
6
\dt *.*
List of relations
Schema | Name | Type | Owner
--------+-------+-------+----------
public | users | table | postgres
(1 row)
SQL can be used to create a new table. For example:
1
2
3
4
CREATE TABLE users(
id SERIAL PRIMARY KEY,
name VARCHAR(255)
);
SERIAL
is the equivalent of MySQL’s AUTO_INCREMENT
.
To see the structure of a table \d
can be used:
1
2
3
4
5
6
7
8
\d users
Table "public.users"
Column | Type | Collation | Nullable | Default
--------+------------------------+-----------+----------+-----------------------------------
id | integer | | not null | nextval('users_id_seq'::regclass)
name | character varying(255) | | |
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
Conclusion
In this article I covered enough to log-in to the PostgreSQL server and work with databases and tables. In another post I’ll to try to cover user management, permissions and authentication.
postgresql
linux
]