Apakah kegunaan kursor 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.
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 -
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();
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;
Jadi kod berikut ditambah pada gelung:
declare continue HANDLER for not found set done = true;
Jika nilai selesai adalah benar, tamatkan gelung. Teruskan melaksanakan kod berikut
--判断游标的循环是否结束 if done then leave read_loop; --跳出游标循环 end if;
- 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();
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();
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();
SQL Dinamik
Mysql menyokong fungsi SQL dinamik
[Cadangan berkaitan:
tutorial video mysqlset @sqlStr='select * from table where condition1 = ?'; prepare s1 for @sqlStr; --如果有多个参数用逗号分隔 execute s1 using @condition1; --手工释放,或者是 connection 关闭时, server 自动回收 deallocate prepare s1;
Atas ialah kandungan terperinci Apakah kegunaan kursor mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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 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.

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.

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.

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

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

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.

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.
