Skip to main content

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]