Bài 3 – If Else, Case, While Do Trong Mysql - Nongdanit
Có thể bạn quan tâm
Câu lệnh IF-ELSE
Mệnh đề if thì không cần nói nhiều khi lập trình thì đã quá quen thuộc, cho phép bạn tạo luồng xử lý rẻ nhánh, nếu đúng thì thực thi và ngược lại mệnh đề sai thì nó sẽ không thực thi. Chúng ta sẻ kết hợp các toán tử, toán hạng và biến để tạo ra các mệnh đề đúng sai trong điều kiện của lệnh:
Cú pháp như sau:
[sql]
IF expression_1 THEN code 1 ELSEIF expression_2 THEN code 2 ELSE code 3 END IF;
[/sql]
Mệnh đề này đương nhiên tùy theo bạn mà có thể dùng nhiều elseif, chỉ cần điều kiện expression_1 đúng sẽ thực hiện dòng code 1 bên dưới không đúng sẽ thực hiện kiểm tra expression_2 đúng thực code 2, không đúng nữa thì thực hiện code 3 và kết thúc tại đây, xem ví dụ sẽ thấy rõ hơn.
Ví dụ cho IF ELSE:
Trước tiên chúng ta sẽ tạo một bảng dữ liệu mới là user:
[sql]
CREATE TABLE IF NOT EXISTS `users` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `username` VARCHAR(30) COLLATE utf8_unicode_ci DEFAULT NULL, `password` VARCHAR(32) COLLATE utf8_unicode_ci DEFAULT NULL, `level` TINYINT(1) DEFAULT ‘0’, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
INSERT INTO `users` (`id`, `username`, `password`, `level`) VALUES (1, ‘nongdanit’, md5(123456), 1), (2, ‘nongdanit1’,md5(123456), 2), (3, ‘nongdanit2’, md5(123456), 3);
[/sql]
Ý nghĩa như sau: password được mã hóa md5, level có 3 giá trị, 1 là admin, 2 là author, 3 là member.
Cách thực hiện:
- Tạo Procedure với tham số truyền vào là gồm username và password thuộc loại IN, còn result thuộc loại OUT.
- Tạo một biến flag để lưu trữ level của người dùng, giá trị khởi tạo của nó là 0. Sau khi thực hiện lệnh SELECT nếu giá trị flag = 0 tức là không tồn tại username và password, ngược lại thì ta sẽ kiểm tra flag để trả về kết quả tương ứng với giá trị level.
Tạo Procedure như hình:
hoặc theo đoạn cú pháp sau:
[sql]
CREATE PROCEDURE `Login`( IN text_username VARCHAR(255), IN text_password VARCHAR(255), OUT result VARCHAR(255) ) BEGIN /*Tao bien flag. Mac dinh la 0*/ DECLARE flag INT(11) DEFAULT 0; /*Thuc hien truy van gan level vao bien flag*/ SELECT level INTO flag FROM users WHERE username = text_username AND password = MD5(text_password); /*Nếu sau khi thực hiện lệnh select này mà ko có dữ liệu flag sẽ không đổi, tức là User không tồn tại*/ IF (flag = 0) THEN SET result = ‘User không tồn tại’; ELSEIF (flag = 1) THEN SET result = ‘Chào admin’; ELSEIF (flag = 2) THEN SET result = ‘Chào author’; ELSE SET result = ‘Chào member’; END IF; END
[/sql]
Gọi hàm:
[sql]
CALL Login(‘nongdanit’, ‘123456’, @result); SELECT @result;
[/sql]
Kết quả nó sẽ là “chào admin”, thay đổi về username và password để xem kết quả nhá.
Câu lệnh CASE
Lệnh này tương tự như Switch case trong PHP, lệnh case trong MySQL dùng để rẻ nhánh dòng xử lý, nếu trường hợp nào đúng thì sẽ thực thi và thoát khỏi lệnh CASE.
Cú pháp:
[sql]
CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] … [ELSE statement_list] END CASE;
[/sql]
Với:
- when_value khi đúng sẽ thực thi câu lệnh phía sau THEN liền kề.
- ELSE chính là trường hợp cuối cùng nếu như các điều kiện WHEN ở trên không đúng thì nó sẽ được chạy. ELSE này chính là lệnh default trong Switch Case.
Ví dụ: Viết Stored Procedure nhập vào một số bất kỳ và kiểm tra số đó xem có tương ứng với các thứ trong tuần hay không, sử dụng lệnh CASE trong MYSQL
Dòng lệnh như sau:
[sql] DROP PROCEDURE IF EXISTS `thuTrongTuan`; DELIMITER $$ CREATE PROCEDURE `thuTrongTuan`(IN so INT(11)) BEGIN DECLARE message VARCHAR(255); CASE so WHEN 2 THEN SET message = ‘thu hai’; WHEN 3 THEN SET message = ‘thu ba’; WHEN 4 THEN SET message = ‘thu tu’; WHEN 5 THEN SET message = ‘thu nam’; WHEN 6 THEN SET message = ‘thu sau’; WHEN 7 THEN SET message = ‘thu bay’; WHEN 8 THEN SET message = ‘chu nhat’; ELSE SET message = ‘KHONG CO THU TRONG TUAN’; END CASE; SELECT message; END;
[/sql]
Hoặc theo hình sau:
Gọi lệnh:
Call thuTrongTuan(2); // thu hai
Call thuTrongTuan(3); //thu ba
Thay thế các số và nhìn xem kết quả 😀
Vòng lặp while do trong MySql
Cú pháp:
[sql] WHILE search_condition DO statement_list END WHILE [/sql]
Nếu biểu thức search_condition có giá trị là sai thì vòng lặp sẽ dừng, ngược lại thì vòng lặp sẽ được thực hiện. Vì vậy khi sử dụng phải cẩn thận để không bị lặp vô hạn.
Ví dụ:
Viết chương trình Stored Procedure in ra các số từ x tới y bằng vòng lặp While.
Chúng ta tìm hiểu thêm một hàm CONCAT dùng để nối chuỗi trong MySQL, tham số truyền vào của nó là danh sách các chuỗi cần nối lại và cách nhau bởi dấu phẩy.
[sql] DROP PROCEDURE IF EXISTS While_Do_Example; DELIMITER $$ CREATE PROCEDURE While_Do_Example( IN x INT(11), IN y INT(11) ) BEGIN DECLARE str VARCHAR(255) DEFAULT ”; WHILE (x <= y) DO SET str = CONCAT(str,x,’,’); SET x = x + 1; END WHILE; SELECT str; END; [/sql]
Hình ảnh như sau:
Gọi hàm như sau: CALL While_Do_Example( 1, 10 );
[thongbao]
- Nếu có thắc mắc gì các bạn để lại comment bên dưới mình sẽ trả lời sớm nhất có thể.
- Cảm ơn các bạn đã đọc.
[/thongbao]
[Mysql] – Bài 3 – If else, case, while do trong Mysql Tagged on: mysqlTừ khóa » Sử Dụng If Trong Mysql
-
Câu Lệnh If Else Trong MYSQL - Freetuts
-
Hàm IF Trong MySQL - Freetuts
-
Hàm IF Trong MySQL - Vi
-
MySQL: Case Vs. If Vs. If Function | TopDev
-
Cách Sử Dụng Câu Lệnh IF Của MySQL - Morioh
-
IF… ELSE Trong Mệnh đề WHERE Trong MySQL - HelpEx
-
Làm Thế Nào để Viết Câu Lệnh IF ELSE Trong Truy Vấn MySQL? - HelpEx
-
Cách Truy Vấn Dữ Liệu Theo điều Kiện Trong MySQL - Web Cơ Bản
-
Hàm IF Trong MySQL - Freetuts
-
VIEW, FUNCTION & STORE PROCEDURE VÀ TRIGGER TRONG ...
-
Sử Dụng View, Trigger Và Procedure Trong Mysql - Viblo
-
Top 15 Cách Dùng If Trong Mysql 2022
-
Lệnh EXISTS Trong MySQL - Web Cơ Bản