SQL - CASE: Hướng dẫn thân thiện cho người mới bắt đầu
Xin chào các bạn đam mê SQL! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của các câu lệnh CASE trong SQL. Đừng lo lắng nếu bạn là người mới bắt đầu trong lập trình - tôi sẽ là người bạn thân thiện của bạn, giải thích các khái niệm phức tạp thành những phần nhỏ, dễ tiêu hóa. Nào, hãy lấy một tách cà phê, ngồi thoải mái, và cùng nhau bắt đầu nhé!
Câu lệnh CASE trong SQL: Người bạn mới của bạn
Hãy tưởng tượng bạn là một đầu bếp trong nhà bếp của một nhà hàng đông đúc. Bạn có các công thức khác nhau cho các món ăn khác nhau, phải không? Vậy thì câu lệnh CASE trong SQL cũng giống như cuốn sách công thức của bạn - nó giúp bạn đưa ra các quyết định dựa trên các điều kiện khác nhau. Đây là cách để thêm logic "if-then-else" vào các truy vấn SQL của bạn. Thật tuyệt vời phải không?
Hãy cùng nhìn vào một ví dụ đơn giản:
SELECT OrderID, Quantity,
CASE
WHEN Quantity > 30 THEN 'Số lượng lớn hơn 30'
WHEN Quantity = 30 THEN 'Số lượng là 30'
ELSE 'Số lượng dưới 30'
END AS QuantityText
FROM OrderDetails;
Trong ví dụ này, chúng ta đang xem bảng chi tiết đơn hàng. Đối với mỗi đơn hàng, chúng ta kiểm tra số lượng và cung cấp một mô tả. Nếu số lượng lớn hơn 30, chúng ta nói "Số lượng lớn hơn 30", nếu nó exactly 30, chúng ta nói "Số lượng là 30", và đối với các trường hợp khác, chúng ta nói "Số lượng dưới 30".
Câu lệnh CASE bắt đầu với từ khóa CASE và kết thúc với END. Giữa hai từ khóa này, chúng ta có các điều kiện (WHEN) và kết quả cho mỗi điều kiện (THEN). Câu lệnh ELSE bắt đầu bất kỳ điều kiện nào không được xác định.
Câu lệnh CASE với mệnh đề ORDER BY: Sắp xếp theo phong cách
Bây giờ, hãy làm cho mọi thứ thú vị hơn một chút. Bạn có biết bạn có thể sử dụng câu lệnh CASE trong mệnh đề ORDER BY không? Điều này cho phép bạn tạo ra các quy tắc sắp xếp tùy chỉnh. Nó giống như việc có thể sắp xếp kệ sách của bạn theo một cách hoàn toàn độc đáo!
SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END);
Trong truy vấn này, chúng ta đang sắp xếp khách hàng. Nếu khách hàng có thành phố được liệt kê, chúng ta sẽ sắp xếp theo thành phố. Nhưng nếu thành phố là NULL (thiếu), chúng ta sẽ sử dụng quốc gia thay thế. Nó giống như việc có một kế hoạch dự phòng cho việc sắp xếp - rất thông minh phải không?
Câu lệnh CASE với mệnh đề GROUP BY: Nhóm theo phong cách
Tiếp theo, hãy cùng xem cách CASE có thể làm việc với mệnh đề GROUP BY. Kết hợp này giống như việc bạn có một công cụ nhóm siêu mạnh trong tay.
SELECT
CASE
WHEN Age < 18 THEN 'Dưới 18'
WHEN Age BETWEEN 18 AND 30 THEN '18-30'
WHEN Age BETWEEN 31 AND 50 THEN '31-50'
ELSE 'Trên 50'
END AS AgeGroup,
COUNT(*) AS Count
FROM Customers
GROUP BY
CASE
WHEN Age < 18 THEN 'Dưới 18'
WHEN Age BETWEEN 18 AND 30 THEN '18-30'
WHEN Age BETWEEN 31 AND 50 THEN '31-50'
ELSE 'Trên 50'
END;
Ở đây, chúng ta đang nhóm khách hàng theo độ tuổi. Chúng ta tạo các nhóm tuổi bằng cách sử dụng câu lệnh CASE, sau đó sử dụng cùng câu lệnh CASE trong mệnh đề GROUP BY. Truy vấn này sẽ cho chúng ta biết số lượng khách hàng trong mỗi nhóm tuổi. Nó giống như việc tổ chức một buổi liên hoan lớn và xác định cần bao nhiêu bàn cho mỗi thế hệ!
Câu lệnh CASE với mệnh đề WHERE: Lọc điều kiện
Câu lệnh CASE cũng có thể là người bạn đồng hành của bạn trong mệnh đề WHERE, giúp bạn tạo ra các điều kiện lọc phức tạp cho dữ liệu của bạn.
SELECT ProductName, UnitsInStock
FROM Products
WHERE
CASE
WHEN CategoryID IN (1,2,3) THEN UnitsInStock > 20
WHEN CategoryID IN (4,5,6) THEN UnitsInStock > 30
ELSE UnitsInStock > 40
END;
Trong ví dụ này, chúng ta đang chọn các sản phẩm dựa trên mức tồn kho của chúng, nhưng mức tồn kho yêu cầu thay đổi tùy thuộc vào danh mục. Đối với các danh mục 1, 2 và 3, chúng ta muốn các sản phẩm có hơn 20 đơn vị. Đối với các danh mục 4, 5 và 6, chúng ta cần hơn 30 đơn vị. Đối với tất cả các danh mục khác, chúng ta đang tìm kiếm các sản phẩm có hơn 40 đơn vị. Nó giống như việc có các yêu cầu tồn kho khác nhau cho các khu vực khác nhau trong cửa hàng của bạn!
Câu lệnh CASE với mệnh đề UPDATE: Cập nhật dữ liệu thông minh
Câu lệnh CASE không chỉ dành cho các truy vấn SELECT. Nó cũng có thể giúp bạn cập nhật dữ liệu theo các cách phức tạp.
UPDATE Employees
SET Salary =
CASE
WHEN Department = 'IT' THEN Salary * 1.10
WHEN Department = 'Sales' THEN Salary * 1.05
ELSE Salary * 1.03
END;
Truy vấn này cung cấp các mức tăng lương khác nhau cho nhân viên dựa trên phòng ban của họ. Phòng ban IT nhận được mức tăng 10%, Phòng ban Sales nhận được 5%, và tất cả các phòng ban khác nhận được 3%. Nó giống như việc làmSanta Claus, nhưng thay vì phát quà, bạn đang cấp phát tăng lương!
Câu lệnh CASE với mệnh đề INSERT: Chèn dữ liệu thông minh
Cuối cùng, hãy xem CASE có thể giúp chúng ta như thế nào khi chèn dữ liệu.
INSERT INTO SalaryGrades (EmployeeID, Grade)
SELECT EmployeeID,
CASE
WHEN Salary < 30000 THEN 'Thấp'
WHEN Salary BETWEEN 30000 AND 50000 THEN 'Trung bình'
ELSE 'Cao'
END
FROM Employees;
Ở đây, chúng ta đang chèn các mức lương vào một bảng mới dựa trên mức lương trong bảng Employees. Chúng ta sử dụng câu lệnh CASE để xác định mức lương cho mỗi nhân viên. Nó giống như việc tự động phân cấp hiệu suất dựa trên các tiêu chí nhất định!
Kết luận: CASE cho thành công
Và thế là bạn đã có nó, các bạn! Chúng ta đã cùng nhau hành trình qua thế giới của các câu lệnh CASE trong SQL, khám phá cách chúng có thể được sử dụng trong nhiều tình huống khác nhau. Từ việc ra quyết định đơn giản đến việc manipulateg 数据 phức tạp, câu lệnh CASE là một công cụ mạnh mẽ trong bộ công cụ SQL của bạn.
Nhớ rằng, giống như bất kỳ kỹ năng nào, việc thành thạo câu lệnh CASE cần phải thực hành. Đừng ngại thử nghiệm với các truy vấn của riêng bạn. Trước khi bạn biết điều đó, bạn sẽ sử dụng câu lệnh CASE như một chuyên gia, thêm một chút logic và tính linh hoạt vào các tương tác cơ sở dữ liệu của bạn.
Tiếp tục mã hóa, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ! Cuối cùng, đó là điều làm cho thế giới lập trình trở nên thú vị. Hẹn gặp lại các bạn, chúc các bạn vui vẻ trong việc truy vấn!
Credits: Image by storyset