---
title: "SQL Cheat Sheet dành cho người mới"
description: "Dưới đây là SQL Cheat Sheet chứa các lệnh hữu ích nhất. Các Cheat Sheet này giúp bạn tham chiếu các lệnh với các cú pháp một cách nhanh nhất."
canonical: "https://200lab.io/blog/sql-cheat-sheet-danh-cho-nguoi-moi"
published: "2022-07-29T08:36:49Z"
updated: "2026-08-21T07:18:01Z"
authors: ["Pum"]
tags: ["Data", "Cheatsheet"]
reading_minutes: 13
access: "public"
---

Bạn có thể tham khảo bài viết này để hiểu rõ hơn SQL là gì nhé!

[SQL là gì? Ưu điểm, nhược điểm và các câu lệnh trong SQL](https://200lab.io/blog/sql-la-gi) — SQL là ngôn ngữ máy tính cơ sở dữ liệu được thiết kế để truy xuất và quản lý dữ liệu trong cơ sở dữ liệu quan hệ.

Dưới đây là **SQL Cheat Sheet **chứa các lệnh hữu ích nhất. Các Cheat Sheet này sẽ giúp bạn tham chiếu các lệnh với các cú pháp một cách nhanh chóng nhất. Trong bài viết này, chúng ta sẽ chỉ tập trung vào các lệnh DDL và DML vì TCL và DCL sử dụng khá đơn giản.

## Định nghĩa về dữ liệu và truy vấn thao tác

### Lệnh ADD

**ADD** dùng để thêm một cột mới vào một bảng đã tồn tại.

**Ví dụ:**

```
ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name);

```

### Lệnh ALTER TABLE

**ALTER TABLE** được sử dụng để thêm, xóa hoặc cập nhật các cột trong một bảng đã tồn tại trước đó. Nó cũng có thể được dùng để xoá bỏ các ràng buộc toàn vẹn trên bảng hiện có.

**Ví dụ:**

```
   ALTER TABLE employee ADD last_name varchar2(255);
```

```
 ALTER TABLE employee DROP COLUMN last_name;
```

### Lệnh ALTER COLUMN

**ALTER COLUMN **dùng để thay đổi loại dữ liệu của cột.

**Ví dụ:**

```
 ALTER TABLE employee ALTER COLUMN joining_date datetime;
```

### Lệnh ALL

Toán tử **ALL **sẽ:

- Trả về kết quả là một giá trị boolean.
- Trả về TRUE nếu tất cả các giá trị con khớp với điều kiện.
- Thường được dùng với các mệnh đề SELECT, WHERE và HAVING.

**Ví dụ:**

```
SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = ‘R&D’);
```

### Lệnh AND

Toán tử **AND** sẽ:

- Được dùng để kiểm tra 2 hoặc nhiều điều kiện trong các lệnh SELECT, INSERT, UPDATE hoặc DELETE.
- Trả về TRUE khi tất cả các điều kiện trong mệnh đề WHERE được thỏa mãn.

**Ví dụ:**

```
SELECT employee_name, salary from employee WHERE city = ‘California’ AND salary > 2000;
```

### Lệnh ANY

Toán tử **ANY** sẽ:

- Trả về kết quả là một giá trị kiểu boolean.
- Trả về TRUE nếu có bất kỳ giá trị con nào khớp với điều kiện.

**Ví dụ:**‌

```
SELECT employee_id, employee_name from employee WHERE employee_id = ANY (select employee_id from department_details WHERE department = ‘HR’ OR department = ‘R&D’);
```

### Lệnh AS

**AS** được dùng để tạo tên tạm thời (gọi là bí danh) cho cột hoặc bảng.

**Ví dụ:**‌

```
SELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston';
```

### Lệnh ASC

**ASC** được sử dụng để sắp xếp dữ liệu theo thứ tự tăng dần, sử dụng theo mệnh đề ORDER BY.

**Ví dụ:**

```
SELECT employee_name, joining_date, salary from employee ORDER BY employee_name ASC;
```

### Lệnh BETWEEN

**BETWEEN** chọn các giá trị trong một phạm vi.

**Ví dụ:**

```
SELECT employee_name, joining_date, department_id from employee WHERE salary  BETWEEN 40000 AND 100000;
```

### Lệnh CASE

Câu lệnh** CASE **đi qua các điều kiện và trả về một giá trị khi điều kiện đầu tiên được đáp ứng. Nếu:

- Điều kiện là đúng, nó sẽ dừng đọc và trả về kết quả. Nếu không có điều kiện nào đúng, nó sẽ trả về giá trị trong mệnh đề ELSE.
- Không có phần ELSE và không có điều kiện nào là đúng, nó sẽ trả về NULL.

**Ví dụ:**

```
SELECT order_amount, customer_id, contact_email CASE WHEN order_amount > 3000 THEN "Eligible for 40% discount" WHEN order_amount between 2000 and 3000 THEN "Eligible for 25% discount" ELSE "Eligible for 5% discount" END FROM order_details;
```

### Lệnh CREATE DATABASE

**CREATE DATABASE** được sử dụng để tạo cơ sở dữ liệu SQL mới.

**Ví dụ:**

```
CREATE DATABASE movies_development;
```

### Lệnh CREATE TABLE

**CREATE TABLE** được sử dụng để tạo bảng mới với tên bảng và tên cột được chỉ định.

**Ví dụ:**

```
CREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255));
```

### ‌Lệnh DEFAULT

**DEFAULT** được sử dụng để thiết lập một giá trị mặc định cho một cột. Được sử dụng với các lệnh CREATE và ALTER TABLE.

**Ví dụ:**

```
CREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE);
```

```
ALTER TABLE product ALTER is_available SET DEFAULT true;
```

### Lệnh DELETE

**DELETE **được sử dụng để xóa dữ liệu khỏi bảng được chỉ định.

**Ví dụ:**

```
DELETE from employee where employee_id = 345;
```

### Lệnh DESC

**DESC** được sử dụng để sắp xếp dữ liệu theo thứ tự giảm dần, sử dụng theo mệnh đề ORDER BY.

**Ví dụ:**

```
SELECT employee_name, joining_date, salary from employee ORDER BY employee_name DESC;
```

### Lệnh DROP COLUMN

**DROP COLUMN** được dùng để xóa cột được chỉ định khỏi bảng được chỉ định.

**Ví dụ:**

```
ALTER TABLE employee DROP COLUMN employee_name;
```

### Lệnh DROP DATABASE

**DROP DATABASE** dùng để xóa toàn bộ cơ sở dữ liệu.

**Ví dụ:**

```
DROP DATABASE movies_development;
```

### Lệnh DROP DEFAULT

**DROP DEFAULT** dùng để xóa giá trị mặc định của cột được chỉ định.

**Ví dụ:**

```
ALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT;
```

### Lệnh DROP TABLE

**DROP TABLE **được dùng để xóa bảng được chỉ định.

**Ví dụ:**

```
DROP TABLE employee;
```

### Lệnh EXISTS

Toán tử **EXISTS **được sử dụng để:

- Kiểm tra sự tồn tại của bất kỳ bản ghi nào trong một truy vấn con.
- Trả về giá trị TRUE nếu truy vấn con trả về một hoặc nhiều bản ghi.

**Ví dụ:**

```
SELECT employee_id, contact_number FROM employee WHERE EXISTS (SELECT employee_id, department FROM department WHERE employee_id = 345 AND department = 'HR');
```

### Lệnh FROM

**FROM** được dùng để được sử dụng để liệt kê các bảng và các phép giao cần thiết cho câu lệnh SQL

**Ví dụ:**

```
SELECT * FROM employee; DELETE FROM employee where employee_id = 345;
```

### Lệnh GROUP BY

**GROUP BY** được dùng để kết hợp với lệnh SELECT để sắp xếp dữ liệu từ nhiều bản ghi đồng nhất vào trong các nhóm.

**Ví dụ:**

Hiển thị số lượng nhân viên ở mỗi quốc gia.

```
SELECT COUNT(employee_id), country from employee GROUP BY country;
```

Hiển thị xếp hạng trung bình nhân viên của mỗi bộ phận.

```
SELECT AVG(rating), department from employee GROUP BY department;
```

### Lệnh IN

**IN** được dùng để chọn nhiều giá trị cùng một lúc trong mệnh đề WHERE thay vì sử dụng điều kiện OR.

**Ví dụ:**

```
SELECT employee_name FROM employee WHERE country IN ('India', 'United Kingdom', 'Singapore', 'Australia');
```

### Lệnh INDEX

**INDEX** làm cho dữ liệu truy vấn hiệu quả và nhanh hơn, thường được tạo trên các cột được tìm kiếm nhiều nhất.

**Ví dụ:**

Tạo INDEX

```
CREATE INDEX idx_employee ON employee (first_name, last_name);
```

Tạo INDEX duy nhất trong đó các giá trị không thể được nhân đôi

```
CREATE UNIQUE INDEX idx_employee ON employee (first_name, last_name);
```

Xóa INDEX

```
ALTER TABLE employee DROP INDEX idx_employee;
```

### Lệnh INSERT INTO

**INSERT INTO **dùng để thêm hàng mới vào bảng.

**Ví dụ:**

```
INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, ‘Lee Cooper’, 40000, ‘Java’);
```

### Lệnh IS NULL

**IS NULL** dùng để kiểm tra các giá trị null.

**Ví dụ:**

```
SELECT employee_id from employee where employee_name IS NULL;
```

### Lệnh IS NOT NULL

**IS NOT NULL** kiểm tra các giá trị không phải là null.

**Ví dụ:**

```
SELECT employee_id, core_skill from  employee where core_skill IS NOT NULL;
```

### Lệnh LIKE

**LIKE** xác định xem một chuỗi ký tự có khớp với mẫu đã chỉ định hay không.

**Ví dụ:**

```
SELECT employee_id,  first_name, last_name  where  first_name LIKE ‘%tony’;
```

### Lệnh NOT LIKE

**NOT LIKE** xác định xem một chuỗi ký tự không khớp với mẫu đã chỉ định.

**Ví dụ:**

```
SELECT employee_id,  first_name, last_name  where  first_name NOT LIKE ‘%tony’;
```

### Lệnh OR

**OR** được dùng để kiểm tra nhiều điều kiện xem có bản ghi nào trong kết quả trả về đáp ứng được điều kiện hay không.

**Ví dụ:**

```
SELECT * from employee where country = ‘India’ OR country = ‘Australia’;
```

### Lệnh ORDER BY

**ORDER BY **được sử dụng để sắp xếp dữ liệu theo thứ tự tăng dần (theo mặc định) hoặc thứ tự được chỉ định trong truy vấn (tăng dần hoặc giảm dần).

**Ví dụ:**

```
SELECT employee_name, salary from employee ORDER BY salary DESC;
```

### Lệnh ROWNUM

**ROWNUM** được sử dụng để chỉ định số lượng bản ghi trả vềtheo mệnh đề WHERE.

**Ví dụ:**

```
SELECT * from employee where ROWNUM <= 5; This will return the first five rows in the resultset.
```

### Lệnh SELECT

**SELECT** là lệnh được dùng để lấy kết quả từ một hoặc nhiều bảng trong cơ sở dữ liệu của SQL Server.

**Ví dụ:**

```
SELECT employee_id from employee; SELECT * from employee;
```

### Lệnh SELECT INTO

**SELECT INTO** được dùng để tạo bảng từ 1 bảng sẵn có bằng cách sao chép các cột từ bảng ban đầu.

**Ví dụ:**

```
SELECT * INTO new_employee_info FROM employee; SELECT employee_name, joining_date, core_skill INTO new_employee_info FROM employee;
```

### Lệnh SELECT TOP

**SELECT TOP** dùng để chọn số lượng bản ghi được chỉ định từ bảng.

**Ví dụ:**

```
SELECT TOP 5 employee_id from employee where employee_rating = 5;
```

### Lệnh SET

**SET **dùng để đặt giá trị của một cột thành giá trị được chỉ định trong hoạt động UPDATE.

**Ví dụ:**

```
UPDATE employee SET first_name = ‘Tony’ WHERE employee_id = 345;
```

### Lệnh SOME

**SOME **dùng để so sánh một giá trị với từng giá trị trong tập dữ liệu. SOME trả về TRUE nếu có một giá trị bất kỳ trong tập dữ liệu này thỏa mãn điều kiện. SOME và ANY về cơ bản hoàn toàn giống nhau.

**Ví dụ:**

```
SELECT employee_id, employee_name from employee WHERE salary > SOME (select salary from employee WHERE department = ‘HR’);
```

### Lệnh TRUNCATE TABLE

**TRUNCATE TABLE** được sử dụng để xóa hoàn toàn các bản ghi từ một bảng đang tồn tại trong SQL.

**Ví dụ:**

```
TRUNCATE TABLE log_info;
```

### Lệnh UNION

**UNION **được dùng để kết hợp 2 bộ kết quả từ 2 hoặc nhiều lệnh SELECT. Nó sẽ xóa các hàng trùng trong các lệnh SELECT này.

**Ví dụ:**

```
SELECT city from employee UNION SELECT city from office_locations;
```

### Lệnh UNIQUE

**UNIQUE **được sử dụng để bảo đảm rằng chỉ các giá trị duy nhất được nhập vào trong cột hoặc một tập hợp các cột. Nó cho phép nhà phát triển chắc chắn rằng không có các giá trị trùng lặp được nhập vào.

**Ví dụ:**

```
CREATE TABLE employee (employee_id int NOT NULL, UNIQUE(employee_id));
```

```
ALTER TABLE employee ADD UNIQUE(employee_id);
```

### Lệnh UPDATE

**UPDATE** được dùng để cập nhật các bản ghi hiện có trên một bảng trong cơ sở dữ liệu của SQL Server.

**Ví dụ:**

```
UPDATE employee SET first_name = ‘Tony’ WHERE employee_id = 345;
```

### Lệnh VALUES

**VALUES** được sử dụng với lệnh INSERT để thêm một hàng giá trị mới vào bảng.

**Ví dụ:**

```
INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, ‘Lee Cooper’, 40000, ‘Java’);
```

### Lệnh WHERE

**WHERE** được sử dụng để chỉ định điều kiện khi lấy dữ liệu từ một bảng hoặc nối nhiều bảng với nhau. Nếu điều kiện được thỏa mãn thì nó chỉ trả về những giá trị cụ thể trong bảng.

**Ví dụ:**

```
SELECT * from employee WHERE salary > 20000;
```

## Chức năng tổng hợp

Hàm tổng hợp là các lệnh thao tác dữ liệu hoạt động trên các cột số như int và float, hữu ích trong việc lọc và sắp xếp dữ liệu ở cấp cơ sở dữ liệu. Một số hàm tổng hợp thường được sử dụng là:

### Hàm AVG

**AVG **trong SQL Server trả về giá trị trung bình của một biểu thức hay giá trị trung bình theo cột được chỉ định của các dòng được chọn.

**Ví dụ:**

```
SELECT AVG(marks) from students where subject = ‘English’;
```

### Hàm MIN

**MIN** trong SQL Server trả về giá trị nhỏ nhất của cột được chỉ định.

**Ví dụ:**

```
SELECT MIN(price) from product WHERE product_category = ‘shoes’;
```

### Hàm MAX

** MAX** trong SQL Server trả về giá trị lớn nhất của cột được chỉ định.

**Ví dụ: **

```
SELECT MAX(quantity), product_name from inventory;
```

### Hàm COUNT

**COUNT** trong SQL Server trả về số lượng các giá trị riêng biệt của cột nhất định.

**Ví dụ:**

```
SELECT COUNT(*) from employee; - returns total number of records in the employee table.<br><br>SELECT COUNT(*) from employee where salary > 20000; - returns number of employees whose salary is greater than 20000
```

### Hàm SUM

**SUM** trong SQL Server trả về tổng các giá trị của cột số được chỉ định.

**Ví dụ:**

```
SELECT SUM(marks) from students where subject = ‘English’;
```

## SQL Joins

SQL joins là phép kết nối dữ liệu từ nhiều bảng lại với nhau, nối 2 bảng, 3 bảng... với nhau. Khi bạn cần truy vấn các cột dữ liệu từ nhiều bảng khác nhau để trả về trong cùng một tập kết quả , bạn cần dùng JOIN.

### INNER JOIN (Hoặc JOIN)

Trả về tất cả các hàng khi có ít nhất một giá trị ở cả hai bảng.

**Cú pháp: **

SELECT column1, column2… from table1 **INNER JOIN** table2 on table1.columnN = table2.columnN;

**Ví dụ:**

```
select c.customer_id, o.order_id, c.customer_phone from customer c INNER JOIN order o on c.customer_id = o.customer_id;
```

### FULL OUTER JOIN (Hoặc OUTER JOIN)

Trả về tất cả các dòng đúng với 1 trong các bảng.

**Cú pháp:**

SELECT column1, column2… from table1 **FULL OUTER JOIN** table2 on table1.columnN = table2.columnN;

**Ví dụ:**

```
select c.customer_id, o.order_id, c.customer_phone from customer c FULL OUTER JOIN order o on c.customer_id = o.customer_id;
```

### LEFT OUTER JOIN (Hoặc LEFT JOIN)

Trả lại tất cả các dòng từ bảng bên trái, và các dòng đúng với điều kiện từ bảng bên phải.

**Cú pháp:**

SELECT column1, column2… from table1 **LEFT JOIN** table2 on table1.columnN = table2.columnN;

**Ví dụ:**

```
select c.country_id, c.country_name, l.location_name from country c LEFT JOIN locations l on c.country_id = l.country_id;
```

### RIGHT OUTER JOIN (Hoặc RIGHT JOIN)

Trả lại tất cả các hàng từ bảng bên phải, và các dòng thỏa mãn điều kiện từ bảng bên trái.

**Cú pháp:**

SELECT column1, column2… from table1 **RIGHT JOIN** table2 on table1.columnN = table2.columnN;

**Ví dụ:**

```
select c.country_id, c.country_name, l.location_name from country c RIGHT JOIN locations l on c.country_id = l.country_id;
```

## Tài liệu

SQL là một công cụ quan trọng cho các nhà phát triển phần mềm, nhà khoa học dữ liệu (data scientists) và các nhà phân tích (data analysts). Một tài liệu tham khảo tiện dụng của các lệnh SQL dưới dạng cheat sheet có thể giúp bạn tiết kiệm rất nhiều thời gian và giúp bạn hiểu được đầu ra dự kiến ​​của mỗi từ khóa.

Để biết thêm thông tin, vui lòng tham khảo các tài nguyên sau:

[SQL Tutorial: SQL Cheat Sheet](<https://www.sqltutorial.org/sql-cheat-sheet>)

[Intellipaat: SQL Commands Cheat Sheet](<https://intellipaat.com/mediaFiles/2019/02/SQL-Commands-Cheat-Sheet.pdf>)

WebsiteSetup: SQL Cheat Sheet

[ProgrammingWithMosh: SQL Cheat Sheet](<https://programmingwithmosh.com/wp-content/uploads/2019/03/SQL-Cheat-Sheet.pdf>)

[PostgreSQL Cheat Sheet](<https://www.postgresqltutorial.com/wp-content/uploads/2018/03/PostgreSQL-Cheat-Sheet.pdf>)

Bài viết được dịch từ [đây.](<https://geekflare.com/sql-cheat-sheet?fbclid=IwAR3zEnVprRdyPpe_XJVjrE9L3TCHkqzB7pl7WbJJoPG7ZCUPUF6HE-jdlno>)

Nếu bạn có định hướng trở thành **Data Analyst chuyên nghiệp** thì bạn có thể tham khảo bộ khóa học toàn diện chuyên nghiệp với **combo 4 khóa học** trong **1 bootcamp** của **200Lab **tại [đây](<https://200lab.io/khoa-hoc/khoa-hoc-data-analysis?fbclid=IwAR0W-b0konuLmIz9ZjOcSLit5obpxi0WTgtrtvnhDeIwgQM9DgwHKAQLCDE>).

Ngoài ra, bạn có thể nhấn vào[link](<https://zalo.me/g/ofnepz110?fbclid=IwAR3Jkq4g--18-FfbJvPx80lpAsnyuAW_dloBKOmnGSUEaoGmHq46ggexELs>)này để tham gia vào nhóm và nhận thêm nhiều tài liệu hữu ích khác về** Data** nhé!
