Database — tự học SQL Server, PostgreSQL, MySQL
Tài liệu tự học 3 RDBMS phổ biến. Mỗi DB có lý thuyết + thực hành + phần highlight câu phỏng vấn + Q và A tổng hợp.
Bạn đang ở đâu trong tài liệu?
Mỗi RDBMS được tổ chức theo cùng một khung gồm 5 trang:
1. Giới thiệu & cài đặt — version mới nhất, install bằng Docker, tool quản lý
2. Cú pháp cơ bản — DDL, DML, kiểu dữ liệu
3. Truy vấn nâng cao — JOIN, subquery, window, CTE, transaction
4. Đặc thù & performance — feature riêng của hệ + tối ưu, index, explain
5. Câu hỏi phỏng vấn — tổng hợp Q&A nhà tuyển dụng hay hỏi
Convention: mọi đoạn có icon ⭐ là kiến thức hay được hỏi phỏng vấn. Đọc lướt cũng phải nhớ những chỗ này.
Chọn database nào?
SQL Server
Microsoft SQL Server 2025 (17.x) — bản mới nhất 11/2025. Mạnh ở enterprise Windows, .NET, banking VN. T-SQL phong phú, tooling SSMS chín nhất.
PostgreSQL
PostgreSQL 18 (25/09/2025). Open-source, mạnh ở JSONB, GIS (PostGIS), extension. Default cho startup VN, web service, Supabase.
So sánh nhanh
| Tiêu chí | SQL Server | PostgreSQL | MySQL |
|---|---|---|---|
| License | Thương mại (có Express miễn phí) | Open-source PostgreSQL License | Dual-license GPL / commercial (Oracle) |
| Version mới nhất | 2025 (17.x) | 18 | 9.7 LTS (kèm 8.4 LTS) |
| Stack phổ biến VN | .NET, banking, enterprise | Node.js, Python, startup | PHP/Laravel, WordPress |
| Procedural language | T-SQL | PL/pgSQL (+ PL/Python, PL/Perl…) | SQL stored proc |
| JSON | JSON mới (2025), OPENJSON | JSONB mạnh nhất | JSON cơ bản |
| Window function | ✅ Đầy đủ | ✅ Đầy đủ + nhiều nhất | ✅ Từ 8.0 |
| CTE recursive | ✅ | ✅ | ✅ |
| Materialized View | ❌ (Indexed View thay) | ✅ | ❌ |
| Array type | ❌ | ✅ Native | ❌ |
| Trigger | ✅ AFTER + INSTEAD OF | ✅ Đa dạng | ✅ AFTER + BEFORE |
| Default isolation | READ COMMITTED | READ COMMITTED | REPEATABLE READ |
| Replication | Always On, Log Shipping | Streaming, Logical | Source/Replica, Group Replication |
| GUI tool phổ biến | SSMS, Azure Data Studio | pgAdmin, DBeaver, TablePlus | MySQL Workbench, DBeaver |
Học theo thứ tự nào?
Nếu đã biết SQL cơ bản (SELECT/JOIN/GROUP BY): chọn DB nào hợp công việc → đi thẳng vào "Đặc thù & performance" + "Câu hỏi phỏng vấn".
Nếu chưa biết SQL: học PostgreSQL trước (cú pháp chuẩn ANSI nhất), sau đó dễ chuyển sang 2 DB còn lại.
Mục tiêu chung: sau khi xong section này, bạn phải trả lời được "INDEX là gì? Khi nào không nên tạo?", viết được query có CTE + window function, hiểu được ACID và 4 isolation level, biết debug query chậm.
Common terminology (3 DB đều dùng)
| English | VN | Ý nghĩa |
|---|---|---|
| Database / Schema | Cơ sở dữ liệu / Lược đồ | Container chứa table |
| Table / Row / Column | Bảng / Hàng / Cột | Đơn vị lưu trữ |
| Primary Key (PK) | Khoá chính | Định danh row, duy nhất + không null |
| Foreign Key (FK) | Khoá ngoại | Tham chiếu PK của bảng khác |
| Index | Chỉ mục | B-tree giúp tìm row nhanh |
| Query plan | Kế hoạch thực thi | Engine quyết định cách thực thi query |
| Transaction | Giao dịch | Nhóm thao tác atomic |
| Lock | Khoá | Cơ chế tránh race condition |
| MVCC | Multi-Version Concurrency Control | Tạo snapshot data cho mỗi transaction, đọc không block ghi |
| WAL / Redo log | Write-Ahead Log | Log để recovery sau crash |
Bắt đầu với SQL Server, hoặc đi thẳng tới PostgreSQL / MySQL. Xem thêm Supabase (BaaS) — nền tảng backend trên PostgreSQL.