Rumah > Artikel > pangkalan data > Apakah kegunaan prosedur tersimpan mysql?
Peranan prosedur tersimpan mysql: 1. Memudahkan operasi kompleks dengan merangkumkan pemprosesan dalam unit yang mudah digunakan 2. Memudahkan pengurusan perubahan 3. Membantu meningkatkan prestasi aplikasi; aplikasi dan pelayan pangkalan data, kerana aplikasi tidak perlu menghantar beberapa penyata SQL yang panjang, tetapi hanya nama dan parameter prosedur yang disimpan 5. Ia boleh meningkatkan fungsi dan fleksibiliti penyata SQL, Ia membolehkan mysql untuk melengkapkan kompleks; pertimbangan dan operasi yang lebih kompleks 6. Ia boleh meningkatkan keselamatan pangkalan data dan integriti data, dsb.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Prosedur tersimpan ialah satu set pernyataan SQL yang direka bentuk untuk mencapai fungsi tertentu. Tujuan menggunakan prosedur tersimpan adalah untuk pra-menulis kerja biasa atau kompleks dengan pernyataan SQL dan menyimpannya dengan nama tertentu Prosedur ini disusun dan dioptimumkan dan disimpan dalam pelayan pangkalan data, jadi ia dipanggil prosedur tersimpan. Apabila anda memerlukan pangkalan data untuk menyediakan perkhidmatan yang sama seperti prosedur tersimpan yang ditentukan pada masa hadapan, anda hanya perlu memanggil "CALL nama prosedur yang disimpan" untuk melengkapkannya secara automatik.
Pernyataan SQL yang biasa digunakan untuk mengendalikan pangkalan data perlu disusun dahulu dan kemudian dilaksanakan. Prosedur tersimpan mengambil pendekatan lain untuk melaksanakan pernyataan SQL.
Prosedur tersimpan ialah fungsi boleh atur cara yang dicipta dan disimpan dalam pangkalan data Ia biasanya terdiri daripada pernyataan SQL dan beberapa struktur kawalan khas. Prosedur tersimpan amat sesuai apabila anda ingin melaksanakan fungsi khusus yang sama pada aplikasi atau platform yang berbeza.
MySQL versi 5.0 tidak menyokong prosedur tersimpan sebelum ini, yang sangat mengurangkan penggunaan MySQL. MySQL telah menyokong prosedur tersimpan sejak versi 5.0, yang bukan sahaja meningkatkan kelajuan pemprosesan pangkalan data, tetapi juga meningkatkan fleksibiliti pengaturcaraan pangkalan data
Prosedur tersimpan adalah fungsi penting dalam pangkalan data boleh digunakan Menukar data, memindahkan data dan membuat laporan adalah serupa dengan bahasa pengaturcaraan Setelah berjaya dilaksanakan, ia boleh dipanggil pada bila-bila masa untuk menyelesaikan operasi fungsi yang ditentukan.
Menggunakan prosedur tersimpan bukan sahaja boleh meningkatkan kecekapan capaian pangkalan data, tetapi juga meningkatkan keselamatan penggunaan pangkalan data.
Untuk pemanggil, prosedur tersimpan merangkum pernyataan SQL, dan pemanggil tidak perlu mempertimbangkan proses pelaksanaan khusus fungsi logik. Hanya panggilan mudah, ia boleh dipanggil dari bahasa pengaturcaraan seperti Java dan C#.
Peranan (kelebihan) prosedur tersimpan
Memudahkan kerumitan dengan merangkum pemprosesan dalam unit yang mudah digunakan operasi;
Memudahkan pengurusan perubahan. Jika nama jadual, nama lajur atau logik perniagaan berubah. Hanya kod prosedur yang disimpan perlu ditukar, dan mereka yang menggunakannya tidak akan menukar kod mereka sendiri; Apabila prosedur tersimpan yang dibuat disusun, ia disimpan dalam pangkalan data. Walau bagaimanapun, MySQL melaksanakan prosedur tersimpan sedikit berbeza. Prosedur tersimpan MySQL disusun atas permintaan. Selepas menyusun prosedur tersimpan, MySQL meletakkannya dalam cache. MySQL mengekalkan cache prosedur tersimpannya sendiri untuk setiap sambungan. Jika aplikasi menggunakan prosedur tersimpan berbilang kali dalam satu sambungan, gunakan versi terkumpul, jika tidak, prosedur tersimpan berfungsi seperti pertanyaan; , kerana aplikasi tidak perlu menghantar berbilang penyata SQL yang panjang, tetapi hanya nama dan parameter prosedur yang disimpan; 🎜>
Prosedur tersimpan boleh ditulis menggunakan pernyataan kawalan aliran, yang sangat fleksibel dan boleh melengkapkan pertimbangan yang kompleks dan operasi yang lebih kompleks.
Kebebasan data boleh mencapai kesan penyahgandingan, iaitu program boleh memanggil prosedur tersimpan dan bukannya melaksanakan berbilang pernyataan SQL. Dalam kes ini, prosedur tersimpan mengasingkan data daripada pengguna Kelebihannya ialah apabila struktur jadual data berubah, tidak perlu mengubah suai program apabila memanggil jadual Pentadbir pangkalan data hanya perlu menulis semula prosedur tersimpan .
Kelemahan Prosedur Tersimpan
Jika menggunakan sejumlah besar prosedur tersimpan maka gunakan stor ini Penggunaan memori setiap sambungan proses akan meningkat dengan ketara. Selain itu, jika anda terlalu menggunakan banyak operasi logik dalam prosedur tersimpan, penggunaan CPU juga akan meningkat, kerana reka bentuk asal pangkalan data MySQL memfokuskan pada pertanyaan yang cekap dan tidak kondusif untuk operasi logik;
Pembinaan prosedur tersimpan menjadikannya lebih sukar untuk membangunkan prosedur tersimpan dengan logik perniagaan yang kompleks; Hanya beberapa sistem pengurusan pangkalan data membenarkan anda menyahpepijat prosedur tersimpan. Malangnya, MySQL tidak menyediakan keupayaan untuk menyahpepijat prosedur tersimpan; Membangunkan dan mengekalkan prosedur tersimpan selalunya memerlukan set kemahiran khusus yang tidak dimiliki oleh semua pembangun aplikasi. Ini boleh menyebabkan masalah semasa fasa pembangunan dan penyelenggaraan aplikasi.
Anda juga boleh melihat proses di bawah " Function" nod klien Navicat , seperti yang ditunjukkan dalam rajah di bawah:
-- 创建存储过程 create procedure mypro(in a int,in b int,out sum int) begin set sum = a+b; end;
Panggil prosedur yang disimpan, kodnya adalah seperti berikut:
Hasil jalankan
call mypro(1,2,@s);-- 调用存储过程 select @s;-- 显示过程输出结果
Penghuraian sintaks prosedur tersimpan
create procedure
mewakili parameter output. Sama dengan parameter formal dan nilai pulangan semasa mentakrifkan kaedah dalam Java; mypro
dan (in a int,in b int,out sum int)
in
digunakan untuk memanggil proses, out
ialah pembolehubah yang digunakan untuk menerima parameter output prosesbegin
end
call
@s
Parameter output: Menunjukkan bahawa proses menghantar nilai kepada pemanggil (boleh); kembalikan nilai berbilang) (nilai keluar hanya boleh menjadi pembolehubah); nilai kepada pemanggil (nilai hanya boleh menjadi pembolehubah).
IN
1). 🎜>OUT
INOUT
PembolehubahProsedur tersimpan dalam MySQL adalah serupa dengan kaedah dalam java.
Dalam kes ini, pembolehubah juga boleh digunakan dalam prosedur tersimpan. Skop pembolehubah tempatan di Java ialah kaedah di mana pembolehubah itu terletak, manakala skop pembolehubah tempatan dalam MySQL ialah prosedur tersimpan di mana ia berada.
Takrifan pembolehubahmewakili nama pembolehubah;
DECLARE variable_name [,variable_name...] datatype [DEFAULT value];Gunakan pembolehubah dalam prosedur yang disimpan, kodnya adalah seperti berikut
Menjalankan hasildeclare
variable_name
datatype
default
pernyataan mengandungi berbilang pertimbangan bersyarat, dan dilaksanakan mengikut keputusan
,
dalam bahasa pengaturcaraan.declare name varchar(20) default ‘jack’。
SET 变量名 = 表达式值 [,variable_name = expression ...]kenyataan bersyarat kes
use schooldb;-- 使用 schooldb 数据库 -- 创建过程 create procedure mypro1() begin declare name varchar(20); set name = '丘处机'; select * from studentinfo where studentname = name; end; -- 调用过程 call mypro1();
ialah pernyataan bersyarat lain, serupa dengan dan
sintaks dalam bahasa pengaturcaraan . PernyataanTentukan prosedur tersimpan, masukkan integer dan gunakan pernyataan kes untuk menentukan sama ada ia adalah 1 atau 2. Kodnya adalah seperti berikut: IF
TRUE
FALSE
Hasil berjalanif
两种 case 语法都可以实现条件判断,但第一种适合范围值判断,而第二种适合确定值判断。
while
语句的用法和 java
中的 while
循环类似。
定义存储过程,使用 while 循环输出 1 到 10 的累加和,代码如下所示:
-- 创建过程 create procedure mypro5(out sum int) begin declare num int default 0; set sum = 0; while num<p>运行结果</p><p><img src="https://img.php.cn/upload/article/000/000/024/fcb90e661eadc288d2d1d57364b7978a-7.png" alt="Apakah kegunaan prosedur tersimpan mysql?"></p><h4> <a id="repeat__243"></a><strong>repeat 循环语句</strong> </h4><p><code>repeat</code>语句的用法和 <code>java</code>中的 <code>do…while</code> 语句类似,都是先执行循环操作,再判断条件,区别是 <code>repeat</code>表达<br> 式值为 <code>false</code>时才执行循环操作,直到表达式值为 <code>true</code>停止。</p><p>定义存储过程,使用 repeat 循环输出 1 到 10 的累加和,代码如下所示:</p><pre class="brush:php;toolbar:false">-- 创建过程 create procedure mypro6(out sum int) begin declare num int default 0; set sum = 0; repeat-- 循环开始 set num = num+1; set sum = sum+num; until num>=10 end repeat; -- 循环结束 end; -- 调用过程 call mypro6(@sum); -- 查询变量值 select @sum;
运行结果
循环语句,用来重复执行某些语句。
执行过程中可使用 leave
语句或 iterate
跳出循环,也可以嵌套 IF
等判断语句。
leave
语句效果相当于 java 中的 break
,用来终止循环;iterate
语句效果相当于 java 中的 continue
,用来结束本次循环操作,进入下一次循环。定义存储过程,使用 loop 循环输出 1 到 10 的累加和,代码如下所示:
-- 创建过程 create procedure mypro7(out sum int) begin declare num int default 0; set sum = 0; loop_sum:loop-- 循环开始 set num = num+1; set sum = sum+num; if num>=10 then leave loop_sum; end if; end loop loop_sum; -- 循环结束 end; -- 调用过程 call mypro7(@sum); -- 查询变量值 select @sum;
运行结果
代码中的 loop_sum 相当于给循环贴个标签,方便多重循环时灵活操作。
存储过程的管理主要包括:显示过程、显示过程源码、删除过程。
比较简单的方式就是利用 navicat 客户端工具进行管理,鼠标点击操作即可,如下图所示:
SHOW PROCEDURE STATUS;
SHOW PROCEDURE status where db = 'schooldb';
SHOW PROCEDURE status where name like '%my%';
SHOW CREATE PROCEDURE mypro1;
drop PROCEDURE mypro1;
【相关推荐:mysql视频教程】
Atas ialah kandungan terperinci Apakah kegunaan prosedur tersimpan mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!