Với lượng dữ liệu khổng lồ được tạo ra mỗi ngày, điều quan trọng là phải truy xuất dữ liệu dựa trên một số điều kiện. Trong bài viết về câu lệnh CASE trong MySQL này, mình sẽ trình bày về cách sử dụng câu lệnh này, để lấy dữ liệu theo một điều kiện hay nhiều điều kiện
SQL là gì?
SQL là ngôn ngữ dành riêng cho miền được sử dụng rộng rãi trong lập trình. Nó được thiết kế để quản lý dữ liệu chứa trong hệ thống quản lý cơ sở dữ liệu quan hệ [RDBMS] hoặc để xử lý luồng trong hệ thống quản lý luồng dữ liệu quan hệ. Tôi nói chung, SQL là một ngôn ngữ chuẩn giúp lưu trữ, thao tác và truy xuất dữ liệu trong cơ sở dữ liệu
Mục đích của SQL là gì?
SQL về cơ bản được dùng để giao tiếp với cơ sở dữ liệu. Theo ANSI [Viện tiêu chuẩn quốc gia Hoa Kỳ], nó được coi là ngôn ngữ chuẩn cho các hệ quản trị cơ sở dữ liệu quan hệ [RDBMS]. Chúng tôi sử dụng câu lệnh SQL để thực hiện các tác vụ như cập nhật, chèn, xóa hoặc truy xuất dữ liệu từ cơ sở dữ liệu
Câu lệnh CASE trong MySQL là gì?
Câu lệnh CASE trong MySQL là một cách xử lý logic if/else. Nó là một loại câu lệnh điều khiển hình thành tế bào của ngôn ngữ lập trình khi chúng điều khiển việc thực thi các tập hợp câu lệnh khác
Câu lệnh CASE trải qua các điều kiện khác nhau và trả về các giá trị khi điều kiện đầu tiên được đáp ứng [giống như câu lệnh IF-THEN-ELSE trong các ngôn ngữ cấp thấp]. Khi một điều kiện là đúng, nó sẽ dừng duyệt và trả về kết quả. Nếu không có điều kiện nào đúng, nó sẽ trả về giá trị trong mệnh đề ELSE
Nếu không có mệnh đề ELSE và không có điều kiện nào đúng, nó chỉ trả về NULL
Cú pháp câu lệnh CASE trong MySQL
Cú pháp cơ bản
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionx THEN resultx ELSE result END;
Có thể có hai cách để đạt được các câu lệnh CASE-Switch
- Lấy một biến có tên là case_value và khớp nó với một số statement_list
CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END;
- Xem xét một điều_kiện_tìm_kiếm thay vì đẳng thức của biến và thực hiện câu lệnh_danh_sách tương ứng.
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END;
Ví dụ về câu lệnh CASE trong MySQL
Hãy xem xét một bảng. SINH VIÊN
bàn học sinh
ID sinh viên Tên KhoaGiới tính001AkashCSM002BikramMechM003ChandanCSM004DeepakCSM005EliciaECF006FernandesMechFThí dụ. Xem xét một kịch bản, trong đó bạn phải sửa đổi tên bộ phận thành dạng đầy đủ của chúng. Nếu tên bộ phận là CS, nó sẽ được chuyển đổi thành Khoa học máy tính; . và EC sang Điện tử và Truyền thông
Truy vấn mẫu
CASE department_name WHEN 'CS' THEN UPDATE Student SET department='Computer Science'; WHEN 'EC' THEN UPDATE Student SET department='Electronics and Communication'; ELSE UPDATE Student SET department=’Mechanical'; END;
đầu ra
Tên bộ phận tương ứng được đổi tên như sau
ID sinh viên Tên KhoaGiới tính001AkashKhoa học máy tínhM002BikramCơ khíM003ChandanKhoa học máy tínhM004DeepakKhoa học máy tínhM005Elicia Điện tử và Truyền thông F006FernandesCơ khíFThí dụ. Hãy xem xét một kịch bản, trong đó bạn phải chọn tất cả các trường tương ứng với bảng Sinh viên. Vì các giá trị được viết trong trường Giới tính là các giá trị ký tự đơn [M/F], nên chúng ta hãy viết một truy vấn để thay đổi M thành Nam và F thành Nữ
Truy vấn mẫu
SELECT Student ID, Name, Department, CASE Gender WHEN'M' THEN 'Male' WHEN'F' THEN 'Female' END FROM Student;
đầu ra
ID sinh viên Tên KhoaGiới tính001AkashKhoa học máy tínhNam002BikramCơ khíNam003ChandanKhoa học máy tínhNam004DeepakKhoa học máy tínhNam005EliciaĐiện tử và truyền thôngNữ006FernandesCơ khíNữCASE Switch trong SQL- Sắp xếp tùy chỉnh
Truy vấn mẫu
CREATE PROCEDURE GetStudent[@ColToSort varchar[150]] AS SELECT StudentID, Name, Gender, Department FROM Student ORDER BY CASE WHEN @ColToSort='Department' THEN Department WHEN @ColToSort='Name' THEN Name WHEN @ColToSort='Gender' THEN Gender ElSE StudentID END;
đầu ra
Đầu ra được sắp xếp theo trường được cung cấp
Thủ tục [hàm] trên lấy một biến kiểu dữ liệu varchar làm đối số, trên cơ sở đó sắp xếp các bộ trong bảng Student. Ngoài ra, chúng ta cũng có thể sử dụng câu lệnh CASE để so sánh các điều kiện
Thí dụ. Hãy xem xét một bảng có tên LIÊN HỆ chứa contactID và websiteID. Theo các chi tiết này, người dùng có thể điều hướng qua các liên kết này. ‘TechOnTheNet. com’ hoặc ‘CheckYourMath. com’
Truy vấn mẫu
SELECT CASE WHEN contact_id < 1000 THEN 'TechOnTheNet.com' WHEN website_id = 2 THEN 'CheckYourMath.com' END FROM contacts;
Bây giờ rõ ràng là trong khi viết các câu lệnh Case trong MySQL, một yếu tố quan trọng nhất là 'sắp xếp chúng theo đúng cách'. Chỉ cần nhớ rằng các điều kiện được đánh giá theo thứ tự được liệt kê bởi bạn. Khi bất kỳ điều kiện nào trở thành đúng, câu lệnh CASE sẽ trả về kết quả và không đánh giá các điều kiện nữa. Vì vậy, hãy cẩn thận trong khi chọn thứ tự mà bạn liệt kê các điều kiện của mình trong
Nếu bạn muốn tìm hiểu thêm về MySQL và tìm hiểu cơ sở dữ liệu quan hệ mã nguồn mở này, hãy xem Đào tạo chứng chỉ MySQL DBA của chúng tôi đi kèm với đào tạo trực tiếp do người hướng dẫn hướng dẫn và trải nghiệm dự án thực tế. Khóa đào tạo này sẽ giúp bạn hiểu sâu về MySQL và giúp bạn thành thạo chủ đề này
Có một câu hỏi cho chúng tôi?