Menu
CoddyTech

Cheat sheet SQL

Cập nhật lần cuối

Truy vấn dữ liệu (SELECT)

Phần cốt lõi của SQL: đọc các hàng từ một hoặc nhiều bảng.

Thao tácCú pháp
Chọn tất cả các cộtSELECT * FROM users;
Chọn một số cộtSELECT id, name FROM users;
Đổi tên cột (alias)SELECT name AS full_name FROM users;
Giá trị không trùng lặpSELECT DISTINCT country FROM users;
Giới hạn số hàngSELECT * FROM users LIMIT 10;
Bỏ qua rồi giới hạn (phân trang)SELECT * FROM users LIMIT 10 OFFSET 20;
Đếm số hàngSELECT COUNT(*) FROM users;

Lọc hàng (WHERE)

Thu hẹp các hàng mà truy vấn trả về.

Thao tácCú pháp
So sánh bằng / so sánh khácWHERE age >= 18
Nhiều điều kiện cùng lúcWHERE age >= 18 AND country = 'US'
Một trong hai điều kiệnWHERE role = 'admin' OR role = 'owner'
Thuộc một tập giá trịWHERE country IN ('US', 'CA', 'MX')
Nằm trong một khoảngWHERE price BETWEEN 10 AND 50
So khớp theo mẫuWHERE email LIKE '%@gmail.com'
Là / không là nullWHERE deleted_at IS NULL
Phủ địnhWHERE status NOT IN ('archived')

Sắp xếp và gom nhóm

Thao tácCú pháp
Sắp xếp tăng dần (mặc định)ORDER BY created_at
Sắp xếp giảm dầnORDER BY created_at DESC
Sắp xếp theo nhiều cộtORDER BY country, name DESC
Gom nhóm các hàngSELECT country, COUNT(*) FROM users GROUP BY country;
Lọc các nhómGROUP BY country HAVING COUNT(*) > 100

JOIN

Kết hợp các hàng từ hai bảng dựa trên một cột khớp nhau.

Kiểu JOINKết quả trả vềCú pháp
INNER JOINChỉ các hàng khớp ở cả hai bảngFROM orders o INNER JOIN users u ON o.user_id = u.id
LEFT JOINMọi hàng bên trái kèm các hàng khớp (còn lại là null)FROM users u LEFT JOIN orders o ON o.user_id = u.id
RIGHT JOINMọi hàng bên phải kèm các hàng khớpFROM orders o RIGHT JOIN users u ON o.user_id = u.id
FULL OUTER JOINMọi hàng của cả hai bênFROM a FULL OUTER JOIN b ON a.id = b.a_id
CROSS JOINMọi tổ hợp (tích Descartes)FROM sizes CROSS JOIN colors
Tự JOIN (self join)Bảng được JOIN với chính nóFROM employees e JOIN employees m ON e.manager_id = m.id

Hàm tổng hợp

Tính ra một giá trị duy nhất trên một nhóm hàng.

HàmTác dụng
COUNT(*)Số hàng
COUNT(col)Số giá trị khác null
SUM(col)Tổng của một cột số
AVG(col)Giá trị trung bình
MIN(col) / MAX(col)Giá trị nhỏ nhất / lớn nhất
STRING_AGG(col, ',')Nối các giá trị (Postgres; GROUP_CONCAT trong MySQL)

Window function

Tính toán trên một tập hàng mà không gộp chúng lại thành một.

HàmCú pháp
Số thứ tự hàngROW_NUMBER() OVER (ORDER BY score DESC)
Xếp hạng (có nhảy hạng)RANK() OVER (PARTITION BY country ORDER BY score DESC)
Xếp hạng liên tiếp (dense rank)DENSE_RANK() OVER (ORDER BY score DESC)
Tổng lũy kếSUM(amount) OVER (ORDER BY created_at)
Hàng trước / hàng sauLAG(score) OVER (ORDER BY date), LEAD(score) OVER (...)

Thay đổi dữ liệu (INSERT, UPDATE, DELETE)

Thao tácCú pháp
Thêm một hàngINSERT INTO users (name, email) VALUES ('Ada', 'ada@x.com');
Thêm nhiều hàngINSERT INTO users (name) VALUES ('Ada'), ('Alan');
Cập nhật hàngUPDATE users SET active = true WHERE id = 1;
Xóa hàngDELETE FROM users WHERE active = false;
Upsert (Postgres/SQLite)INSERT ... ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name;

Định nghĩa bảng (DDL)

Thao tácCú pháp
Tạo bảngCREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);
Thêm cộtALTER TABLE users ADD COLUMN age INTEGER;
Xóa cộtALTER TABLE users DROP COLUMN age;
Xóa bảngDROP TABLE users;
Tạo indexCREATE INDEX idx_users_email ON users (email);
Khóa ngoạiFOREIGN KEY (user_id) REFERENCES users (id)

Mọi câu lệnh, mệnh đề và kiểu JOIN trong SQL bạn hay dùng, gom trong một trang. Cheat sheet SQL này là bảng tra cứu nhanh để truy vấn và thay đổi dữ liệu quan hệ: các mệnh đề SELECT, bốn kiểu JOIN, gom nhóm và tổng hợp, cùng các lệnh DDL và DML để tạo và cập nhật bảng.

Cú pháp ở đây là SQL chuẩn ANSI, chạy được trên PostgreSQL, MySQL, SQLite và SQL Server, trừ khi có ghi chú khác. Sao chép phần bạn cần, hoặc chạy thử mọi truy vấn ngay trong playground SQL, không cần cài cơ sở dữ liệu. Mới làm quen với cơ sở dữ liệu? Khóa học SQL tương tác miễn phí của Coddy hướng dẫn bạn qua truy vấn, JOIN và tổng hợp dữ liệu.

Câu hỏi thường gặp về cheat sheet SQL

Cheat sheet SQL này có miễn phí không?

Có. Cheat sheet SQL này hoàn toàn miễn phí, không cần đăng ký. Lưu trang lại và quay lại bất cứ khi nào bạn cần tra một mệnh đề, một kiểu JOIN hay một hàm.

Cheat sheet này có dùng được cho MySQL, PostgreSQL và SQLite không?
Phần lớn là có. Cú pháp SELECT, WHERE, JOIN, GROUP BY và DDL ở đây là SQL chuẩn ANSI, chạy giống nhau trên MySQL, PostgreSQL, SQLite và SQL Server. Một vài tính năng nâng cao khác nhau giữa các phương ngữ SQL, thường gặp nhất là upsert và nối chuỗi khi tổng hợp, và các hàng đó đều ghi chú điểm khác biệt.
INNER JOIN và LEFT JOIN khác nhau thế nào?
INNER JOIN chỉ trả về các hàng có giá trị khớp ở cả hai bảng. LEFT JOIN trả về mọi hàng của bảng bên trái (bảng thứ nhất) và điền NULL vào các cột của bảng bên phải khi không có hàng khớp. Cách này hữu ích khi bạn muốn lấy mọi người dùng, kể cả những người chưa có đơn hàng nào.
Có thể luyện tập các lệnh SQL này online không?
Có. Mở playground SQL để chạy bất kỳ truy vấn nào trong cheat sheet này trên một cơ sở dữ liệu thật ngay trong trình duyệt, không cần cài đặt. Khi muốn học có lộ trình, khóa học SQL tương tác miễn phí của Coddy dẫn bạn từng bước từ SELECT đến JOIN và window function.
Cheat sheet này có phù hợp cho người mới bắt đầu không?

Có. Nội dung đi từ các thao tác thông dụng nhất (truy vấn và lọc dữ liệu) đến các thao tác nâng cao (window function), nên ngay ngày đầu bạn đã dùng được các phần trên cùng, rồi dần làm quen với phần còn lại.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học SQL cùng Coddy

Bắt đầu