Dalam sistem pengurusan pangkalan data hubungan (RDBMS), pelbagai komponen seperti fungsi, prosedur, kursor dan pencetus memainkan peranan penting peranan dalam meningkatkan fleksibiliti dan kefungsian sistem pangkalan data. Mereka membenarkan pembangun melaksanakan logik perniagaan tersuai, mengautomasikan tugasan berulang dan mengurus data dengan lebih berkesan.
Panduan ini akan memberikan penjelasan menyeluruh tentang komponen ini, bersama-sama dengan contoh coretan kod untuk setiap satu.
Fungsi dalam SQL ialah atur cara tersimpan yang boleh menerima input, melaksanakan operasi dan mengembalikan nilai. Ia serupa dengan prosedur, tetapi fungsi mesti mengembalikan nilai dan ia boleh digunakan dalam pertanyaan seperti mana-mana ungkapan lain.
Mari kita tulis fungsi mudah yang mengira kuasa dua nombor.
CREATE FUNCTION dbo.SquareNumber (@Number INT) RETURNS INT AS BEGIN RETURN @Number * @Number END
Penggunaan:
SELECT dbo.SquareNumber(4); -- Output: 16
Fungsi ini mengambil integer sebagai input, mengira kuasa duanya dan mengembalikan hasilnya.
Satu prosedur (juga dipanggil prosedur tersimpan) ialah satu set pernyataan SQL yang boleh dilaksanakan sebagai satu unit. Prosedur boleh mengambil parameter, melaksanakan operasi seperti memasukkan, mengemas kini, memadam dan memilih serta mengembalikan berbilang hasil (tetapi bukan secara langsung satu nilai seperti fungsi).
Mari kita tulis prosedur untuk mengemas kini gaji pekerja.
CREATE PROCEDURE dbo.UpdateSalary @EmployeeID INT, @NewSalary DECIMAL AS BEGIN UPDATE Employees SET Salary = @NewSalary WHERE EmployeeID = @EmployeeID; END
Penggunaan:
EXEC dbo.UpdateSalary @EmployeeID = 101, @NewSalary = 75000;
Prosedur ini mengambil ID Pekerja dan Gaji Baru sebagai input, mengemas kini gaji pekerja dan tidak memulangkan sebarang nilai.
kursor dalam SQL ialah objek pangkalan data yang membolehkan anda mendapatkan dan memproses setiap baris yang dikembalikan oleh pertanyaan satu demi satu. Ini amat berguna apabila anda perlu melakukan operasi baris demi baris, seperti kemas kini atau pemadaman, yang tidak mudah dikendalikan dalam satu operasi berasaskan set.
Mari kita tulis contoh menggunakan kursor untuk mengemas kini gaji semua pekerja sebanyak 10%.
CREATE FUNCTION dbo.SquareNumber (@Number INT) RETURNS INT AS BEGIN RETURN @Number * @Number END
Penjelasan:
pencetus ialah sejenis prosedur tersimpan khas yang melaksanakan (atau "membakar") secara automatik apabila peristiwa pangkalan data tertentu berlaku, seperti INSERT, UPDATE atau DELETE pada jadual. Pencetus berguna untuk menguatkuasakan peraturan perniagaan, mengekalkan integriti data atau mengemas kini jadual berkaitan secara automatik apabila perubahan berlaku.
Mari buat pencetus yang mengemas kini lajur LastModified secara automatik apabila gaji pekerja dikemas kini.
SELECT dbo.SquareNumber(4); -- Output: 16
Penjelasan:
Component | Description | Example Use Case |
---|---|---|
Function | A stored program that returns a single value and can be used in queries. | Calculate the square of a number. |
Procedure | A stored program that can perform multiple actions (insert, update, delete) but does not return a value. | Update an employee’s salary. |
Cursor | A mechanism for iterating over a result set row-by-row, used for operations that cannot be easily expressed in set-based SQL. | Update all employees’ salaries by a fixed percentage. |
Trigger | A stored program that automatically executes when specific database events (INSERT, UPDATE, DELETE) occur. | Automatically update a timestamp column when a record is modified. |
Setiap komponen ini mempunyai tujuan unik dalam menjadikan pangkalan data anda lebih fleksibel, boleh diselenggara dan cekap, terutamanya dalam persekitaran pangkalan data yang kompleks.
Atas ialah kandungan terperinci Fungsi, Prosedur, Kursor dan Pencetus dalam SQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!