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

Analisis pencetus dan contoh prosedur tersimpan pangkalan data MySQL

王林
王林ke hadapan
2023-05-27 11:46:061748semak imbas

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;

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();
(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;

(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;
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 '人数';
(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;

(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;

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam