Rumah  >  Artikel  >  pangkalan data  >  Apakah pandangan MySQL, fungsi dan prosedur tersimpan

Apakah pandangan MySQL, fungsi dan prosedur tersimpan

PHPz
PHPzke hadapan
2023-06-03 14:31:13850semak imbas

1. Lihat

Pandangan yang dipanggil merujuk kepada set hasil yang diambil oleh pernyataan pertanyaan SQL, yang muncul dalam bentuk jadual maya, ia tidak wujud dalam pangkalan data. Peranan pandangan adalah untuk memudahkan pertanyaan kompleks dengan menumpukan perkaitan berbilang jadual dan operasi penapisan ke dalam satu paparan, dan kemudian menanyakan pandangan untuk mendapatkan hasil yang diperlukan. Pandangan mempunyai ciri-ciri berikut:

Paparan tidak menyimpan data, tetapi dijana secara dinamik berdasarkan hasil penyataan PILIH
Paparan hanya boleh membaca, tidak menulis
Paparan boleh berdasarkan a atau Berbilang jadual dicipta.
Berikut ialah contoh membuat paparan:

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;

Pernyataan ini mencipta paparan bernama vw_employee, yang mengandungi data daripada jadual pekerja dan jabatan Anda boleh menanyakan pandangan dengan pernyataan berikut:

SELECT * FROM vw_employee;

2. Fungsi

Fungsi ialah unit program boleh guna semula yang merangkum bahagian logik tertentu dan boleh digunakan untuk menyelesaikan tugas tertentu. Dalam MySQL, fungsi dibahagikan kepada dua kategori: fungsi skalar dan fungsi agregat. Fungsi skalar mengeluarkan nilai tunggal, manakala fungsi agregat mengeluarkan nilai agregat seperti COUNT, SUM, AVG, dsb. Fungsi mempunyai ciri-ciri berikut:

Fungsi mempunyai input dan output, boleh menerima parameter dan mengembalikan hasil;
Berikut ialah contoh mencipta fungsi skalar:

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;

Pernyataan ini mencipta fungsi skalar bernama get_employee_name, yang menerima nombor pekerja dan mengembalikan nama pekerja.

Panggil fungsi ini:

SELECT get_employee_name (100001);

3. Prosedur tersimpan

Prosedur tersimpan ialah satu set pernyataan SQL yang dipratentukan yang terkandung dalam satu unit dan boleh dipanggil berulang kali. Prosedur tersimpan boleh menerima parameter input dan parameter output, dan ia mempunyai ciri-ciri berikut:

Prosedur tersimpan boleh mengandungi berbilang pernyataan SQL dan boleh menyelesaikan tugas yang rumit

Prosedur tersimpan boleh dilaksanakan pada bahagian pelayan, mengurangkan Overhed penghantaran rangkaian;

Prosedur tersimpan boleh dikongsi oleh berbilang aplikasi.
Berikut ialah contoh menggunakan prosedur tersimpan, dengan mengandaikan kita mempunyai tiga jadual berikut:

jadual pekerja: menyimpan maklumat asas pekerja

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
);

Masukkan beberapa data:

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');

jadual jabatan: menyimpan maklumat asas jabatan

CREATE TABLE departments (
  dept_no CHAR(4) PRIMARY KEY,
  dept_name VARCHAR(50)
);

Masukkan beberapa data:

INSERT INTO departments VALUES
('d001', 'Marketing'),
('d002', 'Finance'),
('d003', 'Human Resources'),
('d004', 'Production'),
('d005', 'Development'),
('d006', 'Quality Management'),
('d007', 'Sales'),
('d008', 'Research');

jadual dept_emp: menyimpan perhubungan antara pekerja dan jabatan

CREATE TABLE dept_emp (
  emp_no INT,
  dept_no CHAR(4),
  from_date DATE,
  to_date DATE,
  PRIMARY KEY (emp_no, dept_no)
);

Sisipkan beberapa data:

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');

Kini kita boleh mencipta prosedur tersimpan untuk menanyakan bilangan pekerja dan butiran pekerja dalam jabatan:

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;

Pernyataan ini mencipta prosedur tersimpan dipanggil get_employee_by_dept yang menerima nama jabatan sebagai parameter input dan mengembalikan bilangan pekerja dan butiran pekerja di jabatan.

Panggil fungsi ini

CALL get_employee_by_dept('Development', @employee_count);
SELECT @employee_count;

Dalam aplikasi praktikal, paparan, fungsi dan prosedur tersimpan semuanya boleh memainkan peranan penting. Contohnya, dalam aplikasi perusahaan yang kompleks, anda mungkin perlu mendapatkan data daripada berbilang jadual dan melakukan operasi penapisan dan pengagregatan padanya. Dalam kes ini, paparan boleh digunakan untuk memudahkan pertanyaan kompleks. Di samping itu, jika terdapat beberapa logik perniagaan biasa yang perlu digunakan semula, ia boleh dirangkumkan sebagai fungsi atau prosedur tersimpan untuk meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod.

Atas ialah kandungan terperinci Apakah pandangan MySQL, fungsi dan prosedur tersimpan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam