Câu lệnh SELECT có điều kiện trong SQL Server

3521 lượt xem

 

Câu lệnh SELECT là một câu lệnh quen thuộc trong SQL, được sử dụng để lấy về các kết quả ở các bảng trong CSDL ở SQL server. Cùng tìm hiểu chi tiết hơn về câu lệnh này nhé.

1. Cú pháp lệnh SELECT trong SQL

1.1 Cú pháp ở dạng đơn giản

Câu lệnh SELECT đơn giản nhất thường là:

SELECT “biểu thức”

FROM “bảng”

[WHERE “điều kiện”];

1.2 Cú pháp ở dạng đầy đủ

Còn dạng đầy đủ câu lệnh sẽ dài hơn với

SELECT [ ALL | DISTINCT ] [ TOP (gia_tri_dau) [ 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 ]];

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

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

Ngoài ra khi kết hợp với câu lệnh SELECT chúng ta sẽ kết hợp các biến sau

ALL – Tùy chọn. Kết quả trả về tất cả các hàng phù hợp

DISTINCT – Tùy chọn. Loại tất cả các giá trị bị trùng khỏi kết quả trả về.

TOP (gia_tri_dau) – Tùy chọn. Trả về toàn bộ kết quả ở hàng đầu tiên dựa vào gia_tri_dau đã chọn. Ví dụ TOP(5) thì kết quả trả về là 5 hàng đầu tiên.

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.

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 gia_tri_dau). Ví dụ TOP(5) PERCENT sẽ trả về top 5% kết quả đầu tiên trong bộ kết quả.

Biểu thức – Cột hoặc giá trị tính toán mà bạn muốn lấy. Dùng dấu * nếu bạn muốn lấy toàn bộ các cột.

Bảng – Kết quả trả về sẽ là bảng của bạn chọn. 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. Kết quả trả về sẽ phải đáp ứng được điều kiện được đặt ra.

GROUP BY “biểu thức” – Tùy chọn. Nhóm các kết quả theo một hay nhiều cột từ dữ liệu thu thập được thông qua các bảng ghi.

HAVING “điều kiện” – Tùy chọn. Dùng lệnh này kết hợp với GROUP BY để giới hạn nhóm các hàng trả về khi đáp ứng được điều kiện.

ORDER BY “biểu thức” – Tùy chọn. Được dùng để lọc các kết quả. Sử dụng ASC để lọc theo thứ tự tăng dần và DESC để lọc theo thứ tự giảm dần.

2.2 Các ví dụ

Chọn toàn bộ trường trong một bảng

SELECT *

FROM hangtonkho

WHERE soluong > 10

ORDER BY hangtonkho_id ASC;

Sử dụng dấu * để chọn tất cả các giá trị trong bảng hangtonkho nhưng phải thỏa mãn giá trị là soluong > 10. Kết quả trả về sẽ được sắp xếp theo thứ tự tăng dần dựa trên bảng hangtonkho_id

Chọn một vài trường trong bảng

SELECT hangtonkho_id, hangtonkho_type, soluong

FROM hangtonkho

WHERE hangtonkho_id >= 555

AND hangtonkho_type = ‘phanmem’

ORDER BY soluong DESC, hangtonkho_id ASC;

Ở lệnh trên, kết quả trả về sẽ là số lượng, id, loại hàng và được lấy từ bảng hangtonkho khi thỏa mãn điều kiện id >= 555, loại hàng cũng cần thỏa mãn là “phanmem” (phần mềm).

Các kết quả trả về sẽ được sắp xếp theo số lượng giảm dần và tăng dần của id

Chọn từ nhiều bảng khác nhau

SELECT hangtonkho.hangtonkho_id, sanpham.sanpham_ten, hangtonkho.soluong

FROM hangtonkho

INNER JOIN sanpham

ON hangtonkho.sanpham_id = sanpham.sanpham_id

ORDER BY hangtonkho_id;

Trong ví dụ này tôi sẽ chọn ra từ các bảng hantonkho và sanpham để lấy ra các giá trị hangtonkho_id, sanpham_ten và soluong. Để làm được như vậy thì ID ở bảng hangtonkho phải giống với bảng sanpham.

Kết quả trả về sẽ được sắp xêm theo thứ tự tăng dần của ID.

Sử dụng keyword TOP

SELECT TOP(3)

hangtonkho_id, hangtonkho_type, soluong

FROM hangtonkho

WHERE hangtonkho_type = ‘phanmem’

ORDER BY hangtonkho_id ASC;

Trong ví dụ này thì tôi sẽ lấy ra 3 hàng đầu tiên trong bảng hangtonkho và thỏa mãn điều kiện loại hàng là “phanmem” (phần mềm). Kết quả trả về gồm id, loại hàng, số lượng và được sắp xếp từ tăng dần theo mã id.

Sử dụng keyword TOP PERCENT

SELECT TOP(10) PERCENT

hangtonkho_id, hangtonkho_type, soluong

FROM hangtonkho

WHERE hangtonkho_type = ‘phanmem’

ORDER BY hangtonkho_id ASC;

Gần tương tự như trên nhưng chỉ 10% giá trị đầu tiên được trả về thỏa mãn điều kiện là loại sản phẩm là phần mềm. 90% còn lại không được hiện ra.

Như vậy là chúng ta lại hoàn thành thêm một bài học khá hữu ích về lệnh SELECT trong SQL Server. Đón xem các bài viết tiếp theo của tôi nhé.