Heim  >  Artikel  >  Datenbank  >  Analyse von Triggern und gespeicherten Prozedurinstanzen der MySQL-Datenbank

Analyse von Triggern und gespeicherten Prozedurinstanzen der MySQL-Datenbank

王林
王林nach vorne
2023-05-27 11:46:061707Durchsuche

1. Zweck des Experiments

  • 1. Beherrschen Sie die von einem Mainstream-DBMS unterstützte SQL-Programmiersprache und standardisieren Sie das Design gespeicherter Prozeduren 🎜##🎜 🎜#

    2 Die Funktionen und Ausführungsprinzipien verschiedener Triggertypen verstehen und die Wirksamkeit von Triggern überprüfen;
  • 3. Das Systemdenken der Schüler verbessert die Programmierfähigkeiten, die zur Lösung komplexer technischer Probleme erforderlich sind.
  • 2. Experimentelle Anforderungen
  • Beherrschen Sie die SQL-Programmiersprache eines Mainstream-DBMS und definieren Sie VOR (für) basierend auf der zuvor erstellten Datenbank Trigger und AFTER-Trigger beherrschen die Definition gespeicherter Datenbankprozeduren, das Ausführen gespeicherter Prozeduren, das Umbenennen gespeicherter Prozeduren, das Löschen gespeicherter Prozeduren und das Übergeben von Parametern gespeicherter Prozeduren.

Warme Erinnerung:

Der folgende Inhalt wurde getestet, es wird jedoch zwangsläufig Auslassungen geben, aber die meisten Ideen und Implementierungen des Codes wurden getestet und sind korrekt.

3. Implementierungsinhalte und -schritte

1. Erstellen Sie eine einfache gespeicherte Prozedur ohne Parameter

( 1) Erstellen Sie die gespeicherte Prozedur sp_avggrade, um die Funktion zum Abfragen der Durchschnittsnoten der Studenten in jedem Kurs zu implementieren.

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

2. Erstellen Sie eine gespeicherte Prozedur mit Eingabeparametern
  • (1) Erstellen Sie eine gespeicherte Prozedur sp_course_avggrade, um die Abfrage durch Eingabe der Kursnummer zu implementieren Parameter Funktion zur Angabe der durchschnittlichen Kursnote der Kursnummer;

  • call sp_avggrade();
(2) Rufen Sie diese gespeicherte Prozedur auf, um die Durchschnittsnote des angegebenen Kurses zu erhalten.

3. Erstellen Sie eine gespeicherte Prozedur mit Eingabe- und Ausgabeparametern.

(1) Erstellen Sie eine gespeicherte Prozedur sp_sdept _student, um den vom Benutzer eingegebenen Abteilungsnummernparameter zu implementieren , Die Funktion, um die Anzahl der Studenten in der Hochschule zu ermitteln und in Form einer Variablen auszugeben;

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) Rufen Sie die gespeicherte Prozedur auf, um die Anzahl der Studenten in der entsprechenden Abteilung in zu erhalten Form einer zurückgegebenen Variablen.
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. Erstellung und Verwendung von Triggern

(1) Erstellen Sie einen Trigger in der Studententabelle, um zu erkennen, dass der Student in der Punktetabelle Kaskadenlöschung von Notendatensätzen;

SET @num=10;
CALL sp_sdept_student2('计科',@num);
SELECT @num AS '人数';

(2) Erstellen Sie einen Auslöser in der Kursauswahltabelle. Wenn die eingegebene Note größer als 100 Punkte und weniger als 0 Punkte ist, wird der Datensatz gelöscht weigerte sich, eingefügt und angezeigt zu werden; Verifizierung(1)

#🎜🎜 #
delimiter//
CREATE TRIGGER delete_stu
BEFORE DELETE
ON student
FOR EACH ROW
BEGIN
DELETE
FROM sc
WHERE sc.sno=old.sno;
END//
delimiter;

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

Das obige ist der detaillierte Inhalt vonAnalyse von Triggern und gespeicherten Prozedurinstanzen der MySQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen