Học PostgreSQL + SQL Từ A Tới Z – Hành Trình Biến Gà Thành Pro Cơ Sở Dữ Liệu

· 3 phút đọc
Học PostgreSQL + SQL Từ A Tới Z – Hành Trình Biến Gà Thành Pro Cơ Sở Dữ Liệu
Photo by Declan Sun / Unsplash
“Em muốn trở thành backend dev!”
“Đã join table bao giờ chưa?”
“Dạ… em chỉ mới join nhóm học.”

🫠


📚 Mục tiêu

Sau bài này, bạn sẽ biết:

  • SQL là cái quái gì và tại sao ai cũng dùng
  • Cách setup PostgreSQL trên local
  • Viết được từ SELECT cơ bản đến JOIN, GROUP BY, CTE, WINDOW FUNCTION
  • Có khả năng tự tin fix bug query của đồng đội và gây war trong team (đùa)

🤔 SQL là gì?

  • SQL = Structured Query Language
  • Dùng để giao tiếp với database
  • Cụ thể: PostgreSQL, MySQL, SQL Server, Oracle… đều dùng SQL (nhưng đôi khi cú pháp hơi khác)
PostgreSQL thì như ông chú xăm trổ trầm tính, cực kỳ mạnh, chơi được JSON, CTE, Window đủ trò.

🧑‍💻 Cài PostgreSQL

🐧 Trên Ubuntu

sudo apt update
sudo apt install postgresql postgresql-contrib -y

🍎 Trên macOS (dùng Homebrew)

brew install postgresql
brew services start postgresql

🐳 Dùng Docker (cách mình recommend)

docker run --name pg-dev -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d postgres
Cổng 5432 là default của PostgreSQL

🛠️ Kết nối

Dùng terminal:

psql -h localhost -U postgres

Hoặc dùng app GUI:

  • DBeaver
  • TablePlus
  • PgAdmin
  • hoặc VSCode Extension: "PostgreSQL"

🧪 Câu lệnh SQL Cơ Bản

Tạo database

CREATE DATABASE j4fun;

Tạo bảng

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name TEXT,
  email TEXT UNIQUE,
  age INT,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Thêm dữ liệu

INSERT INTO users (name, email, age) VALUES
('Long Béo', 'longbeo@example.com', 30),
('Trà Sữa', 'trasua@bubbletea.vn', 21);

Truy vấn dữ liệu

SELECT * FROM users;

WHERE

SELECT * FROM users WHERE age >= 25;

🤝 JOIN – Tình bạn đẹp giữa các bảng

Giả sử có bảng orders:

CREATE TABLE orders (
  id SERIAL PRIMARY KEY,
  user_id INT REFERENCES users(id),
  amount NUMERIC,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Lấy danh sách đơn hàng và tên người đặt:

SELECT users.name, orders.amount
FROM orders
JOIN users ON orders.user_id = users.id;

📊 GROUP BY – Tổng hợp dữ liệu

SELECT age, COUNT(*) AS total
FROM users
GROUP BY age
ORDER BY total DESC;

🪜 CTE – Common Table Expressions

Cho bạn tách query phức tạp thành nhiều bước (cực hợp Dev có OCD):

WITH adult_users AS (
  SELECT * FROM users WHERE age >= 18
)
SELECT COUNT(*) FROM adult_users;

📈 WINDOW FUNCTION – Level max của SQL

SELECT
  name,
  age,
  RANK() OVER (ORDER BY age DESC) AS age_rank
FROM users;
Không gom nhóm như GROUP BY, nhưng vẫn cho bạn thứ hạng, tổng, trung bình theo từng dòng!

🧹 Một số tips sống còn

  • Đừng SELECT * nếu không cần, chọn trường cụ thể sẽ nhanh hơn
  • Luôn LIMIT khi test query để khỏi đốt RAM
  • EXPLAIN ANALYZE để xem query chạy có tối ưu không
  • VACUUM định kỳ nếu dùng local lâu ngày

🤓 Tài liệu học chất lượng


🧠 Roadmap học PostgreSQL Từ A-Z

  1. Hiểu được RDBMS là gì
  2. Biết tạo bảng, thêm/sửa/xoá dữ liệu (CRUD)
  3. Thành thạo SELECT + JOIN + WHERE
  4. Nắm GROUP BY + HAVING + Aggregate function
  5. Học CTE, Subquery, UNION
  6. Level max: Window Functions, Index, Partitioning
  7. Bonus: Viết query phân tích dữ liệu như dân BI

🐒 Tấu hài cuối bài

Interviewer: “Em có biết SQL không?”
Ứng viên: “Dạ em biết SELECT * FROM life WHERE happy = true mà chạy mãi không ra kết quả...”
PostgreSQL: “Syntax đúng, nhưng bảng life chưa có dữ liệu!”

✅ Tổng kết

  • PostgreSQL là hệ quản trị cơ sở dữ liệu mạnh mẽ, đáng học
  • SQL là ngôn ngữ bạn bắt buộc phải biết nếu muốn làm backend nghiêm túc
  • Tập viết query mỗi ngày là kỹ năng không thể thiếu của developer từ junior tới senior
🧃 Mỗi ngày một chút, một tháng sau bạn sẽ query mượt như trà đào mix thạch nha đam.
-- thử viết query demo để kết thúc đẹp
SELECT 'Học xong bài này là pro SQL rồi!' AS motivation;

🫶