Lập trình

Top 26 Câu Lệnh SQL Mà Các Lập Trình Viên Và Nhà Data Nào Cũng Cần Biết

Huy Erick

Cùng tìm hiểu về 26 câu lệnh phổ biến trong SQL, lưu về và áp dụng ngay nhé. Đối với các bạn quan tâm tới SQL, hãy tham khảo khóa học SQL Data Analyst của...

Cùng tìm hiểu về 26 câu lệnh phổ biến trong SQL, lưu về và áp dụng ngay nhé. Đối với các bạn quan tâm tới SQL, hãy tham khảo khóa học SQL Data Analyst của Cole tại đây: https://blog.cole.vn/khoa-hoc-sql-cho-data-analyst/

Câu Lệnh SQL SELECT

SELECT là lệnh được sử dụng để lấy kết quả từ một hoặc nhiều bảng trong CSDL của SQL Server.

Cú pháp lệnh SELECT

Ở dạng đơn giản, cú pháp của lệnh SELECT như sau:

SELECT "biểu thức"
FROM "bảng"
[WHERE "điều kiện"];

Ở dạng đầy đủ, cú pháp của lệnh SELECT trong SQL Server sẽ là:

SELECT [ ALL | DISTINCT ]
[ TOP (giá_trị_đầu) [ PERCENT ] [ WITH TIES ] ]
"Biểu thức"
FROM "bảng"
[WHERE "điều kiện"]
[GROUP BY "biểu thức"]
[HAVING "điều kiện"]
[ORDER BY "biểu thức" [ ASC | DESC ]];

Tên biến hoặc giá trị biến:

  • ALL: Tùy chọn. Trả lại tất cả các hàng phù hợp.
  • DISTINCT: Tùy chọn. Loại bỏ tất cả các giá trị trùng lặp khỏi bộ kết quả.
  • TOP (giá_trị_đầu): Tùy chọn. Nếu chỉ định cụ thể sẽ trả về những giá trị đầu trong bộ kết quả dựa trên giá_trị_đầu đã chọn. Ví dụ TOP(10) sẽ trả về 10 hàng đầu tiên trong bộ kết quả.
  • PERCENT: Tùy chọn. Nếu chỉ định cụ thể thì các hàng đầu tiên dựa theo phần trăm trên bộ kết quả (chỉ định bằng giá_trị_đầu). Ví dụ TOP(10) PERCENT sẽ trả về top 10% kết quả đầu tiên trong bộ kết quả.
  • WITH TIES: Tùy chọn. Nếu chỉ định cụ thể thì các hàng cố định ở cuối trong kết quả có giới hạn sẽ được trả về. Điều này có thể khiến cho số hàng trả về nhiều hơn biến TOP cho phép.
  • Biểu thức: Cột hay giá trị tính toán mà bạn muốn lấy về. Dùng * nếu muốn lấy tất cả các cột.
  • Bảng: Bảng mà bạn muốn lấy kết quả về. Phải có ít nhất 1 bảng được liệt kê trong lệnh FROM.
  • WHERE "điều kiện": Tùy chọn. Điều kiện mà kết quả trả về phải đáp ứng được.
  • GROUP BY "biểu thức": Tùy chọn. Thu thập dữ liệu từ nhiều bản ghi và nhóm kết quả theo một hoặc nhiều cột.
  • HAVING "điều kiện": Tùy chọn. Dùng kết hợp với GROUP BY để giới hạn nhóm các hàng trả về khi điều kiện được đáp ứng là TRUE.
  • ORDER BY "biểu thức": Tùy chọn. Được dùng để lọc bộ kết quả. ASC sẽ lọc theo thứ tự tăng dần và DESC sẽ lọc theo thứ tự giảm dần.

Câu Lệnh DISTINCT

Trong SQL Server (Transact-SQL), mệnh đề DISTINCT được dùng để loại bỏ trùng lặp trong bộ kết quả trả về. Mệnh đề DISTINCT chỉ có thể dùng trong lệnh SELECT.

Cú pháp mệnh đề DISTINCT

SELECT DISTINCT "biểu thức"
FROM "bảng"
[WHERE "điều kiện"];

Tên biến hoặc giá trị biến:

  • "biểu thức": Cột hoặc giá trị tính toán mà bạn muốn lấy.
  • "bảng": Bảng dùng để lấy bản ghi. Phải có ít nhất 1 bảng trong mệnh đề FROM.
  • "điều kiện": Tùy chọn. Điều kiện mà bản ghi phải đáp ứng để được chọn.

Lưu ý:

  • Khi mệnh đề DISTINCT chỉ có 1 biểu thức, truy vấn sẽ trả về các giá trị duy nhất cho biểu thức đó.
  • Khi mệnh đề DISTINCT có nhiều hơn 1 biểu thức, truy vấn sẽ trả về tổ hợp duy nhất của các biểu thức.

Trong SQL Server, mệnh đề DISTINCT không bỏ qua giá trị NULL. Vậy nên, khi dùng mệnh đề này trong lệnh, kết quả trả về sẽ có cả giá trị NULL duy nhất.

Câu Lệnh WHERE

Trong SQL Server (T-SQL), mệnh đề WHERE được dùng để lọc kết quả từ các lệnh SELECT, INSERT, UPDATE hoặc DELETE.

Cú pháp mệnh đề WHERE

WHERE "điều kiện";

Tên các biến hoặc giá trị biến:

  • "điều kiện": Điều kiện mà bản ghi phải đáp ứng để được chọn.

Câu Lệnh AND/OR

Khi kết hợp 2 điều kiện này, cần phải nhớ dùng dấu ngoặc đơn để cơ sở dữ liệu biết được thứ tự thực hiện từng điều kiện.

Cú pháp kết hợp điều kiện AND và điều kiện OR

WHERE "điều kiện 1"
AND "điều kiện 2"
…
OR "điều kiện n";

Tên biến và giá trị biến:

  • "điều kiện 1, điều kiện 2… điều kiện n": Các điều kiện được đánh giá để xác định xem bản ghi có được lựa chọn hay không.

Lưu ý:

  • Điều kiện AND và OR cho phép kiểm tra nhiều điều kiện.
  • Đừng quên thứ tự thực hiện, xác định bằng dấu ngoặc đơn.

Câu Lệnh IN

Điều kiện IN được dùng trong SQL Server (Transact-SQL), để giảm thiểu việc phải sử dụng quá nhiều điều kiện OR trong các lệnh SELECT, INSERT, UPDATE hoặc DELETE.

Cú pháp điều kiện IN

biểu_thức IN (giá_trị_1, giá_trị_2, … giá_trị_n);

Tên biến hoặc giá trị biến:

  • biểu thức: Giá trị để kiểm tra.
  • giá_trị_1, giá_trị_2, … giá_trị_n: Các giá trị để kiểm tra với biểu thức.

Lưu ý:

  • Điều kiện IN trong SQL Server sẽ trả về các bản ghi khi biểu thức có giá trị là giá_trị_1, giá_trị_2, … hoặc giá_trị_n.
  • Điều kiện IN trong SQL Server còn được gọi là toán tử IN.

Câu Lệnh BETWEEN

Trong SQL Server (Transact-SQL), điều kiện BETWEEN được dùng để lấy dữ liệu trong một khoảng, trong lệnh SELECT, INSERT, UPDATE hoặc DELETE.

Cú pháp điều kiện BETWEEN

biểu_thức BETWEEN giá_trị1 AND giá_trị2 ;

Tên biến hoặc giá trị biến:

  • biểu_thức: Cột hoặc trường thông tin.
  • giá_trị1 và giá_trị2: các giá trị tạo nên khoảng mà biểu_thức sẽ đối chiếu, bao gồm cả 2 giá trị đầu cuối.

Lưu ý:

  • Điều kiện BETWEEN sẽ trả về tất cả các bản ghi mà biểu_thức nằm trong khoảng từ giá_trị1 tới giá_trị2, bao gồm 2 giá trị đầu cuối.

Câu Lệnh SQL LIKE

Điều kiện LIKE trong SQL Server (Transact-SQL) cho phép dùng wildcard (các kí hiệu đại diện) trong mệnh đề WHERE ở các lệnh SELECT, INSERT, UPDATE và DELETE, dùng để đối sánh mẫu.

Cú pháp điều kiện LIKE

"biểu thức" LIKE "mẫu" [ ESCAPE 'Escape_Character' ]

Tên biến hoặc giá trị biến:

  • "biểu thức": Biểu thức kí tự như cột hoặc trường thông tin.
  • "mẫu": Biểu thức kí tự có chứa đối chiếu mẫu. Các mẫu có thể chọn từ bảng dưới đây.
Kí hiệu đại diện Giải thích
% Tìm chuỗi kí tự với bất kì độ dài nào (bao gồm cả độ dài 0)
_ Tìm một kí tự
[^] Tìm bất kì kí tự nào không chứa trong dấu [^] (ví dụ [^abc] sẽ tìm bất kì kí tự nào không phải là a, b hoặc c)

