Chuyển đến nội dung chính

Bảng thuật ngữ lệnh SQL—Tổng quan 25 lệnh SQL phổ biến nhất

Tìm hiểu những điều cơ bản về 25 lệnh SQL phổ biến nhất và cách sử dụng chúng.
Đã cập nhật 5 thg 6, 2026  · 8 phút đọc

SQL là gì?

SQL, viết tắt của Structured Query Language (Ngôn ngữ Truy vấn có Cấu trúc), là một công cụ mạnh mẽ để tìm kiếm trong lượng dữ liệu lớn trong cơ sở dữ liệu và trả về thông tin cụ thể để phân tích. Học SQL là kỹ năng nền tảng cho bất kỳ ai muốn bước vào lĩnh vực dữ liệu, dù là vai trò business analyst, data analyst, data scientist hay data engineer. 

Trong hướng dẫn này, bạn sẽ tìm hiểu 25 lệnh SQL phổ biến nhất—đủ cho hầu hết các tác vụ liên quan đến cơ sở dữ liệu của bạn.

Các lệnh SQL kèm ví dụ

Bảng ví dụ

Xuyên suốt hướng dẫn, chúng ta sẽ dùng các bảng films và soundtracks.

films 

movie_name

director

revenue

date

genre

language

Avengers: Age of Ultron

J. Whedon

1400000000

2015

Action

English

Amelie

Jean-Pierre Jeunet

174000000

2002

Drama

French

soundtracks

soundtrack

composer

date

Inception: Music from the Motion Picture

Hans Zimmer

2010

Le Fabuleux Destin D’Amelie Poulain

Yann Tiersen

2001

1. SELECT

Câu lệnh SELECT dùng để chỉ định những cột nào của bảng cơ sở dữ liệu sẽ được đưa vào kết quả. 

Ví dụ này chỉ chọn các cột movie_namedirector; các cột khác sẽ không được trả về.

SELECT movie_name, director
FROM films;

Để chọn tất cả các cột từ một bảng, bạn có thể chạy SELECT * (đọc là "star"). Ví dụ này chọn toàn bộ cột từ bảng films.

SELECT * 
FROM films;

2. LIMIT

Giới hạn số lượng dòng trả về từ một bảng là mẹo hữu ích để tăng tốc thời gian truy vấn. Để giới hạn số dòng, bạn có thể dùng lệnh LIMIT. Ví dụ này chọn toàn bộ cột từ bảng films rồi giới hạn kết quả ở 10 dòng đầu tiên.

SELECT *
FROM films
LIMIT 10;

3. AS

Để đổi tên một cột hoặc một bảng trong kết quả trả về, bạn có thể dùng lệnh AS để đặt bí danh (alias) cho đầu ra. Ví dụ này chọn cột movie_name và đặt bí danh là movie_title.

SELECT movie_name AS movie_title
FROM films;

4. SELECT DISTINCT

Tập dữ liệu thường có các dòng hoặc giá trị trùng lặp trong một cột. Kết hợp SELECT với DISTINCT sẽ loại bỏ trùng lặp. Ví dụ này trả về các giá trị duy nhất trong cột director.

SELECT DISTINCT director
FROM films;

5. COUNT

COUNT() trả về số dòng trong bảng hoặc trong nhóm. Ví dụ này trả về số dòng trong bảng films, sau đó đổi tên kết quả thành number_of_films.

SELECT COUNT(*) AS number_of_films
FROM films;

Bắt đầu học SQL miễn phí

Giới thiệu về SQL

BeginnerSkill Level
2 giờ
1.6M learners
Học cách tạo và truy vấn cơ sở dữ liệu quan hệ bằng SQL chỉ trong hai giờ.
See DetailsRight Arrow

Thao tác dữ liệu trong SQL

BeginnerSkill Level
4 giờ
321.9K learners
Làm chủ các truy vấn SQL phức tạp cần thiết để trả lời nhiều câu hỏi khoa học dữ liệu và chuẩn bị bộ dữ liệu vững chắc cho phân tích trong PostgreSQL.

6. MIN 

MIN() trả về giá trị nhỏ nhất trong một cột số. Với cột văn bản, MIN() trả về giá trị đầu tiên theo thứ tự bảng chữ cái. Ví dụ này trả về bộ phim có doanh thu thấp nhất. 

SELECT MIN(revenue) AS minimum_revenue,
FROM films;

7. MAX

MAX() trả về giá trị lớn nhất trong một cột số. Với cột văn bản, MAX() trả về giá trị cuối cùng theo thứ tự bảng chữ cái. Ví dụ này trả về bộ phim có doanh thu cao nhất. 

SELECT MAX(revenue) AS maximum_revenue,
FROM films;

8. SUM

SUM() trả về tổng các giá trị số. Ví dụ này trả về tổng doanh thu của tất cả các phim được liệt kê trong bảng films

SELECT SUM(revenue) AS total_revenue
FROM films;

9. AVERAGE

AVERAGE tính trung bình cộng của một cột. Ví dụ này trả về doanh thu trung bình của tất cả các phim trong bảng films

SELECT AVERAGE(revenue) AS average_earned
FROM films;

10. WHERE

Mệnh đề WHERE lọc các dòng khớp với một điều kiện nhất định. Ví dụ dưới đây, chúng ta lọc các phim kiếm được hơn 500 triệu đô la.

SELECT revenue 
FROM films
WHERE revenue > 500000000;

Các toán tử điều kiện khác có thể dùng như <, >, =>, <=, == (bằng), != (khác) để lọc.

11. HAVING

Mệnh đề HAVING tương tự mệnh đề WHERE, nhưng chỉ dùng được với các hàm tổng hợp trong khi WHERE thì không. Ví dụ trong truy vấn dưới, chúng ta chọn tất cả thể loại phim có ít nhất 50 phim trong danh mục của chúng:

SELECT movie_name, director, date, COUNT(genre)
FROM films
GROUP BY genre
HAVING COUNT(genre) >= 50;

Dưới đây là một ví dụ khác nhóm phim theo xếp hạng độ tuổi và chỉ chọn những xếp hạng có doanh thu trung bình trên 100 triệu:

SELECT movie_name, director, date, revenue
FROM films
GROUP BY age_rating
HAVING AVERAGE(genre) >= 100;

12. AND

Toán tử AND dùng khi lọc các dòng thỏa mãn hơn một điều kiện. Trong ví dụ dưới, chúng ta sẽ lọc các phim tiếng Anh có doanh thu hơn 500 triệu đô la.

SELECT *
FROM films
WHERE revenue > 500000000 AND
     language == "English";

13. OR

OR là một toán tử điều kiện khác cho phép bạn chọn các dòng nếu bất kỳ điều kiện nào được phân tách bởi OR là đúng. Ví dụ này trả về các phim tiếng Anh kiếm dưới 100 triệu đô la hoặc các phim tiếng Pháp kiếm hơn 500 triệu đô la. 

SELECT *
FROM films
WHERE (revenue < 100000000 AND language == "English") OR
     (revenue > 500000000 AND language  == “French”);

14. BETWEEN

BETWEEN cho phép bạn chọn các dòng trong một khoảng giá trị nhất định, giúp mệnh đề WHERE ngắn gọn và dễ đọc hơn. Trong ví dụ trên, chúng ta chọn tất cả các phim phát hành từ 2020 đến 2022.

SELECT *
FROM films
WHERE date BETWEEN 2020 AND 2022;

15. IN

Toán tử IN là cách viết rút gọn cho nhiều mệnh đề OR. Ví dụ này trả về tất cả các phim phát hành vào một trong các năm—1998, 1966, 2001 và 2012.

SELECT movie_name, date, revenue
FROM films
WHERE date IN (1998, 1966, 2001, 2012);

16. LIKE

Toán tử LIKE cho phép bạn tìm kiếm mẫu trong cột văn bản bằng các chuỗi đặc biệt gọi là wildcard. Wildcard giúp bạn tìm các chuỗi văn bản khớp mẫu xác định. Ví dụ, dùng wildcard “A% W%” trên cột director sẽ tìm tất cả đạo diễn có tên bắt đầu bằng A và họ bắt đầu bằng W. 

SELECT *
FROM films
WHERE director LIKE "A% W%";

17. GROUP BY

GROUP BY cho phép bạn nhóm các dòng dựa trên giá trị cột. GROUP BY thường đi kèm các hàm tổng hợp như COUNT, MIN, MAX, AVERAGE, v.v. Trong ví dụ dưới, chúng ta tìm doanh thu trung bình của từng thể loại phim.

SELECT AVERAGE(revenue), movie_name, director, date
FROM films
GROUP BY genre;

Chúng ta có thể dùng MIN, MAX hoặc COUNT(revenue) để tìm doanh thu thấp nhất, cao nhất hoặc số lượng phim trong mỗi thể loại. Lưu ý rằng câu lệnh GROUP BY về thực tế sẽ không ảnh hưởng đến truy vấn nếu không dùng với một hàm tổng hợp.

18. ORDER BY

ORDER BY cho phép bạn sắp xếp các dòng dựa trên giá trị cột. Bạn có thể sắp xếp tăng dần (mặc định) hoặc giảm dần bằng cách thêm ASC hoặc DESC. Ví dụ này sắp xếp doanh thu theo thứ tự tăng dần. 

SELECT *
FROM films
ORDER BY revenue ASC;

19. UPDATE

UPDATE dùng để thay đổi giá trị của các ô riêng lẻ trong một bảng hiện có. Nó đi cùng từ khóa SET. Ví dụ này cập nhật tên đạo diễn từ “J. Whedon” thành “Joss Whedon”

UPDATE films
SET director = "Joss Whedon"
WHERE director = "J. Whedon"

Mệnh đề WHERE là tối quan trọng khi viết câu lệnh UPDATE. Nếu thiếu, truy vấn trên sẽ khiến tất cả phim đều do Joss Whedon đạo diễn.

20. ALTER TABLE

Bạn có thể dùng câu lệnh ALTER TABLE để sửa đổi thuộc tính của bảng và các cột (không phải giá trị ô thực tế). Ví dụ: đổi tên cột, thêm cột mới, xóa cột hoặc thay đổi kiểu dữ liệu. Các ví dụ dưới đây minh họa việc xóa cột date và thêm cột age_rating

ALTER TABLE films
DROP COLUMN date;
ALTER TABLE films
ADD COLUMN age_rating;

21. CREATE TABLE

CREATE TABLE tạo một bảng mới trong cơ sở dữ liệu. Dưới đây, chúng ta tạo bảng “libraries” với bốn cột—một cột số nguyên tên là id, một cột ký tự tên name, một cột ký tự tên version, và một cột số nguyên tên num_downloads.

CREATE TABLE libraries (
   lib_id int,
   name varchar(100),
   version varchar(100),
   num_downloads int
)

22. INSERT INTO

Câu lệnh INSERT INTO có thể dùng để thêm hàng mới vào bảng. Trong ví dụ này, chúng ta thêm phim “Doctor Strange” vào bảng films

INSERT INTO films (movie_name, director, revenue, date, genre, language)
VALUES ("Doctor Strange 2", “Sam Raimi”, 409000000, 2022, “Action”, “English”)

23. INNER JOIN

Lệnh INNER JOIN chọn các dòng có giá trị khớp nhau ở cả hai bảng. Ví dụ, trong truy vấn dưới đây, chúng ta join các bảng films và soundtracks trên cột chung date để trả về các phim và nhạc phim phát hành cùng năm.

SELECT *
FROM films
INNER JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;

24. LEFT JOIN

LEFT JOIN giữ lại toàn bộ bản ghi gốc ở bảng bên trái và trả về giá trị thiếu cho bất kỳ cột nào từ bảng bên phải nơi trường join không tìm thấy khớp. 

SELECT *
FROM films
LEFT JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;

25. RIGHT JOIN

RIGHT JOIN giữ lại toàn bộ bản ghi gốc ở bảng bên phải và trả về giá trị thiếu cho bất kỳ cột nào từ bảng bên trái nơi trường join không tìm thấy khớp.

SELECT *
FROM films
LEFT JOIN soundtracks
ON films.date = soundtracks.date
LIMIT 10;

Cheat Sheet lệnh SQL

Để tìm hiểu thêm về SQL, hãy xem các tài nguyên sau:

Chủ đề

Tìm hiểu thêm về SQL

Courses

Xử lý dữ liệu trong SQL

4 giờ
323.5K
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow