Rumah pangkalan data tutorial mysql Apakah kegunaan kursor mysql?

Apakah kegunaan kursor mysql?

Jun 27, 2022 am 11:20 AM
mysql

Dalam MySQL, kursor berfungsi sebagai penunjuk dan digunakan terutamanya untuk melintasi set keputusan rekod yang dikembalikan dengan menanyakan pangkalan data untuk melaksanakan operasi yang sepadan. Kursor sebenarnya ialah mekanisme yang mengekstrak satu rekod pada satu masa daripada set hasil yang mengandungi berbilang rekod data. Sistem pengurusan pangkalan data relasi pada asasnya berorientasikan set Dalam MySQL, tiada bentuk ungkapan untuk menerangkan satu rekod dalam jadual, melainkan klausa WHERE digunakan untuk mengehadkan hanya satu rekod untuk dipilih, jadi kadangkala kursor mesti digunakan untuk memilih satu rekod pemprosesan data.

Apakah kegunaan kursor mysql?

Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.

MySQL Cursor (Kursor)

Kursor sebenarnya ialah kaedah yang boleh mengekstrak satu rekod pada satu masa daripada set hasil yang merangkumi berbilang mekanisme rekod data.

Kursor bertindak sebagai penunjuk.

Walaupun kursor boleh melintasi semua baris dalam hasil carian, ia hanya menghala ke satu baris pada satu masa.

Fungsi kursor adalah untuk melintasi rekod yang dikembalikan dengan menanyakan pangkalan data untuk melaksanakan operasi yang sepadan.

Sistem pengurusan pangkalan data hubungan pada asasnya berorientasikan set Dalam MySQL, tiada ungkapan untuk menerangkan satu rekod dalam jadual, melainkan klausa WHERE digunakan untuk mengehadkan hanya satu rekod untuk dipilih. . Jadi kadangkala kita mesti menggunakan kursor untuk memproses data pada satu rekod.

Secara amnya, kursor digunakan untuk mencari baris tertentu set hasil untuk mengubah suai data.

Penggunaan kursor

1. Isytiharkan kursor: declare 游标名称 CURSOR for table;(Jadual di sini boleh menjadi sebarang koleksi yang anda tanya)

2. Buka kursor yang ditakrifkan: open 游标名称;

3 Dapatkan baris data seterusnya: FETCH  游标名称 into testrangeid,versionid;

4. semak): di sini Ia bergantung pada situasi tertentu

5. Lepaskan kursor: CLOSE 游标名称;

Nota: Setiap ayat prosedur tersimpan mysql mesti diakhiri dengan;, dan medan sementara yang digunakan perlu diisytiharkan sebelum menentukan kursor.

Contoh

-  BEGIN  
  --定义变量  declare testrangeid BIGINT;  
declare versionid BIGINT;   
declare done int;  
--创建游标,并存储数据  declare cur_test CURSOR for   
   select id as testrangeid,version_id as versionid from tp_testrange;  
--游标中的内容执行完后将done设置为1  
 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;   
--打开游标  open cur_test;  
--执行循环    posLoop:LOOP  
--判断是否结束循环  
        IF done=1 THEN    
      LEAVE posLoop;  
    END IF;   
--取游标中的值  
    FETCH  cur_test into testrangeid,versionid;  
--执行更新操作  
    update tp_data_execute set version_id=versionid where testrange_id = testrangeid;  
  END LOOP posLoop;  
--释放游标  CLOSE cur_test;  
  
END  -
Salin selepas log masuk

Contoh 2:

Kami kini akan menggunakan prosedur tersimpan untuk membuat fungsi untuk mengira iPhone Berapakah jumlah inventori dan keluarkan jumlahnya kepada konsol.

--在windows系统中写存储过程时,如果需要使用declare声明变量,需要添加这个关键字,否则会报错。  delimiter //  drop procedure if exists StatisticStore;  
CREATE PROCEDURE StatisticStore()  
BEGIN  
    --创建接收游标数据的变量  
    declare c int;  
    declare n varchar(20);  
    --创建总数变量  
    declare total int default 0;  
    --创建结束标志变量  
    declare done int default false;  
    --创建游标  
    declare cur cursor for select name,count from store where name = 'iphone';  
    --指定游标循环结束时的返回值  
    declare continue HANDLER for not found set done = true;  
    --设置初始值  
    set total = 0;  
    --打开游标  
    open cur;  
    --开始循环游标里的数据      read_loop:loop  
    --根据游标当前指向的一条数据  
    fetch cur into n,c;  
    --判断游标的循环是否结束  
    if done then  
        leave read_loop;    --跳出游标循环  
    end if;  
    --获取一条数据时,将count值进行累加操作,这里可以做任意你想做的操作,  
    set total = total + c;  
    --结束游标循环  
    end loop;  
    --关闭游标  
    close cur;  
  
    --输出结果  
    select total;  
END;  
--调用存储过程  call StatisticStore();
Salin selepas log masuk

fetch adalah untuk mendapatkan baris data yang dihalakan oleh kursor pada masa ini dan halakan penuding ke baris seterusnya Meneruskan pelaksanaan apabila kursor sudah menghala ke baris terakhir akan menyebabkan limpahan kursor.
Apabila menggunakan kursor gelung, ia tidak akan memantau sama ada ia telah mencapai sekeping data terakhir seperti berikut akan menyebabkan gelung tak terhingga; ralat NOT FOUND pratakrif MySQL kursor akan dicetuskan apabila limpahan berlaku, jadi kod berikut digunakan di atas untuk menentukan acara berterusan apabila ralat tidak ditemui dicetuskan dan untuk mengubah suai nilai pembolehubah yang dilakukan apabila peristiwa ini berlaku.

read_loop:loop  
fetch cur into n,c;  
set total = total+c;  
end loop;
Salin selepas log masuk

Jadi kod berikut ditambah pada gelung:

declare continue HANDLER for not found set done = true;
Salin selepas log masuk

Jika nilai selesai adalah benar, tamatkan gelung. Teruskan melaksanakan kod berikut

--判断游标的循环是否结束  if done then  
    leave read_loop;    --跳出游标循环  end if;
Salin selepas log masuk
Penggunaan

Terdapat tiga cara untuk menggunakan kursor:

Yang pertama ialah pelaksanaan di atas, menggunakan gelung gelung;
  • Cara kedua adalah seperti berikut, menggunakan gelung sementara:
  • Cara ketiga ialah menggunakan pelaksanaan ulangan:
drop procedure if exists StatisticStore1;  
CREATE PROCEDURE StatisticStore1()  
BEGIN  
    declare c int;  
    declare n varchar(20);  
    declare total int default 0;  
    declare done int default false;  
    declare cur cursor for select name,count from store where name = 'iphone';  
    declare continue HANDLER for not found set done = true;  
    set total = 0;  
    open cur;  
    fetch cur into n,c;  
    while(not done) do  
        set total = total + c;  
        fetch cur into n,c;  
    end while;  
      
    close cur;  
    select total;  
END;  
  
call StatisticStore1();
Salin selepas log masuk

Sarang kursor
drop procedure if exists StatisticStore2;  
CREATE PROCEDURE StatisticStore2()  
BEGIN  
    declare c int;  
    declare n varchar(20);  
    declare total int default 0;  
    declare done int default false;  
    declare cur cursor for select name,count from store where name = 'iphone';  
    declare continue HANDLER for not found set done = true;  
    set total = 0;  
    open cur;  
    repeat  
    fetch cur into n,c;  
    if not done then  
        set total = total + c;  
    end if;  
    until done end repeat;  
    close cur;  
    select total;  
END;  
  
call StatisticStore2();
Salin selepas log masuk

Dalam mysql, setiap blok permulaan permulaan ialah kawasan skop bebas Memandangkan peristiwa ralat yang sama dalam MySql hanya boleh ditakrifkan sekali, jika ada adalah berbilang takrifan, ia akan menggesa Pengendali Pendua diisytiharkan dalam blok yang sama semasa penyusunan.

Perkara di atas adalah untuk melaksanakan gelung bersarang Sudah tentu, contoh ini tidak masuk akal. Lihat sahaja.

drop procedure if exists StatisticStore3;  
CREATE PROCEDURE StatisticStore3()  
BEGIN  
    declare _n varchar(20);  
    declare done int default false;  
    declare cur cursor for select name from store group by name;  
    declare continue HANDLER for not found set done = true;  
    open cur;  
    read_loop:loop  
    fetch cur into _n;  
    if done then  
        leave read_loop;  
    end if;  
    begin  
        declare c int;  
        declare n varchar(20);  
        declare total int default 0;  
        declare done int default false;  
        declare cur cursor for select name,count from store where name = 'iphone';  
        declare continue HANDLER for not found set done = true;  
        set total = 0;  
        open cur;  
        iphone_loop:loop  
        fetch cur into n,c;  
        if done then  
            leave iphone_loop;  
        end if;  
        set total = total + c;  
        end loop;  
        close cur;  
        select _n,n,total;  
    end;  
    begin  
            declare c int;  
            declare n varchar(20);  
            declare total int default 0;  
            declare done int default false;  
            declare cur cursor for select name,count from store where name = 'android';  
            declare continue HANDLER for not found set done = true;  
            set total = 0;  
            open cur;  
            android_loop:loop  
            fetch cur into n,c;  
            if done then  
                leave android_loop;  
            end if;  
            set total = total + c;  
            end loop;  
            close cur;  
        select _n,n,total;  
    end;  
    begin  
      
    end;  
    end loop;  
    close cur;  
END;  
  
call StatisticStore3();
Salin selepas log masuk

SQL Dinamik

Mysql menyokong fungsi SQL dinamik

