Apakah pandangan MySQL, fungsi dan prosedur tersimpan

PHPz
Lepaskan: 2023-06-03 14:31:13
ke hadapan
855 orang telah melayarinya

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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);
Salin selepas log masuk

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
);
Salin selepas log masuk

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');
Salin selepas log masuk

jadual jabatan: menyimpan maklumat asas jabatan

CREATE TABLE departments (
  dept_no CHAR(4) PRIMARY KEY,
  dept_name VARCHAR(50)
);
Salin selepas log masuk

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');
Salin selepas log masuk

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)
);
Salin selepas log masuk

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');
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!