Hướng dẫn vòng lặp trong mysql

Cuối cùng cũng tới bài căng nhất này đó là bài vòng lặp while trong MYSQL. Nếu bạn là dân lâp trình web thì cũng không quên vòng lặp while trong php nhỉ? Nó ít khi được sử dụng khi viết ứng dụng web (hay dùng foreach) nhưng trong MYSQL thì lại khác, chúng ta sử dụng vòng lặp WHILE rất nhiều.

Hướng dẫn vòng lặp trong mysql

Hướng dẫn vòng lặp trong mysql

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong MySql có ba vòng lặp chính đó là vòng lặp while, vòng lặp repeat, vòng lặp với lệnh LOOPLIEVE. Trong bài này chúng ta tìm hiểu vòng lặp while trước.

1. Cú pháp vòng lặp while trong MYSQL

Ta có cú pháp vòng lặp while như sau:

Bài viết này được đăng tại [free tuts .net]

WHILE expression DO
   Statements
END WHILE;

Nếu biểu thức expression 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. Chính vì vậy khi sử dụng bạn cẩn thận nếu như bị lặp vô hạn thì ưng dụng của bạn sẽ bị chết ngay lập tức.

2. Ví dụ vòng lặp While trong MYSQL

Ví dụ: Viết chương trình Stored Procedure in ra màn hình các số từ a tới b bằng vòng lặp While.

Trong ví dụ này mình có sử dụng hàm CONCAT, đây là một hàm nỗi chuỗi trong MYSQL và tham số truyền vào của nó là danh sách các chuỗi cần nối cách nhau bởi dấu phẩy. Hàm này không giới hạn tham số truyền vào. Nếu như bạn sử dụng cú pháp dấu + để nối chuỗi thì sai nhé, trong MYSQL không hỗ trợ phép toan này đối với chuỗi mà chỉ dành cho number.

DELIMITER $$

DROP PROCEDURE IF EXISTS loopWhile$$

CREATE PROCEDURE loopWhile(
	IN a INT(11),
	IN b INT(11)
)
BEGIN
	-- Chuoi in ra man hinh--
        DECLARE str  VARCHAR(255) DEFAULT '';
	
        WHILE (a <= b) DO
		SET  str = CONCAT(str,a,',');
                SET  a = a + 1; 
        END WHILE;
        
        SELECT str;
END$$
DELIMITER ;

Chạy thử:

Kết quả:

Hướng dẫn vòng lặp trong mysql

Lời kết:

Bài này chỉ trình bày tới đây thôi vì nội dung của nó cũng không có gì nhiều, chỉ yếu đưa ra cú pháp và ví dụ sử dụng vòng lặp while trong mysql để các bạn dễ hiểu hơn thôi. Ở một serie khác chúng ta sẽ làm những bài tập vận dụng nhiều hơn chứ bây giờ mà đưa vào thì các bạn sẽ loạn mất. chúc các bạn học tốt nhé.

Ví dụ cú pháp vòng lặp trong MySQL:

delimiter //

CREATE procedure yourdatabase.while_example()
wholeblock:BEGIN
  declare str VARCHAR(255) default '';
  declare x INT default 0;
  SET x = 1;

  WHILE x <= 5 DO
    SET str = CONCAT(str,x,',');
    SET x = x + 1;
  END WHILE;

  select str;
END//

Bản in nào:

mysql> call while_example();
+------------+
| str        |
+------------+
| 1,2,3,4,5, |
+------------+

Ví dụ cú pháp vòng lặp REPEAT trong MySQL:

delimiter //

CREATE procedure yourdb.repeat_loop_example()
wholeblock:BEGIN
  DECLARE x INT;
  DECLARE str VARCHAR(255);
  SET x = 5;
  SET str = '';

  REPEAT
    SET str = CONCAT(str,x,',');
    SET x = x - 1;
    UNTIL x <= 0
  END REPEAT;

  SELECT str;
END//

Bản in nào:

mysql> call repeat_loop_example();
+------------+
| str        |
+------------+
| 5,4,3,2,1, |
+------------+

Ví dụ cú pháp vòng lặp FOR trong MySQL:

delimiter //

CREATE procedure yourdatabase.for_loop_example()
wholeblock:BEGIN
  DECLARE x INT;
  DECLARE str VARCHAR(255);
  SET x = -5;
  SET str = '';

  loop_label: LOOP
    IF x > 0 THEN
      LEAVE loop_label;
    END IF;
    SET str = CONCAT(str,x,',');
    SET x = x + 1;
    ITERATE loop_label;
  END LOOP;

  SELECT str;

END//

Bản in nào:

mysql> call for_loop_example();
+-------------------+
| str               |
+-------------------+
| -5,-4,-3,-2,-1,0, |
+-------------------+
1 row in set (0.00 sec)

Thực hiện hướng dẫn: http://www.mysqltutorial.org/stored-procedures-loop.aspx

Nếu tôi bắt bạn đẩy loại cấu trúc vòng lặp MySQL này vào sản xuất, tôi sẽ bắn bạn bằng thiết bị phóng tên lửa bọt. Bạn có thể sử dụng cờ lê ống để đập vào móng tay, nhưng làm như vậy khiến bạn trông thật ngớ ngẩn.

50 hữu ích 3 bình luận chia sẻ