Học SQL cơ bản – Truy vấn dữ liệu với SELECT trong SQL Server

Truy vấn SELECT trong SQL Server là lệnh cơ bản xuyên suốt quá trình học và sử dụng SQL Server. Đây là lệnh cơ bản để lấy dữ liệu từ table, view, function.
Cú pháp:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

Trong đó:
column1, column2, … các column của table cần lấy
table_name: tên table
condition: điều kiện lấy ra các dòng dữ liệu

Một số ví dụ về Select:

-- Lấy toàn bộ dữ liệu table Employee
SELECT * FROM Employee
-- Lấy thông tin nhân viên có EmployeeID = 1 gồm: EmployeeID, FirtName, LastName, Birthday
SELECT EmployeeID, FirtName, LastName, Birthday FROM Employee WHERE EmployeeID = 1

Lưu ý: kí tự * là lấy tất cả các column trong table.

ORDER BY trong SQL Server

ORDER BY trong SQL Server dùng để sắp xếp kết quả trả về trong truy vấn SELECT. Có 2 cách sắp xếp:
ASC: sắp xếp tăng dần
DESC: sắp xếp giảm dần
Nếu truy vấn SELECT có ORDER BY mà không chỉ định kiểu sắp xếp thì mặc định sẽ sắp xếp tăng dần ASC.

Ví dụ:

SELECT * FROM Employee ORDER BY EmployeeID ASC

Truy vấn SELECT TOP trong SQL Server

Khi cần lấy ra n dòng đầu tiên trong kết quả trả về thì chúng ta sử dụng SELECT TOP n

Ví dụ:

-- Lấy ra 3 nhân viên đầu tiên theo mã nhân viên EmployeeID
SELECT TOP 3 * FROM Employee ORDER BY EmployeeID

Truy vấn SELECT DISTINCT trong SQL Server

Sử dụng SELECT DISTINCT để loại bỏ các dòng trùng lặp nhau.

Ví dụ:

-- Lấy ra danh sách các DepartmentID có trong Employee
SELECT DISTINCT DepartmentID FROM Employee

Gom nhóm với Group by với truy vấn SELECT

Khi sử dụng truy vấn SELECT, chúng ta cần trả về kết quả gom nhóm theo các tiêu chí thì phải sử dụng GROUP BY.
Ví dụ mẫu:

-- Hiển thị tổng số nhân viên theo mã phòng ban DepartmentID
SELECT DepartmentID, COUNT(*) AS TotalEmployee
FROM Employee
GROUP BY DepartmentID

HAVING với truy vấn SELECT

Khi sử dụng truy vấn SELECT, chúng ta cần lọc kết quả sau gom nhóm với GROUP BY thì phải sử dụng HAVING.
Ví dụ mẫu:

-- Hiển thị tổng số nhân viên theo mã phòng ban có số lượng nhân viên nhiều hơn 1 người
SELECT DepartmentID, COUNT(*) AS TotalEmployee
FROM Employee
GROUP BY DepartmentID
HAVING COUNT(*) > 1