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

Wie erreicht MySQL eine Master-Slave-Synchronisierung?

Die Master-Slave-Synchronisierung, auch Master-Sl...

Hinweise zum passenden MySql 8.0 und entsprechenden Treiberpaketen

MySql 8.0 entsprechendes Treiberpaket passend Nac...

So legen Sie schnell den Dateipfad-Alias ​​in React fest

React ist eine JavaScript-Bibliothek zum Erstelle...

Beispielcode für kreisförmigen Hover-Effekt mit CSS-Übergängen

Dieser Artikel stellt vor Online-Vorschau und Dow...

Tiefgreifendes Verständnis der logischen Architektur von MySQL

MySQL ist heute die Datenbank, die von den meiste...

Schritte zum Importieren von Millionen von Daten in MySQL mit .Net Core

Inhaltsverzeichnis Vorbereitende Vorbereitung Imp...