Maison > base de données > tutoriel mysql > Analyse des déclencheurs et des instances de procédures stockées de la base de données MySQL

Analyse des déclencheurs et des instances de procédures stockées de la base de données MySQL

王林
Libérer: 2023-05-27 11:46:06
avant
1723 Les gens l'ont consulté

1. Objectif de l'expérience

  • 1. Maîtriser le langage de programmation SQL et les spécifications de programmation pris en charge par un SGBD grand public, et normaliser la conception des procédures stockées #🎜 ; 🎜##🎜 🎜#

  • 2. Être capable de comprendre les fonctions et les principes d'exécution des différents types de déclencheurs, et vérifier l'efficacité des déclencheurs
  • ;
  • 3. Culture La pensée systémique des étudiants améliore les capacités de programmation nécessaires pour résoudre des problèmes d'ingénierie complexes.
  • 2. Exigences expérimentales

Maîtriser le langage de programmation SQL d'un SGBD grand public, et définir AVANT (pour) en fonction de la base de données créée précédemment Déclencheurs et déclencheurs AFTER ; maîtriser la définition des procédures stockées de base de données, l’exécution de procédures stockées, le renommage des procédures stockées, la suppression de procédures stockées et la transmission des paramètres des procédures stockées.

Rappel chaleureux :

Le contenu suivant a été testé, mais il y aura inévitablement des omissions, mais la plupart des idées et de la mise en œuvre du code ont été testées et sont correctes. 3. Contenu et étapes de mise en œuvre

1 Créer une procédure stockée simple sans paramètres

    ( 1) Créez la procédure stockée sp_avggrade pour implémenter la fonction d'interrogation des notes moyennes des étudiants dans chaque cours .
  • delimiter//
    CREATE PROCEDURE sp_avggrade()
    COMMENT '查询每门课程学生的平均成绩的功能'
    BEGIN
    SELECT cno as 课程号,avg(grade)as 平均成绩
    FROM sc
    GROUP BY cno;
    end//
    delimiter;
    Copier après la connexion

    2. Créez une procédure stockée avec des paramètres d'entrée
(1) Créez une procédure stockée sp_course_avggrade pour implémenter la requête en entrant le numéro de cours. paramètre Fonction pour spécifier la note moyenne du cours du numéro de cours ;

call sp_avggrade();
Copier après la connexion

(2) Appelez cette procédure stockée pour obtenir la note moyenne du cours spécifié.

3. Créez une procédure stockée avec des paramètres d'entrée et de sortie

(1) Créez une procédure stockée sp_sdept _student pour implémenter le paramètre de numéro de département saisi par l'utilisateur , La fonction pour trouver le nombre d'étudiants dans le collège et le sortir sous forme de variable

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;
Copier après la connexion
(2) Appelez la procédure stockée pour obtenir le nombre d'étudiants dans le département correspondant dans le forme d'une variable renvoyée.
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;
Copier après la connexion

4. Création et utilisation de triggers

(1) Créer un trigger sur la table étudiant pour se rendre compte que lorsqu'un dossier étudiant est supprimé de la table étudiant, l'étudiant dans le tableau des scores Suppression en cascade des enregistrements de notes ;

SET @num=10;
CALL sp_sdept_student2('计科',@num);
SELECT @num AS '人数';
Copier après la connexion

(2) Créer un déclencheur sur le tableau de sélection des cours Si la note saisie est supérieure à 100 points et inférieure à 0 point, l'enregistrement sera. refusé d'être inséré et affiché

delimiter//
CREATE TRIGGER delete_stu
BEFORE DELETE
ON student
FOR EACH ROW
BEGIN
DELETE
FROM sc
WHERE sc.sno=old.sno;
END//
delimiter;
Copier après la connexion

(3) Vérification (1), (2) du déclencheur

Vérification(1)

#🎜🎜 #
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;
Copier après la connexion

verification(2)

DELETE
FROM student
WHERE sno=&#39;201513&#39;;
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal