Rumah >pangkalan data >tutorial mysql >Apakah kegunaan prosedur tersimpan mysql?

Apakah kegunaan prosedur tersimpan mysql?

青灯夜游
青灯夜游asal
2023-04-04 15:43:072697semak imbas

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.

Apakah kegunaan prosedur tersimpan mysql?

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

Pengenalan kepada prosedur tersimpan

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.
  • Meningkatkan keselamatan pangkalan data dan integriti data
  • Salah satu cara untuk meningkatkan keselamatan prosedur tersimpan ialah menggunakannya sebagai komponen perantaraan boleh mengendalikan tertentu Lakukan operasi berkaitan jadual, dan kemudian menyediakan prosedur tersimpan sebagai antara muka kepada program luaran. Dengan cara ini, program luaran tidak boleh mengendalikan jadual pangkalan data secara langsung dan hanya boleh mengendalikan jadual yang sepadan melalui prosedur tersimpan Oleh itu, keselamatan boleh dipertingkatkan pada tahap tertentu.

  • Jadikan data bebas


    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.

  • Prosedur tersimpan dalam MySQL

Membuat dan memanggil prosedur

Buat prosedur tersimpan, kodnya adalah seperti berikut:

Hasil berjalan adalah seperti berikut

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: Apakah kegunaan prosedur tersimpan mysql?

Hasil jalankan

Apakah kegunaan prosedur tersimpan mysql?

call mypro(1,2,@s);-- 调用存储过程 
select @s;-- 显示过程输出结果

Penghuraian sintaks prosedur tersimpan

Apakah kegunaan prosedur tersimpan mysql?

digunakan untuk mencipta prosedur ; digunakan Tentukan nama proses

    mewakili parameter proses, dengan
  • mewakili parameter input dan create procedure mewakili parameter output. Sama dengan parameter formal dan nilai pulangan semasa mentakrifkan kaedah dalam Java;
  • mypro dan
  • mewakili permulaan dan akhir badan proses, bersamaan dengan sepasang pendakap semasa menentukan kaedah dalam Java ;
  • (in a int,in b int,out sum int)in digunakan untuk memanggil proses, out ialah pembolehubah yang digunakan untuk menerima parameter output proses
  • beginend
  • Parameter daripada prosedur tersimpancall@s
Parameter prosedur tersimpan MySQL digunakan dalam definisi prosedur tersimpan Terdapat tiga jenis parameter:

. Parameter input: Menunjukkan bahawa pemanggil menghantar nilai kepada prosedur ( Nilai masuk boleh menjadi literal atau pembolehubah

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

    Prosedur tersimpan boleh dibahagikan kepada empat kategori mengikut parameter:
  • IN1). 🎜>
  • 3). Proses dengan parameter keluaran sahaja;
  • OUT
  • INOUTPembolehubah

Prosedur 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 pembolehubah

digunakan untuk mengisytiharkan pembolehubah

mewakili nama pembolehubah;

ialah jenis data MySQL; > digunakan Isytiharkan nilai lalai;

DECLARE variable_name [,variable_name...] datatype [DEFAULT value];
Gunakan pembolehubah dalam prosedur yang disimpan, kodnya adalah seperti berikut
  • Menjalankan hasildeclare

  • variable_name

  • Pernyataan kawalan aliran
  • datatype

    jika pernyataan bersyarat
  • default pernyataan mengandungi berbilang pertimbangan bersyarat, dan dilaksanakan mengikut keputusan

    ,
  • Pernyataan, serupa dengan sintaks
  • ,

    ,

    dalam bahasa pengaturcaraan.
    declare name varchar(20) default ‘jack’。
  • Tentukan prosedur tersimpan, masukkan integer, dan gunakan pernyataan if untuk menentukan sama ada ia nombor positif atau negatif Kodnya adalah seperti berikut:

Jalankan hasil

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 Apakah kegunaan prosedur tersimpan mysql? dan

sintaks dalam bahasa pengaturcaraan . Pernyataan

dalam MySQL mempunyai dua format sintaks. Tentukan prosedur tersimpan, masukkan integer dan gunakan pernyataan kes untuk menentukan sama ada ia adalah nombor positif atau negatif Kodnya adalah seperti berikut:

Jalankan hasil

Tentukan prosedur tersimpan, masukkan integer dan gunakan pernyataan kes untuk menentukan sama ada ia adalah 1 atau 2. Kodnya adalah seperti berikut: IFTRUEFALSEHasil berjalanif

Apakah kegunaan prosedur tersimpan mysql?

两种 case 语法都可以实现条件判断,但第一种适合范围值判断,而第二种适合确定值判断。

while 循环语句

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;

运行结果

Apakah kegunaan prosedur tersimpan mysql?

loop 循环语句

循环语句,用来重复执行某些语句。

执行过程中可使用 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;

运行结果

Apakah kegunaan prosedur tersimpan mysql?

代码中的 loop_sum 相当于给循环贴个标签,方便多重循环时灵活操作。

存储过程的管理

存储过程的管理主要包括:显示过程、显示过程源码、删除过程。

比较简单的方式就是利用 navicat 客户端工具进行管理,鼠标点击操作即可,如下图所示:

Apakah kegunaan prosedur tersimpan mysql?

显示存储过程

SHOW PROCEDURE STATUS;

显示特定数据库的存储过程

SHOW PROCEDURE status where db = 'schooldb';

显示特定模式的存储过程,要求显示名称中包含“my”的存储过程

SHOW PROCEDURE status where name like '%my%';

显示存储过程“mypro1”的源码

SHOW CREATE PROCEDURE mypro1;

Apakah kegunaan prosedur tersimpan mysql?

删除存储过程“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!

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
Artikel sebelumnya:Apakah fail .ibd dalam mysql?Artikel seterusnya:Apakah fail .ibd dalam mysql?