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