Rumah > pangkalan data > tutorial mysql > Analisis pencetus dan contoh prosedur tersimpan pangkalan data MySQL

Analisis pencetus dan contoh prosedur tersimpan pangkalan data MySQL

王林
Lepaskan: 2023-05-27 11:46:06
ke hadapan
1722 orang telah melayarinya

1. Tujuan eksperimen

  • 1 Menguasai bahasa pengaturcaraan SQL dan spesifikasi pengaturcaraan yang disokong oleh DBMS arus perdana, dan menyeragamkan reka bentuk prosedur tersimpan; 🎜>

    2. Dapat memahami fungsi dan prinsip pelaksanaan pelbagai jenis pencetus, dan mengesahkan keberkesanan pencetus; kemahiran yang diperlukan untuk menyelesaikan masalah kejuruteraan yang kompleks.
  • 2. Keperluan eksperimen
  • Kuasai bahasa pengaturcaraan SQL bagi DBMS arus perdana, dan tentukan SEBELUM (untuk) pencetus dan SELEPAS pencetus berdasarkan pangkalan data yang dibuat sebelum ini; definisi prosedur tersimpan pangkalan data, operasi prosedur tersimpan, penamaan semula prosedur tersimpan, pemadaman prosedur tersimpan, dan pemindahan parameter prosedur tersimpan.

  • Peringatan hangat:
Kandungan berikut telah diuji, tetapi pasti akan ada peninggalan, tetapi kebanyakan idea dan pelaksanaan pelaksanaan kod telah diuji dan betul.

3. Kandungan dan langkah pelaksanaan

1 Buat prosedur tersimpan yang mudah tanpa parameter

(1) Cipta prosedur tersimpan sp_avggrade dan laksanakannya Fungsi untuk menanyakan purata skor pelajar dalam setiap kursus;

delimiter//
CREATE PROCEDURE sp_avggrade()
COMMENT '查询每门课程学生的平均成绩的功能'
BEGIN
SELECT cno as 课程号,avg(grade)as 平均成绩
FROM sc
GROUP BY cno;
end//
delimiter;
Salin selepas log masuk

2. Cipta prosedur tersimpan dengan parameter input

  • (1) Cipta prosedur tersimpan sp_course_avggrade untuk menanyakan purata kursus bagi nombor kursus yang ditentukan dengan memasukkan kursus parameter nombor Fungsi gred;

    call sp_avggrade();
    Salin selepas log masuk
(2) Panggil prosedur tersimpan ini untuk mendapatkan gred purata kursus yang ditentukan.

3. Buat prosedur tersimpan dengan parameter input dan output

(1) Buat prosedur tersimpan sp_sdept _pelajar untuk mencari pelajar kolej ini berdasarkan parameter nombor jabatan yang dimasukkan oleh pengguna Fungsi untuk mengeluarkan bilangan pelajar dalam bentuk pembolehubah

delimiter//
CREATE PROCEDURE sp_course_avggrade(IN c_no CHAR(2))
COMMENT '通过输入课程编号参数查询指定课程编号的课程平均成绩的功能'
BEGIN
SELECT cno,AVG(grade)
FROM sc
WHERE cno=c_no;
END//
delimiter;
Salin selepas log masuk

(2) memanggil prosedur tersimpan untuk mendapatkan bilangan pelajar dalam jabatan yang sepadan dalam bentuk pembolehubah yang dikembalikan.

delimiter//
CREATE PROCEDURE sp_sdept_student2(IN _sdept CHAR(10),OUT num int)
BEGIN
SELECT COUNT(sno) INTO num
FROM student
WHERE _sdept = sdept;
END//
delimiter;
Salin selepas log masuk
4. Penciptaan dan penggunaan pencetus

(1) Buat pencetus pada jadual pelajar untuk menyedari bahawa apabila rekod pelajar dipadamkan daripada jadual pelajar, tahap markah pelajar rekod dalam jadual skor Pemadaman bersama;

SET @num=10;
CALL sp_sdept_student2('计科',@num);
SELECT @num AS '人数';
Salin selepas log masuk
(2) Buat pencetus pada jadual pemilihan kursus Jika markah yang dimasukkan adalah lebih daripada 100 mata dan kurang daripada 0 mata, rekod akan ditolak untuk dimasukkan. dan dipaparkan;

delimiter//
CREATE TRIGGER delete_stu
BEFORE DELETE
ON student
FOR EACH ROW
BEGIN
DELETE
FROM sc
WHERE sc.sno=old.sno;
END//
delimiter;
Salin selepas log masuk

(3) Sahkan pencetus dalam (1) dan (2)

Sahkan (1)

rreee

Sahkan (2)

delimiter//
CREATE TRIGGER scgrade
BEFORE INSERT ON sc
FOR EACH ROW
BEGIN
IF new.grade>100 or new.grade < 0 THEN
SIGNAL SQLSTATE &#39;45000&#39;
SET message_text=&#39;录入成绩不符合规定,拒绝插入&#39;;
END IF;
END//
delimiter;
Salin selepas log masuk

Atas ialah kandungan terperinci Analisis pencetus dan contoh prosedur tersimpan pangkalan data MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan