Accessing Data
Cấu trúc của lệnh SELECT
SELECT
[col1], [col2], ...
FROM
[table_name]
WHERE
[condition]
ORDER BY
[col1] ASC|DESC,
[col2] ASC|DESC,
Mệnh đề WHERE
Các phép toán lô-gíc (logical)
- AND: dùng để kết hợp các mệnh đề với nhau, trả về TRUE nếu tất cả các mệnh đề đều đúng.
- OR: dùng để kết hợp các mệnh đề với nhau, trả về TRUE nếu một trong các mệnh đề đúng.
- NOT: dùng để phủ định kết quả của mệnh đề.
- LIKE: dùng để so sánh một giá trị với một chuỗi ký tự.
- BETWEEN: value1 AND value2 dùng để kiểm tra xem một giá trị có nằm trong một khoảng giá trị hay không.
- IN: dùng để kiểm tra xem một giá trị có nằm trong một danh sách các giá trị hay không.
- EXISTS: dùng để kiểm tra sự tồn tại của một bản ghi trong một bảng con.
- ANY: dùng để so sánh với một danh sách các giá trị và trả về TRUE nếu bất kỳ giá trị nào trong danh sách đó khớp với giá trị được so sánh.
- SOME: cũng tương tự như ANY, nó cũng dùng để so sánh với một danh sách các giá trị và trả về TRUE nếu bất kỳ giá trị nào trong danh sách đó khớp với giá trị được so sánh.
- ALL: dùng để so sánh với một danh sách các giá trị và trả về TRUE nếu tất cả các giá trị trong danh sách đó khớp với giá trị được so sánh.
Các ví dụ:
- LIKE:
SELECT * FROM Products
WHERE Name LIKE 'A%'
SELECT * FROM Products
WHERE Name LIKE '%A%'
SELECT * FROM Products
WHERE Name LIKE '_A%'
- BETWEEN:
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20
SELECT * FROM Orders
WHERE OrderDate BETWEEN '2014-02-01' AND '2014-02-28'
- IN:
SELECT * FROM Products
WHERE Id IN (SELECT DISTINCT ProductId FROM OrderDetails)
- EXISTS:
SELECT * FROM Products
WHERE EXISTS (
SELECT * FROM OrderDetails
WHERE Products.ID = OrderDetails.ProductId
);
- ALL:
SELECT Name, Price
FROM Products
WHERE Price > ALL (
SELECT Price
FROM Products
WHERE CategoryID = 2
);
Các phép toán so sánh (comparison)
=
<>
!=
>
>=
<
<=
Các hàm về ngày tháng (date)
- GETDATE(): trả về ngày và giờ hiện tại. Ví dụ:
GETDATE()
trả về '2024-04-15 19:00:00'. - YEAR(): trả về năm của một ngày. Ví dụ:
YEAR('2021-09-01')
trả về 2021. - MONTH(): trả về tháng của một ngày. Ví dụ:
MONTH('2021-09-01')
trả về 9. - DAY(): trả về ngày của một ngày. Ví dụ:
DAY('2021-09-01')
trả về 1. - DATEDIFF(): trả về số ngày giữa hai ngày. Ví dụ:
SELECT DATEDIFF(DAY, '2021-09-01', '2021-09-10')
trả về -9. - DATEADD(): thêm một số ngày vào một ngày. Ví dụ:
SELECT DATEADD(DAY, 10, '2021-09-01')
trả về '2021-09-11'. - DATEPART(): trả về một phần của một ngày. Ví dụ:
SELECT DATEPART(YEAR, '2021-09-01')
trả về 2021. - DATENAME(): trả về tên của một phần của một ngày. Ví dụ:
SELECT DATENAME(MONTH, '2021-09-01')
trả về 'September'. - EOMONTH(): trả về ngày cuối cùng của một tháng. Ví dụ:
SELECT EOMONTH('2021-09-01')
trả về '2021-09-30'.
Mệnh đề ORDER BY
Dùng để sắp xếp kết quả truy vấn.
Tăng dần ASC
Dùng để sắp xếp tăng dần
SELECT [col1], [col2], ...
FROM [table_name]
ORDER BY [col1] ASC
Giảm dần DESC
Dùng để sắp xếp giảm dần
SELECT [col1], [col2], ...
FROM [table_name]
ORDER BY [col1] DESC
Kết hợp nhiều cột
SELECT [col1], [col2], ...
FROM [table_name]
ORDER BY [col1] ASC, [col2] DESC
DISTINCT
Dùng để loại bỏ các giá trị trùng lặp trong kết quả truy vấn.
SELECT DISTINCT [col1], [col2], ...
FROM [table_name]
SUM, AVG, MIN, MAX, COUNT
- SUM: Tính tổng giá trị của một cột.
- AVG: Tính giá trị trung bình của một cột.
- MIN: Tìm giá trị nhỏ nhất của một cột.
- MAX: Tìm giá trị lớn nhất của một cột.
- COUNT: Đếm số lượng bản ghi.
Ví dụ:
- SUM:
SELECT SUM(Price) AS TotalPrice
FROM Products
SELECT ProductId, Price, Quantity, Discount, (Price * Quantity * (100 - Discount) / 100) AS TotalPrice
FROM OrderDetails
GROUP BY ProductId, Price, Quantity, Discount
TOP & TOP PERCENT
TOP number
Dùng để giới hạn số lượng bản ghi trả về.
SELECT TOP 10 [col1], [col2], ...
FROM [table_name]
TOP number
PERCENT
Dùng để giới hạn số lượng bản ghi trả về theo phần trăm.
SELECT TOP 10 PERCENT [col1], [col2], ...
FROM [table_name]
INNER JOIN
Dùng để kết hợp các bảng dựa trên một điều kiện.
SELECT * FROM [table1]
INNER JOIN [table2]
ON [table1].[col1] = [table2].[col2]
LEFT JOIN
Dùng để kết hợp các bảng dựa trên một điều kiện.
SELECT * FROM [table1]
LEFT JOIN [table2]
ON [table1].[col1] = [table2].[col2]