MySQL kini merupakan sistem pengurusan pangkalan data hubungan yang paling popular Ia menggunakan prosedur tersimpan untuk menyelenggara dan mengurus pelaksanaan pernyataan dan program SQL dengan lebih baik. Prosedur tersimpan ialah blok kod SQL tersusun awal yang boleh merangkum penyataan SQL yang biasa digunakan untuk meningkatkan kecekapan semasa berbilang pelaksanaan dan mengurangkan penggunaan sumber masa jalan.
Penggunaan prosedur tersimpan dalam MySQL
1 Cipta prosedur tersimpan
Secara asasnya, mencipta prosedur tersimpan adalah untuk menulis blok pernyataan SQL dan menciptanya dalam pangkalan data sistem. Simpan blok kod ini. Berikut ialah contoh khusus:
CREATE PROCEDURE `procedure_name` (`parameter_list`) BEGIN -- SQL 语句块 END
di mana, procedure_name
ialah nama prosedur yang disimpan dan paramter_list
ialah senarai parameter prosedur yang disimpan, yang boleh termasuk parameter input, parameter output atau tiada parameter.
Sebagai contoh, kami mencipta prosedur tersimpan untuk mendapatkan maklumat pengguna:
CREATE PROCEDURE `get_user_info`(user_id INT) BEGIN SELECT * FROM `user` WHERE `user_id` = user_id; END
Dalam blok pernyataan SQL prosedur tersimpan, kami boleh menggunakan semua pernyataan SQL yang disokong oleh MySQL, seperti SELECT, INSERT, UPDATE , DELETE, dsb., anda juga boleh menggunakan pernyataan aliran kawalan, seperti IF, WHILE, LOOP, dsb., untuk mencapai pemprosesan logik data yang lebih kompleks.
2. Panggil prosedur tersimpan
Selepas mencipta prosedur tersimpan, kita boleh memanggil prosedur tersimpan melalui pernyataan CALL dan hantar parameter kepadanya:
CALL procedure_name(param1, param2, ...)
Sebagai contoh, kita boleh menekan Panggil get_user_info
prosedur tersimpan yang ditakrifkan di atas dengan cara berikut:
CALL `get_user_info`(1);
3. Padam prosedur tersimpan
Jika prosedur tersimpan tidak lagi diperlukan dari semasa ke semasa, anda boleh menggunakan kenyataan DROP PROCEDURE Padamkannya:
DROP PROCEDURE `procedure_name`;
Contohnya:
DROP PROCEDURE `get_user_info`;
4. Contoh prosedur tersimpan
Mari lihat contoh prosedur tersimpan yang lengkap. Katakan kita mempunyai jadual score
yang menyimpan markah ujian pelajar, dan kita perlu mengira jumlah skor dan purata skor setiap pelajar, dan menyusunnya dari tinggi ke rendah mengikut jumlah skor. Ini boleh dicapai menggunakan prosedur tersimpan:
CREATE PROCEDURE `calc_stu_score`() BEGIN DECLARE `total_score` INT; DECLARE `avg_score` FLOAT; DECLARE `stu_id` INT DEFAULT 0; DECLARE `stu_name` VARCHAR(255); DECLARE `total` INT DEFAULT 0; DECLARE `cursor_stu_id` CURSOR FOR SELECT `stu_id` FROM `score` GROUP BY `stu_id`; DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = TRUE; DROP TEMPORARY TABLE IF EXISTS `tmp_score`; CREATE TEMPORARY TABLE `tmp_score` ( `stu_id` INT NOT NULL, `stu_name` VARCHAR(255) NOT NULL, `total_score` INT NOT NULL, `avg_score` FLOAT NOT NULL, PRIMARY KEY (`stu_id`) ); OPEN cursor_stu_id; stu_loop: LOOP FETCH cursor_stu_id INTO stu_id; IF finished = TRUE THEN LEAVE stu_loop; END IF; SELECT `name` INTO stu_name FROM `student` WHERE `stu_id` = stu_id; SELECT SUM(`sorce`), COUNT(*) INTO total_score, total FROM `score` WHERE `stu_id` = stu_id; SET avg_score = total_score / NULLIF(total, 0); INSERT INTO `tmp_score` (`stu_id`, `stu_name`, `total_score`, `avg_score`) VALUES (stu_id, stu_name, total_score, avg_score); END LOOP; CLOSE cursor_stu_id; SELECT * FROM `tmp_score` ORDER BY `total_score` DESC; DROP TEMPORARY TABLE `tmp_score`; END
Dalam prosedur tersimpan ini, kami mula-mula mentakrifkan beberapa pembolehubah yang perlu digunakan, termasuk total_score
mewakili jumlah skor pelajar, dan avg_score
mewakili tertentu The skor purata pelajar, stu_id
mewakili bilangan pelajar tertentu, stu_name
mewakili nama pelajar tertentu, dan terdapat jadual sementara tmp_score
.
Kemudian kami menggunakan pernyataan DECLARE CURSOR
untuk mengisytiharkan pembolehubah kursor cursor_stu_id
untuk menanyakan nombor pelajar dalam jadual pelajar. Dalam gelung, kami menanyakan jadual skor berdasarkan nombor pelajar ini, mengira jumlah skor dan purata skor pelajar, dan menyimpannya ke jadual sementara. Akhir sekali, kami menggunakan pernyataan SELECT
untuk menanyakan jadual sementara, mengisih jumlah skor dari tinggi ke rendah, dan akhirnya menggunakan pernyataan DROP TABLE
untuk memadamkan jadual sementara.
Akhir sekali, kita boleh menggunakan pernyataan CALL
untuk memanggil prosedur tersimpan ini:
CALL `calc_stu_score`();
Ringkasan
Prosedur tersimpan ialah alat yang sangat berkuasa dalam MySQL, yang boleh sangat Memudahkan operasi pangkalan data kami dan meningkatkan prestasi dan keselamatan pangkalan data. Dalam aplikasi praktikal, kami boleh menggunakan prosedur tersimpan untuk melengkapkan banyak operasi pemprosesan data yang kompleks untuk memenuhi keperluan perniagaan dengan lebih baik, meningkatkan kecekapan dan mengurangkan kos.
Atas ialah kandungan terperinci mysql menggunakan prosedur tersimpan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!