[Cadangan berkaitan:

tutorial video mysql
set @sqlStr='select * from table where condition1 = ?';  
prepare s1 for @sqlStr;  
--如果有多个参数用逗号分隔  execute s1 using @condition1;  
--手工释放,或者是 connection 关闭时, server 自动回收  deallocate prepare s1;
Salin selepas log masuk
]

Atas ialah kandungan terperinci Apakah kegunaan kursor mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara membuka phpmyadmin Cara membuka phpmyadmin Apr 10, 2025 pm 10:51 PM

Anda boleh membuka phpmyadmin melalui langkah -langkah berikut: 1. Log masuk ke panel kawalan laman web; 2. Cari dan klik ikon phpmyadmin; 3. Masukkan kelayakan MySQL; 4. Klik "Login".

MySQL: Pengenalan kepada pangkalan data paling popular di dunia MySQL: Pengenalan kepada pangkalan data paling popular di dunia Apr 12, 2025 am 12:18 AM

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

Cara menggunakan redis berulir tunggal Cara menggunakan redis berulir tunggal Apr 10, 2025 pm 07:12 PM

Redis menggunakan satu seni bina berulir untuk memberikan prestasi tinggi, kesederhanaan, dan konsistensi. Ia menggunakan I/O multiplexing, gelung acara, I/O yang tidak menyekat, dan memori bersama untuk meningkatkan keserasian, tetapi dengan batasan batasan konkurensi, satu titik kegagalan, dan tidak sesuai untuk beban kerja yang berintensifkan.

Mengapa menggunakan mysql? Faedah dan kelebihan Mengapa menggunakan mysql? Faedah dan kelebihan Apr 12, 2025 am 12:17 AM

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

Tempat Mysql: Pangkalan Data dan Pengaturcaraan Tempat Mysql: Pangkalan Data dan Pengaturcaraan Apr 13, 2025 am 12:18 AM

Kedudukan MySQL dalam pangkalan data dan pengaturcaraan sangat penting. Ia adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pelbagai senario aplikasi. 1) MySQL menyediakan fungsi penyimpanan data, organisasi dan pengambilan data yang cekap, sistem sokongan web, mudah alih dan perusahaan. 2) Ia menggunakan seni bina pelanggan-pelayan, menyokong pelbagai enjin penyimpanan dan pengoptimuman indeks. 3) Penggunaan asas termasuk membuat jadual dan memasukkan data, dan penggunaan lanjutan melibatkan pelbagai meja dan pertanyaan kompleks. 4) Soalan -soalan yang sering ditanya seperti kesilapan sintaks SQL dan isu -isu prestasi boleh disahpepijat melalui arahan jelas dan log pertanyaan perlahan. 5) Kaedah pengoptimuman prestasi termasuk penggunaan indeks rasional, pertanyaan yang dioptimumkan dan penggunaan cache. Amalan terbaik termasuk menggunakan urus niaga dan preparedStatemen

Pantau titisan redis dengan perkhidmatan pengeksport redis Pantau titisan redis dengan perkhidmatan pengeksport redis Apr 10, 2025 pm 01:36 PM

Pemantauan yang berkesan terhadap pangkalan data REDIS adalah penting untuk mengekalkan prestasi yang optimum, mengenal pasti kemungkinan kesesakan, dan memastikan kebolehpercayaan sistem keseluruhan. Perkhidmatan Pengeksport Redis adalah utiliti yang kuat yang direka untuk memantau pangkalan data REDIS menggunakan Prometheus. Tutorial ini akan membimbing anda melalui persediaan lengkap dan konfigurasi perkhidmatan pengeksport REDIS, memastikan anda membina penyelesaian pemantauan dengan lancar. Dengan mengkaji tutorial ini, anda akan mencapai tetapan pemantauan operasi sepenuhnya

Cara Melihat Ralat Pangkalan Data SQL Cara Melihat Ralat Pangkalan Data SQL Apr 10, 2025 pm 12:09 PM

Kaedah untuk melihat ralat pangkalan data SQL adalah: 1. Lihat mesej ralat secara langsung; 2. Gunakan kesilapan menunjukkan dan menunjukkan perintah amaran; 3. Akses log ralat; 4. Gunakan kod ralat untuk mencari punca kesilapan; 5. Semak sambungan pangkalan data dan sintaks pertanyaan; 6. Gunakan alat debugging.

Cara menyambung ke pangkalan data Apache Cara menyambung ke pangkalan data Apache Apr 13, 2025 pm 01:03 PM

Apache menyambung ke pangkalan data memerlukan langkah -langkah berikut: Pasang pemacu pangkalan data. Konfigurasikan fail web.xml untuk membuat kolam sambungan. Buat sumber data JDBC dan tentukan tetapan sambungan. Gunakan API JDBC untuk mengakses pangkalan data dari kod Java, termasuk mendapatkan sambungan, membuat kenyataan, parameter mengikat, melaksanakan pertanyaan atau kemas kini, dan hasil pemprosesan.

See all articles