SQL (Bahasa Pertanyaan Berstruktur) ialah bahasa standard untuk mengurus dan mengendalikan pangkalan data hubungan. Salah satu ciri yang berkuasa dan biasa digunakan ialah prosedur tersimpan. Prosedur tersimpan ialah satu set penyata SQL yang disusun dan disimpan dalam pangkalan data dan boleh menerima parameter input, melaksanakan operasi dan mengembalikan hasil. Mari terokai apakah prosedur tersimpan dan cara menciptanya.
Prosedur tersimpan mungkin terdengar seperti istilah yang kompleks, tetapi ia adalah asas pengurusan pangkalan data yang cekap. Mari kita mulakan dengan definisinya.
Prosedur tersimpan ialah satu siri pernyataan SQL yang dipratakrif dan disimpan pada pelayan pangkalan data. Apabila anda perlu melakukan operasi ini, anda boleh melaksanakannya dengan memanggil nama prosedur yang disimpan dan bukannya menghantar berbilang arahan pertanyaan berasingan.
Berikut ialah contoh ringkas yang menunjukkan cara membuat prosedur tersimpan mudah dalam SQL Server:
CREATE PROCEDURE procedure_name AS BEGIN -- SQL statements END
Berikut ialah beberapa komponen utama prosedur tersimpan:
Komponen ini bekerjasama untuk menjadikan prosedur tersimpan sebagai cara yang boleh digunakan semula dan cekap untuk melaksanakan operasi pangkalan data. Dengan merangkum tugas pangkalan data biasa dalam prosedur tersimpan, anda boleh memudahkan pembangunan aplikasi sambil meningkatkan prestasi dan keselamatan.
Prosedur tersimpan dilaksanakan di dalam pelayan pangkalan data, yang bermaksud ia boleh menyelesaikan operasi dengan lebih cekap dan melaksanakan lebih cepat berbanding jika berbilang pertanyaan dihantar satu demi satu daripada pelanggan. Selain itu, menggunakan prosedur tersimpan boleh mengurangkan trafik rangkaian dengan ketara kerana hanya set hasil akhir perlu dipindahkan daripada pelayan kepada klien, dan bukannya hasil setiap pertanyaan individu berulang-alik. Dengan cara ini, ia bukan sahaja meningkatkan kelajuan pemprosesan data, tetapi juga mengurangkan penggunaan lebar jalur rangkaian.
Prosedur tersimpan memainkan peranan penting dalam pengurusan pangkalan data kerana ia menyimpan logik perniagaan secara berpusat pada pelayan pangkalan data. Melakukannya memastikan bahawa operasi kritikal sentiasa dilakukan dengan cara yang konsisten, selamat dan cekap. Khususnya, prosedur tersimpan membantu:
Terdapat beberapa kelebihan utama untuk menggunakan prosedur tersimpan:
Sekarang mari kita lihat arahan berguna yang berpasangan dengan prosedur tersimpan.
Seperti yang dinyatakan sebelum ini, arahan ini digunakan untuk menentukan prosedur tersimpan baharu dalam pangkalan data. Berikut ialah contoh prosedur tersimpan menggunakan fungsi ini:
Andaikan kita mempunyai jadual yang dipanggil "Pekerja" dengan lajur berikut:
Kami ingin membuat prosedur tersimpan untuk mendapatkan semula semua pekerja yang dimiliki oleh jabatan tertentu.
CREATE PROCEDURE procedure_name AS BEGIN -- SQL statements END
Arahan ini digunakan untuk melaksanakan prosedur tersimpan. Ia juga boleh digunakan untuk menghantar parameter input dan output. Untuk contoh kami yang terdahulu, arahan "EXEC" akan kelihatan seperti ini:
CREATE PROCEDURE GetEmployeesByDepartment @DepartmentID INT AS BEGIN SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary FROM Employees WHERE DepartmentID = @DepartmentID; END;
Arahan ini membolehkan anda mengubah suai prosedur tersimpan sedia ada tanpa menjatuhkan dan menciptanya semula. Meneruskan contoh sebelumnya, jika kami ingin mengubah suai prosedur tersimpan bernama "GetEmployeesByDepartment" untuk menambah penapis gaji tambahan, iaitu, kami ingin mendapatkan maklumat tentang pekerja di jabatan tertentu yang gajinya lebih besar daripada jumlah tertentu.
Berikut ialah contoh:
EXEC GetEmployeesByDepartment @DepartmentID = 1;
Jika prosedur tersimpan tidak lagi diperlukan, anda boleh mengalih keluarnya daripada pangkalan data menggunakan arahan DROP PROCEDURE.
ALTER PROCEDURE GetEmployeesByDepartment @DepartmentID INT, @MinSalary DECIMAL(10, 2) AS BEGIN SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary FROM Employees WHERE DepartmentID = @DepartmentID AND Salary > @MinSalary; END;
Kami akan melihat untuk mencipta dan menggunakan prosedur tersimpan dalam tiga bidang:
Membuat prosedur tersimpan dalam MySQL agak mudah. Anda mentakrifkan prosedur, menentukan parameter dan menulis kod SQL menggunakan pernyataan "CREATE PROCEDURE".
Anda boleh melakukan ini:
Mula-mula, mari buat contoh jadual pekerja untuk diisi dengan data yang akan kami gunakan.
DROP PROCEDURE GetEmployeesByDepartment
Masukkan beberapa data sampel ke dalam jadual Pekerja.
CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY AUTO_INCREMENT, FirstName VARCHAR(50), LastName VARCHAR(50), DepartmentID INT, Salary DECIMAL(10, 2) );
Mari kita buat prosedur tersimpan untuk mendapatkan pekerja berdasarkan jabatan mereka.
INSERT INTO Employees (FirstName, LastName, DepartmentID, Salary) VALUES ('John', 'Doe', 1, 60000), ('Jane', 'Smith', 2, 65000), ('Sam', 'Brown', 1, 62000), ('Sue', 'Green', 3, 67000);
Untuk memanggil prosedur tersimpan dan mendapatkan semula pekerja jabatan tertentu, gunakan pernyataan CALL.
CREATE PROCEDURE GetEmployeesByDepartment(IN depID INT) BEGIN SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary FROM Employees WHERE DepartmentID = depID; END;
Dalam SQL Server, penciptaan dan pelaksanaan prosedur tersimpan sedikit berbeza, tetapi tidak berubah secara drastik. Berikut ialah contoh:
Mula-mula, mari kita buat contoh jadual Pekerja.
CALL GetEmployeesByDepartment(1);
Seterusnya, kami akan memasukkan beberapa data sampel ke dalam jadual Pekerja.
CREATE PROCEDURE procedure_name AS BEGIN -- SQL statements END
Mari kita buat prosedur tersimpan untuk mendapatkan pekerja berdasarkan jabatan mereka.
CREATE PROCEDURE GetEmployeesByDepartment @DepartmentID INT AS BEGIN SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary FROM Employees WHERE DepartmentID = @DepartmentID; END;
Untuk melaksanakan prosedur tersimpan dan mendapatkan semula pekerja jabatan tertentu, gunakan penyata EXEC.
EXEC GetEmployeesByDepartment @DepartmentID = 1;
Oracle juga menyokong prosedur tersimpan. Berikut ialah panduan langkah demi langkah tentang cara melaksanakannya dalam Oracle menggunakan SQL.
Mula-mula, mari kita buat contoh jadual Pekerja.
ALTER PROCEDURE GetEmployeesByDepartment @DepartmentID INT, @MinSalary DECIMAL(10, 2) AS BEGIN SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary FROM Employees WHERE DepartmentID = @DepartmentID AND Salary > @MinSalary; END;
Seterusnya, kami memasukkan beberapa sampel data ke dalam jadual pekerja untuk membuat set data.
DROP PROCEDURE GetEmployeesByDepartment
Mari kita buat prosedur tersimpan untuk mendapatkan pekerja berdasarkan jabatan mereka.
CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY AUTO_INCREMENT, FirstName VARCHAR(50), LastName VARCHAR(50), DepartmentID INT, Salary DECIMAL(10, 2) );
Selepas melengkapkan pengenalan secara langsung ini, mari lihat beberapa amalan terbaik untuk mereka bentuk prosedur tersimpan.
Pertanyaan berparameter dalam prosedur tersimpan membantu mencegah serangan suntikan SQL. Sentiasa gunakan parameter dan bukannya menggabungkan input pengguna terus ke dalam pernyataan SQL.
Sebagai contoh, jangan gunakan ini:
INSERT INTO Employees (FirstName, LastName, DepartmentID, Salary) VALUES ('John', 'Doe', 1, 60000), ('Jane', 'Smith', 2, 65000), ('Sam', 'Brown', 1, 62000), ('Sue', 'Green', 3, 67000);
Gunakan ini:
CREATE PROCEDURE GetEmployeesByDepartment(IN depID INT) BEGIN SELECT EmployeeID, FirstName, LastName, DepartmentID, Salary FROM Employees WHERE DepartmentID = depID; END;
Seperti yang dinyatakan sebelum ini, prosedur tersimpan boleh bertindak sebagai lapisan keselamatan dengan mengehadkan akses terus kepada jadual asas. Ini mengurangkan risiko data sensitif terdedah.
Untuk memastikan prosedur yang disimpan berjalan dengan cekap, prosedur tersebut harus dioptimumkan untuk prestasi. Ini bermakna mengurangkan pengiraan yang tidak perlu dan menggunakan indeks dengan baik. Anda boleh meningkatkan kecekapan pertanyaan dengan menganalisis pelan pelaksanaan pertanyaan untuk mengenal pasti dan menyelesaikan kesesakan prestasi.
Sebagai contoh, anda harus mengelak daripada menggunakan "PILIH *" untuk mendapatkan semula semua medan dalam jadual kerana ini meningkatkan jumlah data yang dipindahkan dan mengurangkan kecekapan. Sebaliknya, anda harus memilih hanya medan yang anda perlukan untuk mengecilkan skop pengambilan data untuk meningkatkan prestasi.
Kod pendokumentasian juga digunakan pada penulisan prosedur tersimpan. Ini penting untuk pembangun lain memahami peranan dan fungsi setiap prosedur. Ia juga menggalakkan konvensyen penamaan dan gaya pengekodan yang konsisten.
Proses ini boleh dicapai dengan menambahkan ulasan pada prosedur tersimpan atau mengekalkan dokumentasi yang berasingan. Contohnya:
CREATE PROCEDURE procedure_name AS BEGIN -- SQL statements END
Kawalan versi adalah penting untuk mengurus dan menjejaki perubahan pada prosedur yang disimpan. Adalah berguna untuk mengekalkan repositori yang mengandungi sejarah lengkap perubahan pada skrip prosedur tersimpan dan dokumentasinya. Ini bukan sahaja memudahkan untuk menjejaki semua pengubahsuaian, tetapi juga memastikan konsistensi merentas persekitaran penggunaan yang berbeza.
Prosedur tersimpan ialah cara pengurusan pangkalan data yang cekap dan selamat. Mereka menawarkan beberapa faedah yang, apabila digunakan dengan amalan terbaik yang betul, boleh meningkatkan kecekapan dan keberkesanan analisis data dengan ketara dalam organisasi.
Pergi ke tapak web Chat2DB
? Sertai Komuniti Chat2DB
? Ikuti kami di X
? Cari kami di Discord
Atas ialah kandungan terperinci Apakah Prosedur Tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!