Escape Character | Tạm dịch là ký tự bỏ qua. Cho phép kiểm tra xem ký tự đại diện như % hay _ có được dùng theo đúng nghĩa đen (dưới dạng hằng số); chứ không được dùng như một kí tự đặc biệt.

Câu Lệnh SQL ORDER BY

Mệnh đề ORDER BY được dùng để lọc bản ghi trong bộ kết quả trả về của SQL Server. Mệnh đề này chỉ có thể dùng trong lệnh SELECT.

Cú pháp mệnh đề ORDER BY

SELECT "biểu thức"
FROM "bảng"
[WHERE "điều kiện"]
ORDER BY "biểu thức" [ ASC | DESC ];

Tên các biến và giá trị biến:

  • "Biểu thức" - cột hoặc giá trị tính toán bạn muốn lấy.
  • "Bảng" - bảng mà bạn muốn dùng để lấy bản ghi. Phải có ít nhất 1 bảng trong mệnh đề FROM.
  • "WHERE "điều kiện"" - tùy chọn. Các điều kiện phải được đáp ứng thì bản ghi mới được chọn.
  • "ORDER BY "biểu thức"" - tùy chọn. Được dùng để lọc bộ kết quả. ASC sẽ lọc theo thứ tự tăng dần của biểu thức (mặc định nếu không chỉ định rõ). DESC sẽ lọc theo thứ tự giảm dần của biểu thức.

Câu Lệnh SQL GROUP BY

Mệnh đề GROUP BY trong SQL Server cho phép bạn sắp xếp các hàng của truy vấn theo nhóm. Các nhóm được xác định bởi các cột mà bạn chỉ định trong mệnh đề GROUP BY. Thông thường, GROUP BY được sử dụng để tính tổng theo điều kiện, đếm bản ghi thỏa mãn điều kiện nào đó hoặc tìm dữ liệu MIN, MAX.

Cú pháp mệnh đề GROUP BY trong SQL Server

SELECT
  biểu_thức1, biểu_thức2,… biểu_thức_n,
  ham_tong_hop (bieu_thuc)
FROM
  ten_bang
[WHERE dieukien]
GROUP BY
  biểu_thức1,
  biểu_thức2,…;

Tên biến hoặc giá trị biến:

  • biểu_thức1, biểu_thức2,… biểu_thức_n: Biểu thức không nằm bên trong hàm tổng hợp và phải nằm trong mệnh đề GROUP BY.
  • ham_tong_hop: Có thể là các hàm như SUM, COUNT, MIN, MAX hoặc AVG.
  • ten_bang: Bảng cần lấy bản ghi từ đó, phải có ít nhất 1 bảng trong mệnh đề FROM.
  • WHERE dieukien: Tùy chọn. Đây là điều kiện mà bản ghi phải đáp ứng để được chọn.

Câu Lệnh SQL COUNT

Hàm COUNT trong SQL Server dùng để đếm số lượng bản ghi (dữ liệu, hàng) có trong một bảng dữ liệu. Những giá trị NULL bỏ qua không tính.

Cú pháp hàm COUNT SQL Server

SELECT COUNT(cot)
FROM bang
[WHERE dieukien];

Tham số:

  • cot: cột hoặc giá trị tính toán, biểu thức mà bạn muốn đếm.
  • bang: bảng dùng để lấy bản ghi. Phải có ít nhất 1 bảng trong mệnh đề FROM.
  • dieukien: tùy chọn. Điều kiện mà bản ghi phải đáp ứng để được chọn.

Câu Lệnh SQL HAVING

Mệnh đề HAVING được dùng kết hợp với mệnh đề GROUP BY trong SQL Server (Transact-SQL), để giới hạn nhóm các hàng trả về, chỉ khi điều kiện được được đáp ứng là TRUE.

Cú pháp mệnh đề HAVING trong SQL Server

SELECT bieuthuc1, bieuthuc2, … bieuthuc_n,
  ham_tong (bieuthuc)
FROM bang
[WHERE dieukien]
GROUP BY bieuthuc1, bieuthuc2, … bieuthuc_n
HAVING dieukien_having;

Tên biến hoặc giá trị biến:

  • ham_tong: Có thể là các hàm như SUM, COUNT, MIN, MAX hoặc AVG.
  • bieuthuc1, bieuthuc2, … bieuthuc_n: Biểu thức không nằm bên trong hàm tổng và phải nằm trong mệnh đề GROUP BY.
  • WHERE dieukien: Tùy chọn. Các điều kiện mà bản ghi phải đáp ứng để được chọn.
  • HAVING dieukien_having: Đây là điều kiện thêm chỉ áp dụng với kết quả tổng để giới hạn các nhóm của những hàng được trả về. Chỉ các nhóm mà điều kiện được đánh giá là TRUE mới nằm trong bộ kết quả.

Câu Lệnh SQL CREATE TABLE

Lệnh CREATE TABLE trong SQL dùng để tạo một bảng mới. Việc tạo bảng mới cơ bản liên quan đến việc đặt tên cho bảng, xác định các cột của nó và kiểu dữ liệu của mỗi cột.

Cú pháp lệnh CREATE TABLE

CREATE TABLE ten_bang(
cot1 kieu_du_lieu,
cot2 kieu_du_lieu,
cot3 kieu_du_lieu,
…..
cotN kieu_du_lieu,
PRIMARY KEY( mot hoac nhieu cot )
);

Câu Lệnh SQL DROP TABLE

Trong SQL, lệnh DROP TABLE được dùng để xóa định nghĩa bảng và tất cả các dữ liệu, chỉ mục, ràng buộc, thông số của bảng.

Cú pháp của lệnh DROP TABLE:

DROP TABLE ten_bang;

Bạn nên cẩn thận khi xóa một chỉ mục. Vì khi đó hiệu suất có thể chậm hơn hoặc không được cải thiện.

Câu Lệnh SQL TRUNCATE TABLE

Lệnh TRUNCATE TABLE được dùng để xóa tất cả bản ghi từ 1 bảng trong SQL Server. Lệnh này hoạt động tương tự như lệnh DELETE nhưng không có mệnh đề WHERE.

Cú pháp lệnh TRUNCATE TABLE trong SQL Server

TRUNCATE TABLE [ten_CSDL.] [ten_schema.] ten_bang
[ WITH (PARTITIONS (so_phan_vung
  | so_phan_vung TO so_phan_vung ) ] ;

Tên biến hoặc giá trị biến:

  • ten_CSDL: Tùy chọn. Nếu được chỉ định thì đây là tên của cơ sở dữ liệu.
  • ten_schema: Tùy chọn. Đây là tên của schema (tạm dịch là lược đồ hay không gian tên) mà bảng đó thuộc về.
  • ten_bang: Bảng mà bạn muốn xóa bản ghi.

WITH (PARTITIONS (so_phan_vung | so_phan_vung TO so_phan_vung ): Tùy chọn và chỉ có thể dùng với bảng phân vùng. Nếu được chỉ định, so_phan_vung là số của vùng mà bạn muốn xóa trong bảng này. Để xóa nhiều vùng, dùng dấu phẩy phân tách các giá trị hoặc khoảng giá trị số phân vùng. Nếu dùng mệnh đề này với bảng không phân vùng thì SQL Server sẽ báo lỗi. Tính năng này không có trong tất cả các phiên bản của SQL Server.

Lưu ý:

  • Nếu xóa toàn bộ bản ghi trong bảng, bộ đếm ở mọi cột tự tăng giá trị (identity column) sẽ bị lặp lại từ đầu.
  • Không thể xóa toàn bộ bản ghi trong bảng được tham chiếu bằng Foreign Key.
  • Trước khi xóa toàn bộ bản ghi trong bản, phải có quyền ưu tiên như ALTER TABLE.

Câu Lệnh SQL ALTER TABLE

Trong SQL Server, lệnh ALTER TABLE được dùng để thêm cột, chỉnh sửa cột, xóa cột, đổi tên cột hoặc đổi tên bảng.

Cú pháp ALTER TABLE

ALTER TABLE ten_bang
ADD ten_cot dinh_nghia_cot;

Câu Lệnh ALTER TABLE (Đổi tên)

Có thể dùng lệnh ALTER TABLE để đổi tên cột trong bảng. Có thể dùng sp_rename nhưng Microsoft khuyến khích xóa và tạo lại bảng, để kịch bản và các quy trình lưu trữ không bị hỏng.

Cú pháp

sp_rename ‘ten_bang.ten_cot_cu’, ‘ten_cot_moi’, ‘COLUMN’;

Câu Lệnh SQL INSERT INTO

Cú pháp 1:

INSERT INTO TEN_BANG (cot1, cot2, cot3,…cotN)
VALUES (gia_tri1, gia_tri2, gia_tri3,…gia_triN);

Cú pháp 2:

INSERT INTO TEN_BANG
VALUES (gia_tri1, gia_tri2, gia_tri3,…gia_triN);

Câu Lệnh UPDATE

Cú pháp

UPDATE bang
SET cot1 = bieuthuc1,
cot2 = bieuthuc2,
…
[WHERE dieu_kien];

Câu Lệnh DELETE

Cú pháp

DELETE FROM bang
[WHERE dieu_kien];
1