Rumah  >  Artikel  >  pangkalan data  >  Adakah mysql mempunyai gelung for?

Adakah mysql mempunyai gelung for?

青灯夜游
青灯夜游asal
2023-03-30 20:26:316587semak imbas

Mysql tidak mempunyai gelung for. MySQL tidak menyokong pernyataan gelung Ia menyokong tiga pernyataan gelung: WHILE, REPEAT dan LOOP. Gelung WHILE menyemak ungkapan pada permulaan setiap lelaran penyataan gelung REPEAT, juga dikenali sebagai gelung pasca ujian, menyemak ungkapan selepas melaksanakan penyataan LOOP berulang kali boleh melaksanakan blok kod.

Adakah mysql mempunyai gelung for?

Persekitaran pengendalian tutorial ini: sistem windows10, mysql versi 8.0, komputer Dell G3.

Penyataan gelung dalam mysql

MySQL menyediakan penyataan gelung yang membolehkan anda melaksanakan berulang kali blok kod SQL berdasarkan syarat.

MySQL tidak menyokong pernyataan gelung MySQL hanya menyokong gelung semasa, gelung ulang dan gelung gelung.

MySQL menyediakan penyataan gelung yang membolehkan anda melaksanakan berulang kali blok kod SQL berdasarkan syarat. MySQL tidak menyokong pernyataan gelung Terdapat tiga pernyataan gelung dalam MySQL: WHILE, REPEAT dan LOOP.

Kami akan memeriksa setiap pernyataan gelung dengan lebih terperinci dalam bahagian berikut.

WHILE Loop

WHILESintaks pernyataan adalah seperti berikut:

WHILE expression DO
   statements
END WHILE

WHILE Gelung setiap kali Ungkapan disemak pada permulaan lelaran. Jika expressionevaluates ialah TRUE, MySQL akan melaksanakan pernyataan antara WHILE dan END WHILE sehingga expressionevaluates ialah FALSE. WHILE Gelung dipanggil gelung bersyarat praujian kerana ia sentiasa menyemak ungkapan pernyataan sebelum melaksanakannya.

Carta alir berikut menggambarkan pernyataan gelung WHILE:

Adakah mysql mempunyai gelung for?

Berikut ialah contoh penggunaan pernyataan gelung WHILE dalam prosedur tersimpan:

DELIMITER $$
 DROP PROCEDURE IF EXISTS test_mysql_while_loop$$
 CREATE PROCEDURE test_mysql_while_loop()
 BEGIN
 DECLARE x  INT;
 DECLARE str  VARCHAR(255);

 SET x = 1;
 SET str =  '';

 WHILE x  <p>Dalam <code>test_mysql_while_loop</code> prosedur tersimpan di atas: </p>
  • Mula-mula, bina rentetan str berulang kali sehingga nilai pembolehubah x lebih besar daripada 5.
  • Kemudian, gunakan pernyataan SELECT untuk memaparkan rentetan akhir.

Sila ambil perhatian bahawa jika nilai pembolehubah x tidak dimulakan, maka nilai lalainya ialah NULL. Oleh itu, keadaan dalam pernyataan gelung WHILE akan sentiasa TRUE dan anda akan mempunyai gelung tak tentu, yang tidak dapat diramalkan.

Mari kita uji test_mysql_while_loopstored memanggil prosedur tersimpan:

CALL test_mysql_while_loop();

Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut-

mysql> CALL test_mysql_while_loop();
+------------+
| str        |
+------------+
| 1,2,3,4,5, |
+------------+
1 row in set

Query OK, 0 rows affected

REPEAT Gelung

REPEATSintaks pernyataan gelung adalah seperti berikut:

REPEAT
 statements;
UNTIL expression
END REPEAT

Pertama, MySQL melaksanakan pernyataan dan kemudian menilai ungkapan penilaian ( expression). Jika ungkapan (expression) menilai kepada FALSE, MySQL akan melaksanakan pernyataan itu berulang kali sehingga ungkapan itu menilai kepada TRUE.

Oleh kerana pernyataan gelung REPEAT menyemak ungkapan (expression) selepas melaksanakan pernyataan, pernyataan gelung REPEAT juga dipanggil gelung ujian pasca.

Carta alir berikut menggambarkan proses pelaksanaan pernyataan gelung REPEAT:

Adakah mysql mempunyai gelung for?

Kita boleh menggunakan pernyataan gelung REPEAT untuk menulis semula test_mysql_while_loop Proses penyimpanan, gunakan penyataan gelung WHILE:

DELIMITER $$
 DROP PROCEDURE IF EXISTS mysql_test_repeat_loop$$
 CREATE PROCEDURE mysql_test_repeat_loop()
 BEGIN
 DECLARE x INT;
 DECLARE str VARCHAR(255);

 SET x = 1;
        SET str =  '';

 REPEAT
 SET  str = CONCAT(str,x,',');
 SET  x = x + 1; 
        UNTIL x  > 5
        END REPEAT;

        SELECT str;
 END$$
DELIMITER ;

Perlu diingat bahawa tiada koma bertitik (UNTIL) dalam ungkapan ;.

Laksanakan pernyataan pertanyaan di atas dan dapatkan hasil berikut-

mysql> CALL mysql_test_repeat_loop();
+------------+
| str        |
+------------+
| 1,2,3,4,5, |
+------------+
1 row in set

Query OK, 0 rows affected

LOOP, LEAVE dan LELAR penyataan

Terdapat dua Penyata membenarkan anda mengawal gelung: Pernyataan

  • LEAVE digunakan untuk keluar dari gelung serta-merta tanpa menunggu untuk menyemak keadaan. Prinsip kerja pernyataan LEAVE adalah serupa dengan pernyataan C/C++ dalam PHP, break, Java dan bahasa lain. Pernyataan
  • ITERATE membolehkan anda melangkau keseluruhan kod yang tinggal dan memulakan lelaran baharu. Pernyataan ITERATE adalah serupa dengan pernyataan PHP dalam C/C++, Java, continue, dsb.

MySQL juga mempunyai pernyataan LOOP, yang boleh melaksanakan blok kod berulang kali, ditambah dengan fleksibiliti menggunakan tag gelung.

Berikut ialah contoh penggunaan pernyataan gelung LOOP.

CREATE PROCEDURE test_mysql_loop()
 BEGIN
 DECLARE x  INT;
        DECLARE str  VARCHAR(255);

 SET x = 1;
        SET str =  '';

 loop_label:  LOOP
 IF  x > 10 THEN 
 LEAVE  loop_label;
 END  IF;

 SET  x = x + 1;
 IF (x mod 2) THEN
     ITERATE  loop_label;
 ELSE
    SET  str = CONCAT(str,x,',');
 END IF;
    END LOOP;    
    SELECT str;
END;
  • 以上存储过程仅构造具有偶数字符串的字符串,例如2,4,6等。
  • LOOP语句之前放置一个loop_label循环标签。
  • 如果x的值大于10,则由于LEAVE语句,循环被终止。
  • 如果x的值是一个奇数,ITERATE语句忽略它下面的所有内容,并开始一个新的迭代。
  • 如果x的值是偶数,则ELSE语句中的块将使用偶数构建字符串。

执行上面查询语句,得到以下结果 -

mysql> CALL test_mysql_loop();
+-------------+
| str         |
+-------------+
| 2,4,6,8,10, |
+-------------+
1 row in set

Query OK, 0 rows affected

【相关推荐:mysql视频教程

Atas ialah kandungan terperinci Adakah mysql mempunyai gelung for?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn