Rumah > Artikel > pangkalan data > Apakah pandangan MySQL, fungsi dan prosedur tersimpan
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;
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;
SELECT get_employee_name (100001);
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!