Chúng ta có thể sử dụng vòng lặp while trong MySQL không?

Như chúng ta biết rằng MySQL cung cấp cho chúng ta các câu lệnh lặp cho phép chúng ta thực thi lặp đi lặp lại một khối mã SQL dựa trên một điều kiện. Lệnh lặp WHILE là một trong những loại lệnh lặp như vậy. Cú pháp của nó như sau -

WHILE expression DO
statements
END WHILE

Trên thực tế, vòng lặp WHILE kiểm tra biểu thức khi bắt đầu mỗi lần lặp. Nếu biểu thức đánh giá là đúng, MySQL sẽ thực thi các câu lệnh giữa WHILE và END WHILE cho đến khi biểu thức đánh giá là sai. Vòng lặp WHILE kiểm tra biểu thức trước khi thực thi câu lệnh, chính vì vậy nó còn được gọi là vòng lặp kiểm tra trước

Để chứng minh việc sử dụng vòng lặp WHILE với các thủ tục được lưu trữ, sau đây là một ví dụ:

mysql> Delimiter //
mysql> CREATE PROCEDURE While_Loop[]
  -> BEGIN
-> DECLARE A INT;
-> DECLARE XYZ Varchar[50];
-> SET A = 1;
-> SET XYZ = '';
-> WHILE A  SET XYZ = CONCAT[XYZ,A,','];
-> SET A = A + 1;
-> END WHILE;
-> SELECT XYZ;
-> END //
Query OK, 0 rows affected [0.31 sec]

Bây giờ, chúng ta có thể thấy kết quả bên dưới khi gọi thủ tục này -

mysql> DELIMITER ;
mysql> call While_Loop[];
+-----------------------+
| XYZ |
+-----------------------+
| 1,2,3,4,5,6,7,8,9,10, |
+-----------------------+
1 row in set [0.03 sec]

Các thủ tục được lưu trữ là các thủ tục con, đoạn câu lệnh SQL được lưu trữ trong danh mục SQL. Các thủ tục này chứa các tham số IN và OUT hoặc cả hai. Chúng có thể trả về tập kết quả trong trường hợp bạn sử dụng câu lệnh SELECT; . Bạn cũng có thể tạo các hàm trong MYSQL

Tương tự như các ngôn ngữ lập trình khác, MySQL cung cấp hỗ trợ cho các câu lệnh điều khiển luồng như IF, CASE, ITERATE, LEAVE LOOP, WHILE và REPEAT. Bạn có thể sử dụng các câu lệnh này trong các chương trình [thủ tục] được lưu trữ và RETURN trong các hàm được lưu trữ. Bạn có thể sử dụng một Câu lệnh điều khiển luồng với một câu lệnh khác

WHILE là một câu lệnh phức hợp của MySQL được sử dụng để thực thi lặp đi lặp lại một hoặc một tập hợp các câu lệnh miễn là điều kiện đã chỉ định là TRUE

cú pháp

Sau đây là cú pháp của câu lệnh WHILE là MySQL −

begin_label: WHILE search_condition DO
statement_list
END WHILE end_label

Trong đó, danh_sách_câu_lệnh là một hoặc một tập hợp các câu lệnh sẽ được lặp lại. begin_label và end_label là các nhãn tùy chọn của câu lệnh WHILE. Mỗi câu lệnh trong WHILE kết thúc bằng dấu chấm phẩy [hoặc, dấu phân cách hiện tại]

MySQL WHILE LOOP cho phép chúng ta thực hiện lặp đi lặp lại một hoặc nhiều truy vấn Câu lệnh MySQL trừ khi một điều kiện được đáp ứng để trả về giá trị kết quả tương ứng. Nó cũng được biết đến là một vòng lặp có điều kiện kiểm tra trước trong số các câu lệnh MySQL ba vòng WHILE, LOOP và REPEAT vì ở đây điều kiện tìm kiếm được kiểm tra ban đầu trước khi thực thi câu lệnh mã. Vòng lặp WHILE khi được xử lý lặp lại sẽ thực thi các câu lệnh SQL dưới dạng tập kết quả miễn là biểu thức điều kiện là TRUE. Mỗi câu lệnh trong vòng lặp WHILE kết thúc bằng dấu chấm phẩy. Việc lặp lại vòng lặp xảy ra mỗi khi điều kiện được kiểm tra và kết quả phụ thuộc vào dòng mã. Nhưng nếu điều kiện vòng lặp WHILE của MySQL là SAI khi biểu thức đánh giá giữa các câu lệnh while và end while thì nó sẽ thoát khỏi vòng lặp

cú pháp

Cú pháp cơ bản của vòng lặp WHILE được biểu diễn như sau

Bắt đầu khóa học khoa học dữ liệu miễn phí của bạn

Hadoop, Khoa học dữ liệu, Thống kê và những thứ khác

Gói khoa học dữ liệu tất cả trong một[360+ khóa học, hơn 50 dự án]

Giá
Xem khóa học

360+ Khóa học trực tuyến. hơn 50 dự án. Hơn 1500 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập Trọn đời
4. 7 [84.689 xếp hạng]

[Label_to _begin:] WHILE SearchCondition DO
SQL statement[s]
END WHILE [Label_to_end]

Giải thích các thuật ngữ cú pháp trên

  • Sử dụng tên nhãn, chúng ta có thể cung cấp một nhãn tùy chọn cho vòng lặp WHILE khi bắt đầu hoặc kết thúc quá trình thực thi câu lệnh truy vấn MySQL
  • Điều kiện tìm kiếm được chỉ định ngay sau từ khóa WHILE
  • Sau đó, tiếp theo là các lần lặp lại, điều kiện được kiểm tra ngay từ đầu
  • Nếu nó đánh giá TRUE, thì vòng lặp WHILE sẽ di chuyển về phía trước để thực hiện các danh sách câu lệnh khác cho đến khi kết quả của điều kiện tìm kiếm tạo ra TRUE
  • Giữa các từ khóa DO và END WHILE Vòng lặp, một hoặc nhiều câu lệnh được chỉ định sẽ được thực thi
  • Nếu WHILE đánh giá FALSE thì vòng lặp kết thúc và kết thúc
  • Vòng lặp hoạt động trên các chương trình được lưu trữ và trả về

Sơ đồ

Chúng ta có thể hiểu rõ hơn về quy trình vòng lặp WHILE của MySQL với sự trợ giúp của sơ đồ. Sơ đồ minh họa này sẽ làm rõ các khái niệm của chúng ta về các đánh giá TRUE và FALSE trong vòng lặp WHILE và thực thi các câu lệnh SQL

Lưu đồ chỉ định cách sắp xếp thiết yếu của quy trình lặp vòng lặp WHILE trong MySQL

WHILE LOOP hoạt động như thế nào trong MySQL?

  • Từ sơ đồ tượng trưng trực quan ở trên, thuật toán vòng lặp WHILE trong MySQL được thể hiện dưới dạng khái niệm thiết kế đơn giản và cũng có ý nghĩa
  • Đầu tiên, quá trình thực thi vòng lặp WHILE được bắt đầu, với mỗi lần lặp lại, điều kiện xác định được đánh giá, sau đó dựa trên kết quả của điều kiện WHILE, câu lệnh SQL được xác định. Khi vòng lặp WHILE cho kết quả TRUE thì các câu lệnh luồng mã sẽ được thực thi
  • Thứ hai, nếu việc thực thi vòng lặp WHILE có xu hướng tạo ra bất kỳ kết quả SAI nào theo điều kiện tìm kiếm thì luồng mã sẽ bị rút lại và vòng lặp WHILE dừng xử lý tiếp theo. Và giả sử, nếu có bất kỳ câu lệnh SQL nào nằm ngoài vòng lặp WHILE thì nó sẽ hoàn thành

Ví dụ để triển khai WHILE LOOP trong MySQL

Hãy để chúng tôi thảo luận về một số ví dụ về câu lệnh MySQL vòng lặp WHILE để thực thi mã truy vấn SQL như sau

  • Ví dụ: chúng tôi đang xem xét một bảng có tên là Calendar_Data để lưu trữ các giá trị của vòng lặp WHILE và thực hiện các câu lệnh tương ứng. Bây giờ chúng ta hãy viết truy vấn SQL để tạo bảng MySQL sẽ lưu trữ ngày và các thông tin dẫn xuất khác như năm, tháng, ngày và quý. Đây là câu lệnh SQL CREATE

Mã số

CREATE TABLE Calendar_Data [CID INT AUTO_INCREMENT, CDate DATE UNIQUE, CDay TINYINT NOT NULL, CMonth
TINYINT NOT NULL, CQuarter TINYINT NOT NULL, CYear INT
NOT NULL, PRIMARY KEY[CID]];

  • Sau này, chúng ta cần tạo một thủ tục lưu sẵn mới trong bảng Calendar_Data để nhập giá trị ngày. Truy vấn MySQL cho điều này ở bên dưới

Mã số

DELIMITER $$
CREATE PROCEDURE EntryCalendar[cdt DATE]
BEGIN
INSERT INTO Calendar_Data[CDate, CDay, CMonth, CQuarter, CYear] VALUES[cdt, EXTRACT[DAY FROM cdt], EXTRACT[MONTH FROM cdt], EXTRACT[QUARTER FROM cdt],
EXTRACT[YEAR FROM cdt]];
END$$
DELIMITER;
DELIMITER $$

  • Bây giờ một lần nữa, ở bước thứ ba, chúng ta sẽ tạo lại một thủ tục được lưu trữ mới, tôi. e. LoadCalendar_Data[] chịu trách nhiệm tải một số ngày vào Calendar_Data được khởi tạo theo ngày bắt đầu

Mã số

CREATE PROCEDURE LoadCalendar_Data[startDate DATE, day INT]
BEGIN
DECLARE counter INT DEFAULT 1;
DECLARE cdt DATE DEFAULT startDate;
WHILE counter

Chủ Đề