🗃️ What is SQL?
SQL (Structured Query Language) is a standardized language for managing and manipulating relational databases. It allows you to create, read, update, and delete data stored in tables with defined relationships.
Key Features:
- • Declarative language (what, not how)
- • Standardized across database systems
- • Powerful for complex data relationships
- • ACID compliance for data integrity
- • Mature ecosystem and tooling
Common Use Cases:
- • Web application backends
- • Business data management
- • Reporting and analytics
- • Financial systems
- • Content management systems
Core SQL Concepts
Basic Queries
SELECT, INSERT, UPDATE, DELETE operations
Table Relationships
Primary keys, foreign keys, and joins
Data Types
VARCHAR, INTEGER, DATE, BOOLEAN, etc.
Constraints
NOT NULL, UNIQUE, CHECK constraints
Essential SQL Commands
📝 Basic SQL Operations
-- Create a table
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(150) UNIQUE NOT NULL,
age INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Insert data
INSERT INTO users (name, email, age)
VALUES ('Alice Johnson', 'alice@example.com', 28);
INSERT INTO users (name, email, age)
VALUES
('Bob Smith', 'bob@example.com', 35),
('Carol Davis', 'carol@example.com', 42);
-- Select data
SELECT * FROM users;
SELECT name, email FROM users WHERE age > 30;
SELECT COUNT(*) FROM users;
-- Update data
UPDATE users
SET age = 29
WHERE name = 'Alice Johnson';
-- Delete data
DELETE FROM users WHERE age < 25;Advanced SQL Concepts
🔗 Joins and Relationships
-- Create related tables
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
product_name VARCHAR(100),
quantity INTEGER,
price DECIMAL(10,2),
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Inner Join - Get users with their orders
SELECT u.name, u.email, o.product_name, o.quantity, o.price
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- Left Join - Get all users, including those without orders
SELECT u.name, u.email, o.product_name
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
-- Aggregate functions with GROUP BY
SELECT u.name, COUNT(o.id) as order_count, SUM(o.price) as total_spent
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 0;
-- Subqueries
SELECT name, email
FROM users
WHERE id IN (
SELECT user_id
FROM orders
WHERE price > 100
);Popular SQL Databases
PostgreSQL
Advanced open-source relational database
Advantages:
Best For:
Complex applications, data analytics, web applications
MySQL
Popular open-source database
Advantages:
Best For:
Web applications, content management, e-commerce
SQLite
Lightweight, serverless database
Advantages:
Best For:
Mobile apps, prototyping, small applications
SQL Server
Microsoft's enterprise database
Advantages:
Best For:
Enterprise applications, .NET ecosystem, business intelligence
🎯 SQL Learning Path
Basic Queries (1-2 weeks)
SELECT, INSERT, UPDATE, DELETE, WHERE clauses
Database Design (2-3 weeks)
Tables, relationships, normalization, constraints
Advanced Queries (3-4 weeks)
JOINs, subqueries, aggregate functions, window functions
Performance & Administration (Ongoing)
Indexing, query optimization, backup, security
📚 SQL Learning Resources
Free Resources:
- • W3Schools SQL Tutorial
- • SQLBolt (Interactive lessons)
- • PostgreSQL Tutorial
- • MySQL Documentation
- • SQLite Tutorial
Practice Platforms:
- • HackerRank SQL challenges
- • LeetCode Database problems
- • SQLZoo interactive tutorials
- • DB Fiddle (online SQL editor)
- • Sample databases (Northwind, Sakila)