Detaillierte Erläuterung der benutzerdefinierten MySQL-Funktionen und gespeicherten Prozeduren

Detaillierte Erläuterung der benutzerdefinierten MySQL-Funktionen und gespeicherten Prozeduren

Vorwort

Dieser Artikel stellt hauptsächlich die relevanten Inhalte zu benutzerdefinierten MySQL-Funktionen und gespeicherten Prozeduren vor und gibt sie zu Ihrer Information und zum Lernen weiter. Werfen wir einen Blick auf die ausführliche Einführung.

1. Voraussetzungen

In der MySQL-Datenbank gibt es eine Tabelle user_info und ihre Struktur und Daten sind wie folgt:

mysql> desc Benutzerinfo;
+-----------+----------+------+-----+---------+---------+----------+
| Feld | Typ | Null | Schlüssel | Standard | Extra |
+-----------+----------+------+-----+---------+---------+----------+
| Ich würde | int(10) | NEIN | PRI | NULL | |
| Name | char(20) | NEIN | | NULL | |
| passwd | char(40) | NEIN | | NULL | |
| E-Mail | char(20) | NEIN | | NULL | |
| Telefon | char(20) | NEIN | | NULL | |
| Rolle | char(10) | NEIN | | NULL | |
| Geschlecht | char(10) | NEIN | | NULL | |
| Status | int(10) | NEIN | | NULL | |
| erstellenAm | Datum/Uhrzeit | NEIN | | NULL | |
| Ausdruck | Datum/Uhrzeit | NEIN | | NULL | |
| gültigeTage | int(10) | NEIN | | NULL | |
| delAt | Datum/Uhrzeit | JA | | NULL | |
+-----------+----------+------+-----+---------+---------+----------+
12 Reihen im Satz (0,10 Sek.)

mysql> wähle * aus Benutzerinfo;
+----+--------------+----------+------------+----------+----------+--------+---------------------+---------------------+-----------+-----------+
| ID | Name | Passwort | E-Mail | Telefonnummer | Rolle | Geschlecht | Status | erstellt am | exprAt | validDays | delAt |
+----+--------------+----------+------------+----------+----------+--------+---------------------+---------------------+-----------+-----------+
| 1 | StephenWang7 | py123456 | [email protected] | 15103887470 | admin | männlich | 200 | 12.04.2019 20:11:30 | 19.04.2019 20:11:30 | 30 | NULL |
| 2 | StephenWang8 | 123456 | [email protected] | 15103887470 | Betrachter | männlich | 200 | 12.04.2019 20:11:30 | 19.04.2019 20:11:30 | 30 | NULL |
+----+--------------+----------+------------+----------+----------+--------+---------------------+---------------------+-----------+-----------+
2 Zeilen im Satz (0,00 Sek.)

2. Benutzerdefinierte Funktionen

Funktion: Eine Reihe von SQL-Anweisungen, die bestimmte Funktionen ausführen können. MySQL unterstützt benutzerdefinierte Funktionen zum Erfüllen bestimmter Geschäftsfunktionen.

Die Syntax zum Erstellen einer benutzerdefinierten Funktion (UDF) lautet wie folgt:

Funktion erstellen <Funktionsname> ([Parameter 1] [Typ 1], [Parameter N] [Typ N])
gibt <Typ> zurück
zurückkehren
<Funktionskörper>

Die Syntax zum Aufrufen einer UDF lautet wie folgt:

select <Funktionsname> ([Parameter])

Erstellen einer UDF ohne Parameter

Beispiel 1: Abfrage der Anzahl der Datensätze in der Tabelle user_info

#Funktion mysql definieren> Funktion user_info_count() erstellen
 -> gibt int(10) zurück
 -> zurück
 -> (wähle Anzahl(*) aus Benutzerinformationen);

Rufen Sie die Funktion user_info_count() auf

mysql> wähle user_info_count();
+---------------------------------+
| Benutzerinfoanzahl() |
+---------------------------------+
| 2 |
+---------------------------------+
1 Zeile im Satz (0,00 Sek.)

Erstellen einer UDF mit Parametern

Beispiel 2: Benutzernamen basierend auf der ID abfragen.

#Funktion mysql definieren> Funktion queryNameById(uid int(10)) erstellen
 -> gibt char(20) zurück
 -> zurück
 -> (wählen Sie den Namen aus den Benutzerinformationen, wobei ID = UID);
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

Rufen Sie die Funktion auf, um den Benutzernamen mit der ID 1 abzufragen.

mysql> wähle queryNameById(1);
+------------------+
| AbfragenameById(1) |
+------------------+
|StephenWang7|
+------------------+
1 Zeile im Satz (0,00 Sek.)

UDF anzeigen

Alle UDFs im System abfragen

Funktionsstatus anzeigen;

Abfrage der angegebenen UDF

#
Funktion „Funktion erstellen“ anzeigen, Funktionsname;
mysql> Funktion queryNameById anzeigen;
FEHLER 1064 (42000): Ihre SQL-Syntax weist einen Fehler auf. Überprüfen Sie im Handbuch zu Ihrer MySQL-Serverversion, welche Syntax in der Nähe von „queryNameById“ in Zeile 1 zu verwenden ist.
mysql> Funktion queryNameById() anzeigen;
FEHLER 1064 (42000): Ihre SQL-Syntax weist einen Fehler auf. Überprüfen Sie im Handbuch zu Ihrer MySQL-Serverversion die richtige Syntax für die Verwendung in der Nähe von „queryNameById()“ in Zeile 1.
mysql> zeigen erstellen Funktion queryNameById();
FEHLER 1064 (42000): Ihre SQL-Syntax weist einen Fehler auf. Überprüfen Sie im Handbuch zu Ihrer MySQL-Serverversion, welche Syntax in der Nähe von „()“ in Zeile 1 zu verwenden ist.
mysql> zeige Erstellen-Funktion queryNameById;
+-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| Funktion | SQL-Modus | Funktion erstellen | Zeichensatzclient | Sortierverbindung | Datenbanksortierung |
+-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| queryNameById | NUR_VOLLSTÄNDIGE_GROUP_BY, STRICT_TRANS_TABLES, KEINE_NULL_IM_DATUM, KEIN_NULL_DATUM, FEHLER_FÜR_DIVISION_DURCH_NULL, KEIN_AUTO_CREATE_USER, KEINE_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`localhost` FUNCTION `queryNameById`(uid int(10)) GIBT char(20) CHARSET latin1 ZURÜCK
return (Name aus Benutzerinfo auswählen, wobei ID=UID) | utf8 | utf8_general_ci | latin1_swedish_ci |
+-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 Zeile im Set (0,00 Sek.

UDF ändern

Wenn Sie den Inhalt einer Funktion ändern möchten, löschen Sie sie und erstellen Sie sie anschließend neu.

Löschen einer UDF

Die Syntax zum Löschen einer UDF lautet wie folgt:

Drop-Funktion <Funktionsname>;

Beispiel 3: Löschen Sie die Funktion queryNameId und rufen Sie sie erneut auf, um das Phänomen zu beobachten.

mysql> Drop-Funktion queryNameById;
Abfrage OK, 0 Zeilen betroffen (0,45 Sek.)

mysql> wähle queryNameById(1);
FEHLER 1305 (42000): FUNKTION rms.queryNameById existiert nicht
MySQL>

3. Gespeicherte Prozeduren

Eine gespeicherte Funktion ähnelt einer benutzerdefinierten Funktion und ist ebenfalls eine Reihe von SQL-Anweisungen, die bestimmte Funktionen ausführen. Schreiben Sie vorab komplexes oder häufig aufgerufenes SQL und weisen Sie ihm einen Namen zu. Wenn Sie es verwenden möchten, rufen Sie es einfach an.

Die Syntax zum Definieren einer gespeicherten Prozedur lautet wie folgt:

CREATE PROCEDURE <Prozedurname> ( [Prozedurparameter[,…] ] ) <Prozedurkörper>
[Prozedurparameter[,…]]-Format
[ IN | OUT | INOUT ] <Parametername> <Typ>
#Syntaxdefinition von: http://c.biancheng.net/view/2593.html

Erstellen einer gespeicherten Prozedur ohne Parameter

Beispiel 4: Benutzernamen abfragen.

mysql> TRENNUNGSZEICHEN //
mysql> Prozedur queryName() erstellen
 -> beginnen
 -> wähle Namen aus Benutzerinformationen;
 -> Ende //

Ändern Sie beim DELIMITER-Befehl das Zeichen, das den MySQL-Befehl beendet. Das Standardzeichen für das Ende eines Befehls ist ein Semikolon. Wenn eine gespeicherte Prozedur mehrere Anweisungen enthält, wird das erste Semikolon als Zeichen für das Ende der gespeicherten Prozedur verwendet. Dies entspricht nicht den Erwartungen, daher muss das standardmäßige Befehlsendezeichen geändert werden. DELIMITER // dient zum Ändern des Endbefehlszeichens in //. Der Befehl zum Aufrufen einer gespeicherten Prozedur lautet: „Call Stored Procedure Name.“

#Das Endsymbol des Befehls ist zu diesem Zeitpunkt // nicht;
mysql> rufe queryName() auf //
+--------------+
| Name |
+--------------+
|StephenWang7|
|StephenWang8|
+--------------+
2 Zeilen im Satz (0,00 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Erstellen einer gespeicherten Prozedur mit Parametern

Beispiel 5: Abfragename basierend auf der ID.

mysql> Prozedur queryNameById erstellen
 -> (In uid int(15))
 -> beginnen
 -> wähle den Namen aus den Benutzerinformationen, wobei id=uid;
 -> Ende
 -> //
Abfrage OK, 0 Zeilen betroffen (0,03 Sek.)

Rufen Sie die gespeicherte Prozedur queryNameById auf

mysql> rufe queryNameById(1) auf;
 -> //
+--------------+
| Name |
+--------------+
|StephenWang7|
+--------------+
1 Zeile im Satz (0,03 Sek.)

Abfrage OK, 0 Zeilen betroffen (0,04 Sek.)

Ändern der gespeicherten Prozedur

Wenn Sie den Inhalt einer gespeicherten Prozedur erstellen möchten, können Sie diese löschen und anschließend neu erstellen.

Gespeicherte Prozeduren anzeigen

zeige Prozedur zum Erstellen <Prozedurname>
MySQL> Show Create Procedure QuerynamebyId; Prozedur | +------------------+------------------+----------------+| OST` Procedure `QuerynAms ------------------------------------------------------------------------------------------+----------------------+----------------------+--------------------+1 Zeile in Set (0.04 Sek

Löschen einer gespeicherten Prozedur

Löschprozedur <Prozedurname>

Löschen Sie die gespeicherte Prozedur queryNameById

mysql> Prozedur queryNameById löschen //
Abfrage OK, 0 Zeilen betroffen (0,02 Sek.)


mysql> rufe queryNameById(1) auf //
FEHLER 1305 (42000): PROZEDUR rms.queryNameById existiert nicht

4. Zusammenfassung

Benutzerdefinierte Funktionen und gespeicherte Prozeduren sind beides SQL-Sätze, die bestimmte Funktionen ausführen. Was sind also die Unterschiede zwischen ihnen?

a. Verschiedene Anrufmethoden

#Benutzerdefinierte Funktionen
Wählen Sie <Funktionsname>
#Gespeicherte Prozedur
call <Name der gespeicherten Prozedur>

b. Benutzerdefinierte Funktionen können keine Ausgabeparameter haben, gespeicherte Prozeduren jedoch schon.

c. Eine benutzerdefinierte Funktion muss eine Return-Anweisung enthalten, eine gespeicherte Prozedur hingegen nicht.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • MySQL-Serie fünf Ansichten, gespeicherte Funktionen, gespeicherte Prozeduren, Trigger
  • Gespeicherte MySQL-Prozeduren und allgemeine Funktionscodeanalyse
  • Detaillierte Erläuterung der gespeicherten Prozeduren und Funktionen von MySQL
  • Detaillierte Erklärung zum Erstellen gespeicherter Prozeduren und Funktionen in MySQL

<<:  vue.js lädt Bilder entsprechend der Bild-URL herunter

>>:  Tutorial zur Installation von RabbitMQ mit Yum auf CentOS8

Artikel empfehlen

Windows kann den MySQL-Dienst nicht starten und meldet Fehler 1067 – Lösung

Als ich mich bei MySQL anmeldete, wurde mir plötz...

Anwendung zur Verarbeitung von HTML-Tag-Überläufen

Verwenden Sie CSS, um Bildlaufleisten zu ändern 1...

Eine kurze Diskussion über zwei Strombegrenzungsmethoden in Nginx

Die Belastung wird im Allgemeinen während des Sys...

MySQL 5.7.18 Installations-Tutorial und Problemübersicht

MySQL 5.7.18 Installation und Problemübersicht. I...

Was ist dies in einer Punkt-für-Punkt-Reihe von JavaScript?

Verstehe das Vielleicht haben Sie this in anderen...

Beispiel für einen Vue-Übergang zum Erreichen eines Animationseffekts

Inhaltsverzeichnis Ergebnisse auf einen Blick Her...

Erfahren Sie mehr über MySQL-Indizes

1. Indexierungsprinzip Indizes werden verwendet, ...

So weisen Sie einer Instanz in Linux eine öffentliche IP-Adresse zu

beschreiben Beim Aufruf dieser Schnittstelle müss...

Die umfassendste Sammlung von Front-End-Interviewfragen

HTML und CSS 1. Verständnis und Kenntnisse von WE...

Detaillierte Schritte zum Einrichten eines Nexus-Servers

1. Die Bedeutung des Aufbaus eines Nexus-Dienstes...