Rumah > pangkalan data > tutorial mysql > Fungsi, Prosedur, Kursor dan Pencetus dalam SQL

Fungsi, Prosedur, Kursor dan Pencetus dalam SQL

Patricia Arquette
Lepaskan: 2025-01-05 16:06:40
asal
637 orang telah melayarinya

Functions, Procedures, Cursors, and Triggers in SQL

Panduan Penuh: Fungsi, Prosedur, Kursor dan Pencetus dalam SQL

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.


1. Fungsi dalam SQL

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.

Perkara Utama:

  • Fungsi boleh digunakan daripada pertanyaan.
  • Fungsi mengembalikan satu nilai.
  • Mereka boleh mengambil parameter input.
  • Ia biasanya digunakan untuk pengiraan, transformasi dan mendapatkan semula data.

Contoh Fungsi (SQL Server Syntax)

Mari kita tulis fungsi mudah yang mengira kuasa dua nombor.

CREATE FUNCTION dbo.SquareNumber (@Number INT)
RETURNS INT
AS
BEGIN
    RETURN @Number * @Number
END
Salin selepas log masuk
Salin selepas log masuk

Penggunaan:

SELECT dbo.SquareNumber(4); -- Output: 16
Salin selepas log masuk
Salin selepas log masuk

Fungsi ini mengambil integer sebagai input, mengira kuasa duanya dan mengembalikan hasilnya.


2. Prosedur dalam SQL

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

Perkara Utama:

  • Prosedur tidak semestinya mengembalikan nilai, tetapi ia mungkin mengembalikan berbilang set hasil.
  • Mereka boleh melakukan berbilang operasi.
  • Prosedur boleh digunakan secara eksplisit menggunakan arahan EXEC.

Contoh Prosedur (SQL Server Syntax)

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

Penggunaan:

EXEC dbo.UpdateSalary @EmployeeID = 101, @NewSalary = 75000;
Salin selepas log masuk

Prosedur ini mengambil ID Pekerja dan Gaji Baru sebagai input, mengemas kini gaji pekerja dan tidak memulangkan sebarang nilai.


3. Kursor dalam SQL

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.

Perkara Utama:

  • Kursor boleh digunakan untuk mengulangi set hasil pertanyaan.
  • Ia biasanya digunakan apabila operasi berasaskan set tidak mencukupi.
  • Kursor boleh dikelaskan kepada jenis yang berbeza (statik, dinamik, hadapan sahaja, dll.).

Contoh Kursor (SQL Server Syntax)

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

Penjelasan:

  1. Kami mengisytiharkan kursor SalaryCursor yang memilih EmployeeID dan Gaji daripada jadual Pekerja.
  2. Kami membuka kursor dan mengambil baris pertama menjadi pembolehubah.
  3. Di dalam gelung WHILE, kami mengemas kini gaji setiap pekerja dengan mendarabkannya dengan 1.1 (kenaikan 10%).
  4. Selepas memproses semua baris, kami menutup dan menyamakan kedudukan kursor.

4. Pencetus dalam SQL

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.

Perkara Utama:

  • Pencetus boleh menjadi SEBELUM atau SELEPAS acara (masukkan, kemas kini, padam).
  • Pencetus boleh menyala sekali setiap penyataan atau sekali setiap baris (bergantung pada jenis).
  • Ia sering digunakan untuk menguatkuasakan peraturan integriti atau menjejaki perubahan.

Contoh Pencetus (SQL Server Syntax)

Mari buat pencetus yang mengemas kini lajur LastModified secara automatik apabila gaji pekerja dikemas kini.

SELECT dbo.SquareNumber(4); -- Output: 16
Salin selepas log masuk
Salin selepas log masuk

Penjelasan:

  1. Pencetus trg_UpdateSalary menyala selepas operasi UPDATE pada jadual Pekerja.
  2. Di dalam pencetus, kami menyemak sama ada lajur Gaji telah dikemas kini menggunakan fungsi UPDATE().
  3. Jika Gaji telah dikemas kini, kami mengubah suai lajur LastModified dengan tarikh dan masa semasa (GETDATE()).
  4. Jadual yang disisipkan ialah jadual khas yang mengandungi nilai baharu selepas operasi kemas kini dan kami menggunakannya untuk mengemas kini medan LastModified untuk pekerja yang diubah suai.

Ringkasan Komponen SQL

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.

Kesimpulan

  • Fungsi dan prosedur adalah penting untuk memodulasi logik perniagaan dan operasi boleh guna semula dalam pangkalan data. Fungsi lebih tertumpu pada mengembalikan nilai, manakala prosedur boleh mengendalikan berbilang tugas tetapi tidak mengembalikan nilai secara langsung.
  • Kursor digunakan apabila anda perlu memproses data baris demi baris, walaupun operasi berasaskan set biasanya lebih cekap.
  • Pencetus membenarkan respons automatik kepada peristiwa pangkalan data, memastikan integriti data dan menguatkuasakan peraturan tanpa memerlukan campur tangan manual.

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!

sumber:dev.to
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan