Creating (Inserting) Data
What is Creating (Inserting) Data in PostgreSQL?
Creating (inserting) data in Postgres means adding a new row or rows to a database table providing literal (constant) or scalar expression values for cells of the row or rows and/or instructing Postgres to supplement the unprovided values with the default column values.
In turn, adding a new column to a table is not denoted as creating (inserting) data but as altering that table.
The Insert Command
To create a new row (to insert a new row) use the SQL INSERT INTO command appended with the:
- required table name,
- optional column order (if no such order is provided values are inserted in the table column order),
- required values prepended with the
VALUESkey word.
INSERT INTO users VALUES ('test@example.net', 'John', 'Doe');
INSERT INTO users (email, first_name, last_name) VALUES ('test@example.net', 'John', 'Doe');
INSERT INTO users (last_name, email) VALUES 'test@example.net', 'Doe';Default Values
It is possible to instruct Postgres to use default values for unprovided row cell values:
- implicitly without using the
DEFAULTkey word and simply not provided a value for a given cell, - explicitly with using the
DEFAULTkey word.
For example, for a table users with the first_name, last_name columns and a column role with the default 'client' value we can create a new row with the said default in the following manners.
INSERT INTO users (first_name, last_name, role) VALUES ('John', 'Doe');INSERT INTO users (first_name, last_name, role) VALUES ('John', 'Doe', DEFAULT);INSERT INTO users DEFAULT VALUES;Inserting Multiple Rows
It is possible to insert multiple rows simultaneously.
INSERT INTO users (first_name, last_name)
VALUES ('John', 'Doe'), ('Geralt', 'of Rivia'), ('Jean-Luc', 'Picard');Inserting Subquery Result
As a SELECT query result consists of literal values it can be used as values for the INSERT INTO command.