Learn Postgres with Me: Day -3 -Inserting Data and Querying Data in [PSQl]

Learn Postgres with Me: Day -3 -Inserting Data and Querying Data in [PSQl]

ยท

4 min read

inserting Data in PostgreSQL

PostgreSQL provides several ways to insert data into a table. Here we'll cover the main methods and options for inserting data.

The INSERT Statement

The primary way to insert data is the INSERT statement. The basic syntax is:

INSERT INTO table (column1, column2) 
VALUES (value1, value2);

This will insert one row into the table with the specified column values.

You can insert multiple rows at once by providing multiple value sets:

INSERT INTO table (column1, column2)
VALUES 
  (value1, value2),
  (value3, value4),
  (value5, value6);

The column names are optional and PostgreSQL will insert values into columns in the declared order.

Inserting Hierarchical Data

For nested inserts into related tables, PostgreSQL supports the INSERT statement with SELECT sub-queries:

WITH new_users AS (
  INSERT INTO users (name) 
  VALUES ('John'), ('Jane') 
  RETURNING id
)
INSERT INTO addresses (user_id, address)
SELECT id, 'Example Street' FROM new_users;

This will first insert two new users, capture their generated ids, and then insert addresses for them.

Inserting from Another Table

You can populate a table by selecting rows from another table:

INSERT INTO table2
SELECT * FROM table1
WHERE id < 5;

This is useful for copying subsets of data between tables.

Upserts

PostgreSQL has upsert capability with the ON CONFLICT clause. This lets you specify an alternative action if an insert would violate a constraint like a primary key.

For example:

INSERT INTO table (id, name) 
VALUES (1, 'John')
ON CONFLICT (id) DO UPDATE
SET name = EXCLUDED.name;

If id 1 already exists, this will update that row instead of throwing an error.

Insert Performance

There are also some performance considerations for batch inserts. For very large inserts, wrapping multiple INSERT statements in a transaction can help performance by not needing to commit after every statement. Disabling auto-commit is also beneficial for bulk inserts.

In summary, PostgreSQL provides a full-featured set of options for inserting new data into tables for both simple and complex use cases. The INSERT statement along with the other techniques covered here should provide you with everything needed for most scenarios.

Mastering Data Queries in PostgreSQL

PostgreSQL offers incredibly powerful capabilities for querying and manipulating data in your tables. In this comprehensive guide, we will explore all of the fundamental PostgreSQL query concepts including:

  • The SELECT statement

  • Filtering with WHERE

  • Sorting with ORDER BY

  • Limiting, offsetting, and pagination

  • Grouping and aggregate functions

By the end, you will have expert-level knowledge of how to access and analyze data in PostgreSQL.

The SELECT Statement

The SELECT statement retrieves data from a table. Its basic syntax:

SELECT columns FROM table;

For example:

SELECT * FROM users;

Results:

idnameemailage
1John Doe30
2Jane Smith28

To select specific columns:

SELECT name, email FROM users;

Results:

nameemail
John Doe
Jane Smith

Filtering with WHERE

Add a WHERE clause to filter results:

SELECT * FROM users
WHERE age > 30;

Results:

idnameemailage
1John Doe35

Supports operators like =, !=, <, >, BETWEEN etc. Combine with AND/OR.

SELECT * FROM users
WHERE age BETWEEN 20 AND 30
AND name LIKE '%Smith';

Sorting with ORDER BY

ORDER BY sorts the results:

SELECT * FROM users
ORDER BY name DESC;

Results:

idnameemailage
2Jane Smith28
1John Doe35

Sort by multiple columns:

SELECT * FROM users
ORDER BY age, name ASC;

Limiting and Pagination

Limit rows with LIMIT:

SELECT * FROM users
LIMIT 5;

Results:

idnameemailage
1John Doe35
2Jane Smith28

Paginate with LIMIT and OFFSET:

SELECT * FROM users
LIMIT 10 OFFSET 20;

Grouping and Aggregates

Group by one or more columns with GROUP BY:

SELECT age, COUNT(*)
FROM users
GROUP BY age;

Results:

agecount
281
351

Combine with aggregates like COUNT, MAX, AVG:

SELECT MAX(age), COUNT(*)
FROM users
GROUP BY email;

Conclusion

This covers key querying concepts in PostgreSQL - SELECT statements, WHERE, ORDER BY, LIMIT, GROUP BY and more. With mastery of these techniques, you can query PostgreSQL databases like an expert.

ย