Intro
So we installed and setup PostgreSQL on our machine.
Now we want to learn how to create our first table.
Connect to the Database Shell
We've just created a user and a database in the setup article.
Now we can connect to the database shell:
psql -d [db]
My result, because I created a database "miku86-db" earlier:
miku86-db=#
psql is a terminal-based front-end to PostgreSQL, you can type in queries, issue them to PostgreSQL, and see the query results.
Basic Commands
-
psql help:
help
-
psql commands:
\?
-
SQL commands:
\h
-
quit psql:
\q
-
current connection info:
\conninfo
-
list of databases:
\l
-
connect to a database:
\c [dbname]
-
create database:
CREATE DATABASE [db];
-
delete database:
DROP DATABASE [db];
-
display tables of database:
\dt
-
display overview of table:
\d [table]
-
create table:
CREATE TABLE [table]([col][datatype] [constraints])
Create Our First Table
- Check my current connection:
miku86-db=# \conninfo
You are connected to database "miku86-db" as user "miku86" via socket in "/run/postgresql" at port "5432".
- Display tables of database:
miku86-db=# \dt
Did not find any relations.
- Create table:
miku86-db=# CREATE TABLE person (id SERIAL PRIMARY KEY, nickname TEXT NOT NULL);
CREATE TABLE
I just created a table in my database with two columns:
-
column #1: an
id
, that is aSERIAL
(= aninteger
, that always gets increased by1
) and that is aPRIMARY KEY
, meaning thatid
is a unique identifier for a row in the table, therefore the value is unique and not null -
column #2: a
nickname
, that is aTEXT
(= variable and unlimited in its length) and that isNOT NULL
, meaning thatnickname
can't be missing.
- Display overview of table:
miku86-db=# \d person
Table "public.person"
Column | Type | Collation | Nullable | Default
----------+---------+-----------+----------+------------------------------------
id | integer | | not null | nextval('person_id_seq'::regclass)
nickname | text | | not null |
Indexes:
"person_pkey" PRIMARY KEY, btree (id)
Next Part
We will read & write from/to our table.
Further Reading
Questions
- What's your favorite SQL database?