Skip to main content

Command Palette

Search for a command to run...

PostgreSQL Basics: A Beginner's Guide

Updated
4 min read
PostgreSQL Basics: A Beginner's Guide

PostgreSQL, often called Postgres, is one of the most powerful and popular open-source relational database management systems. Whether you're building a web application, managing business data, or learning database fundamentals, PostgreSQL is an excellent choice. This guide will walk you through the essential concepts and commands to get started.

What is PostgreSQL?

PostgreSQL is an advanced, enterprise-class relational database system that supports both SQL (relational) and JSON (non-relational) querying. It's known for its reliability, feature robustness, and performance. Major companies like Instagram, Spotify, and Reddit use PostgreSQL to power their applications.

Getting Started with PostgreSQL Online You don't need to install anything on your computer to start learning PostgreSQL! There are several free online PostgreSQL sandboxes where you can practice right in your browser:

  • DB Fiddle (db-fiddle.com) - SQL database playground for testing, debugging and sharing SQL snippets

  • OneCompiler - Robust, feature-rich online editor and compiler for PostgreSQL

These platforms let you write and execute PostgreSQL commands immediately, making it perfect for learning and experimentation without any setup required! Essential PostgreSQL Commands Creating a Database

These platforms let you write and execute PostgreSQL commands immediately, making it perfect for learning and experimentation without any setup required!

Essential PostgreSQL Commands

Creating a Database

sql

CREATE DATABASE mystore;

To connect to your new database:

sql

\c mystore

Creating Tables

Tables are where your data lives. Here's how to create a simple products table:

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price DECIMAL(10, 2),
    stock_quantity INTEGER DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Key points:

  • SERIAL creates an auto-incrementing integer

  • PRIMARY KEY uniquely identifies each row

  • VARCHAR(100) is a variable-length string with max 100 characters

  • NOT NULL ensures the field must have a value

  • DEFAULT sets a default value if none is provided

Inserting Data

Add data to your table with INSERT:

sql

INSERT INTO products (name, price, stock_quantity)
VALUES ('Laptop', 999.99, 15);

INSERT INTO products (name, price, stock_quantity)
VALUES 
    ('Mouse', 25.50, 100),
    ('Keyboard', 75.00, 50),
    ('Monitor', 299.99, 30);

Querying Data

The SELECT statement retrieves data:

sql

-- Get all products
SELECT * FROM products;

-- Get specific columns
SELECT name, price FROM products;

-- Filter results
SELECT * FROM products WHERE price > 50;

-- Sort results
SELECT * FROM products ORDER BY price DESC;

-- Limit results
SELECT * FROM products LIMIT 5;

Updating Data

Modify existing records with UPDATE:

sql

UPDATE products 
SET price = 899.99, stock_quantity = 20 
WHERE name = 'Laptop';

Always use a WHERE clause to avoid updating all rows accidentally!

Deleting Data

Remove records with DELETE:

sql

DELETE FROM products WHERE stock_quantity = 0;

Working with Multiple Tables

Real applications typically use multiple related tables. Here's an example with customers and orders:

sql

CREATE TABLE customers (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL
);

CREATE TABLE orders (
    id SERIAL PRIMARY KEY,
    customer_id INTEGER REFERENCES customers(id),
    product_id INTEGER REFERENCES products(id),
    quantity INTEGER NOT NULL,
    order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

The REFERENCES keyword creates a foreign key relationship, ensuring data integrity.

Joining Tables

Use JOIN to combine data from multiple tables:

sql

SELECT 
    customers.name, 
    products.name AS product_name, 
    orders.quantity,
    orders.order_date
FROM orders
JOIN customers ON orders.customer_id = customers.id
JOIN products ON orders.product_id = products.id;

Useful PostgreSQL Commands

Here are some handy psql commands:

  • \l - List all databases

  • \dt - List all tables in current database

  • \d table_name - Describe a table's structure

  • \q - Quit psql

  • \? - Show help for psql commands

  • \h - Show help for SQL commands

Basic Data Types

PostgreSQL supports many data types. Here are the most common:

  • INTEGER: Whole numbers

  • DECIMAL/NUMERIC: Precise decimal numbers

  • VARCHAR(n): Variable-length text

  • TEXT: Unlimited length text

  • BOOLEAN: True/false values

  • DATE: Date without time

  • TIMESTAMP: Date and time

  • JSON/JSONB: JSON data

Best Practices

  1. Always use transactions for multiple related operations

  2. Create indexes on columns you frequently search or join on

  3. Use constraints to maintain data integrity

  4. Back up your database regularly

  5. Never store passwords in plain text - use hashing

  6. Use prepared statements to prevent SQL injection

Next Steps

Now that you understand the basics, explore these topics:

  • Indexes for performance optimization

  • Views for complex queries

  • Transactions for data consistency

  • Stored procedures and functions

  • Full-text search capabilities

  • JSON support for flexible data structures

PostgreSQL is a powerful tool with much more to discover. Practice these basics, experiment with your own projects, and you'll be building robust database-driven applications in no time!

More from this blog

Blogs

10 posts

Few Things Which I came Across and thought of sharing Might help someone and might not.