Die sogenannte Ansicht bezieht sich auf die von der SQL-Abfrageanweisung abgerufene Ergebnismenge, die im Gegensatz zur tatsächlichen physischen Tabelle nicht in der Datenbank vorhanden ist. Die Rolle einer Ansicht besteht darin, komplexe Abfragen zu vereinfachen, indem Zuordnungs- und Filtervorgänge für mehrere Tabellen in einer Ansicht konzentriert werden und die Ansicht dann abgefragt wird, um die erforderlichen Ergebnisse zu erhalten. Ansichten haben die folgenden Eigenschaften:
Ansichten speichern keine Daten, sondern werden dynamisch basierend auf den Ergebnissen von SELECT-Anweisungen generiert.
Ansichten können nur gelesen, nicht geschrieben werden.
Ansichten können basierend auf einer oder mehreren Tabellen erstellt werden.
Das Folgende ist ein Beispiel für die Erstellung einer Ansicht:
CREATE VIEW vw_employee AS SELECT e.emp_no, e.first_name, e.last_name, d.dept_name FROM employees e JOIN departments d ON e.dept_no = d.dept_no;
Diese Anweisung erstellt eine Ansicht mit dem Namen vw_employee, die Daten aus den Mitarbeiter- und Abteilungstabellen enthält. Sie können die Ansicht mit der folgenden Anweisung abfragen:
SELECT * FROM vw_employee;
Eine Funktion ist eine wiederverwendbare Programmeinheit, die einen bestimmten Teil der Logik kapselt und zur Ausführung einer bestimmten Aufgabe verwendet werden kann. In MySQL werden Funktionen in zwei Kategorien unterteilt: Skalarfunktionen und Aggregatfunktionen. Skalarfunktionen geben einen einzelnen Wert aus, während Aggregatfunktionen Aggregatwerte wie COUNT, SUM, AVG usw. ausgeben. Funktionen haben die folgenden Eigenschaften:
Funktionen haben Eingabe und Ausgabe, können Parameter empfangen und Ergebnisse zurückgeben;
Funktionen können andere Funktionen aufrufen;
Das Folgende ist ein Beispiel für die Erstellung einer Skalarfunktion:
CREATE FUNCTION get_employee_name ( emp_no INT ) RETURNS VARCHAR ( 50 ) BEGIN DECLARE emp_name VARCHAR ( 50 ); SELECT CONCAT_WS( ' ', first_name, last_name ) INTO emp_name FROM employees WHERE emp_no = emp_no; RETURN emp_name; END;
Rufen Sie diese Funktion auf:
SELECT get_employee_name (100001);
Gespeicherte Prozeduren können auf der Serverseite ausgeführt werden, wodurch der Netzwerkübertragungsaufwand reduziert wird Prozeduren können von mehreren Anwendungen gemeinsam genutzt werden.
Das Folgende ist ein Beispiel für die Verwendung gespeicherter Prozeduren, vorausgesetzt, wir haben die folgenden drei Tabellen:
Mitarbeitertabelle: speichert grundlegende Informationen von Mitarbeitern
CREATE TABLE employees ( emp_no INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), gender ENUM('M', 'F'), birth_date DATE, hire_date DATE );
Fügen Sie einige Daten ein:
INSERT INTO employees VALUES (10001, 'Georgi', 'Facello', 'M', '1953-09-02', '1986-06-26'), (10002, 'Bezalel', 'Simmel', 'F', '1964-06-02', '1985-11-21'), (10003, 'Parto', 'Bamford', 'M', '1959-12-03', '1986-08-28'), (10004, 'Chirstian', 'Koblick', 'M', '1955-01-05', '1986-12-01'), (10005, 'Kyoichi', 'Maliniak', 'M', '1959-09-12', '1989-09-12'), (10006, 'Anneke', 'Preusig', 'F', '1953-04-20', '1989-06-02'), (10007, 'Tzvetan', 'Zielinski', 'F', '1957-05-23', '1989-02-10');
Abteilungstabelle: speichert grundlegende Informationen von Abteilungen
CREATE TABLE departments ( dept_no CHAR(4) PRIMARY KEY, dept_name VARCHAR(50) );
Fügen Sie einige Daten ein:
INSERT INTO departments VALUES ('d001', 'Marketing'), ('d002', 'Finance'), ('d003', 'Human Resources'), ('d004', 'Production'), ('d005', 'Development'), ('d006', 'Quality Management'), ('d007', 'Sales'), ('d008', 'Research');
dept_emp Tabelle: speichert die Beziehung zwischen Mitarbeitern und Abteilungen
CREATE TABLE dept_emp ( emp_no INT, dept_no CHAR(4), from_date DATE, to_date DATE, PRIMARY KEY (emp_no, dept_no) );
Fügen Sie einige Daten ein:
INSERT INTO dept_emp VALUES (10001, 'd001', '1986-06-26', '9999-01-01'), (10002, 'd001', '1985-11-21', '9999-01-01'), (10003, 'd002', '1986-08-28', '9999-01-01'), (10004, 'd005', '1986-12-01', '9999-01-01'), (10005, 'd005', '1989-09-12', '9999-01-01'), (10006, 'd006', '1989-06-02', '9999-01-01'), (10007, 'd007', '1989-02-10', '9999-01-01');
Jetzt können wir eine gespeicherte Prozedur erstellen, um die Anzahl der Mitarbeiter und Mitarbeiterdetails in einer bestimmten Abteilung abzufragen:
CREATE PROCEDURE get_employee_by_dept ( IN dept_name VARCHAR ( 50 ), OUT employee_count INT ) BEGIN SELECT COUNT(*) INTO employee_count FROM employees e JOIN dept_emp de ON e.emp_no = de.emp_no JOIN departments d ON de.dept_no = d.dept_no WHERE d.dept_name = dept_name; SELECT e.emp_no, e.first_name, e.last_name, e.gender, e.birth_date, e.hire_date FROM employees e JOIN dept_emp de ON e.emp_no = de.emp_no JOIN departments d ON de.dept_no = d.dept_no WHERE d.dept_name = dept_name; END;
Diese Anweisung erstellt eine gespeicherte Prozedur mit dem Namen get_employee_by_dept, die einen Abteilungsnamen als Eingabeparameter erhält und die Anzahl der Mitarbeiter in der Abteilung sowie Mitarbeiterdetails zurückgibt.
Nennen Sie diese Funktion
CALL get_employee_by_dept('Development', @employee_count); SELECT @employee_count;
In praktischen Anwendungen können Ansichten, Funktionen und gespeicherte Prozeduren alle eine wichtige Rolle spielen. Beispielsweise müssen Sie in einer komplexen Unternehmensanwendung möglicherweise Daten aus mehreren Tabellen abrufen und Filter- und Aggregationsvorgänge daran durchführen. In diesem Fall können Ansichten verwendet werden, um komplexe Abfragen zu vereinfachen. Darüber hinaus können allgemeine Geschäftslogiken, die wiederverwendet werden müssen, als Funktionen oder gespeicherte Prozeduren gekapselt werden, um die Wiederverwendbarkeit und Wartbarkeit des Codes zu verbessern.
Das obige ist der detaillierte Inhalt vonWas sind MySQL-Ansichten, -Funktionen und gespeicherte Prozeduren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!