Heim > Datenbank > MySQL-Tutorial > Hauptteil

Was sind MySQL-Ansichten, -Funktionen und gespeicherte Prozeduren?

PHPz
Freigeben: 2023-06-03 14:31:13
nach vorne
855 Leute haben es durchsucht

1. Ansicht

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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

2. Funktion

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;
Nach dem Login kopieren

Diese Anweisung erstellt eine Skalarfunktion mit dem Namen get_employee_name, die eine Mitarbeiternummer empfängt und den Namen des Mitarbeiters zurückgibt.

Rufen Sie diese Funktion auf:

SELECT get_employee_name (100001);
Nach dem Login kopieren

3. Gespeicherte Prozeduren

Eine gespeicherte Prozedur ist eine Reihe vordefinierter SQL-Anweisungen, die in einer Einheit gekapselt sind und wiederholt aufgerufen werden können. Gespeicherte Prozeduren können Eingabe- und Ausgabeparameter empfangen und haben die folgenden Eigenschaften:

Gespeicherte Prozeduren können mehrere SQL-Anweisungen enthalten und komplexe Aufgaben ausführen.

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
);
Nach dem Login kopieren

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');
Nach dem Login kopieren

Abteilungstabelle: speichert grundlegende Informationen von Abteilungen

CREATE TABLE departments (
  dept_no CHAR(4) PRIMARY KEY,
  dept_name VARCHAR(50)
);
Nach dem Login kopieren

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');
Nach dem Login kopieren

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)
);
Nach dem Login kopieren

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');
Nach dem Login kopieren

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;
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!