Databases Lesson 2: SQL Basics

🗄️ Databases CourseLesson 2 of 10 · 20% complete

SQL (Structured Query Language) is the language of relational databases. Master these 4 operations and you can work with any SQL database.

CREATE & INSERT

-- Create a table
CREATE TABLE users (
  id SERIAL PRIMARY KEY,  -- auto-increment in PostgreSQL
  name VARCHAR(100) NOT NULL,
  email VARCHAR(200) UNIQUE NOT NULL,
  age INTEGER CHECK (age >= 0),
  role VARCHAR(20) DEFAULT 'user',
  created_at TIMESTAMP DEFAULT NOW()
);

-- Insert rows
INSERT INTO users (name, email, age) VALUES
  ('Alice', 'alice@example.com', 30),
  ('Bob', 'bob@example.com', 25);

SELECT, WHERE, ORDER BY

-- Select all
SELECT * FROM users;

-- Select specific columns
SELECT name, email, age FROM users;

-- Filter with WHERE
SELECT * FROM users WHERE age > 25;
SELECT * FROM users WHERE role = 'admin' AND age < 40;
SELECT * FROM users WHERE name LIKE 'A%';  -- starts with A
SELECT * FROM users WHERE age IN (25, 30, 35);

-- Sort and limit
SELECT * FROM users ORDER BY age DESC LIMIT 10 OFFSET 20;

-- Aggregations
SELECT COUNT(*) FROM users;
SELECT AVG(age), MAX(age), MIN(age) FROM users;
SELECT role, COUNT(*) as count FROM users GROUP BY role;

UPDATE & DELETE

-- ALWAYS use WHERE with UPDATE and DELETE!
UPDATE users SET role = 'admin' WHERE email = 'alice@example.com';
UPDATE users SET age = age + 1 WHERE id = 5;

-- Delete specific rows
DELETE FROM users WHERE role = 'inactive';

-- CAREFUL: this deletes EVERYTHING
-- DELETE FROM users;  -- NO WHERE clause

🏋️ Practice Task

Practice SQL on sqlzoo.net or db-fiddle.com. Create a “products” table (id, name, price, stock, category). Insert 8 products. Write queries: all products under $50, products sorted by price desc, total value of inventory (price*stock), count per category.

💡 Hint: Total inventory: SELECT SUM(price * stock) FROM products. Per category: GROUP BY category

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *