Chúng ta có thể tạo thủ tục trong mysql không?
Trong MySQL, một thủ tục là một chương trình được lưu trữ mà bạn có thể truyền tham số vào. Nó không trả về một giá trị như một hàm Show
Tạo thủ tụcGiống như bạn có thể tạo các thủ tục bằng các ngôn ngữ khác, bạn có thể tạo các thủ tục của riêng mình trong MySQL. Hãy xem xét kỹ hơn cú phápCú pháp để tạo một thủ tục trong MySQL là CREATE PROCEDURE procedure_name [ (parameter datatype [, parameter datatype]) ] BEGIN declaration_section executable_section END;procedure_nameTên để gán cho thủ tục này trong MySQL. tham số Không bắt buộc. Một hoặc nhiều tham số được truyền vào thủ tục. Khi tạo một thủ tục, có ba loại tham số có thể được khai báo
Ví dụHãy xem một ví dụ cho thấy cách tạo một thủ tục trong MySQL DELIMITER // CREATE procedure CalcIncome ( OUT ending_value INT ) BEGIN DECLARE income INT; SET income = 50; label1: WHILE income <= 3000 DO SET income = income * 2; END WHILE label1; SET ending_value = income; END; // DELIMITER ; Sau đó, bạn có thể tham khảo quy trình mới của mình như sau CALL CalcIncome (@variable_name); SELECT @variable_name; thủ tục thảKhi bạn đã tạo thủ tục của mình trong MySQL, bạn có thể thấy rằng mình cần xóa thủ tục đó khỏi cơ sở dữ liệu Các thủ tục được lưu trữ trong MySQL nhóm nhiều tác vụ thành một và lưu tác vụ trên máy chủ để sử dụng trong tương lai Các thủ tục được lưu trữ đơn giản hóa việc quản lý cơ sở dữ liệu và giảm lưu lượng mạng. Ví dụ: đưa ra truy vấn tới máy chủ MySQL xử lý truy vấn và trả về kết quả. Sử dụng thủ tục lưu trữ lưu các truy vấn trên máy chủ để chúng có thể được thực thi sau này Trong hướng dẫn này, bạn sẽ học cách tạo, liệt kê, thay đổi và loại bỏ thủ tục lưu trữ điều kiện tiên quyết
Các thủ tục được lưu trữ trong MySQL là gì?Các thủ tục được lưu trữ của MySQL là các câu lệnh SQL được biên dịch sẵn được lưu trữ trong cơ sở dữ liệu. Chúng là các chương trình con chứa tên, danh sách tham số và câu lệnh SQL Tất cả các hệ thống cơ sở dữ liệu quan hệ đều hỗ trợ các thủ tục được lưu trữ và không yêu cầu bất kỳ gói môi trường thời gian chạy bổ sung nào Làm cách nào để sử dụng các thủ tục được lưu trữ?Để gọi các thủ tục được lưu trữ, bạn có thể sử dụng câu lệnh 1 hoặc các thủ tục được lưu trữ khác. Lần đầu tiên một thủ tục lưu sẵn được gọi, MySQL sẽ tra cứu nó trong danh mục cơ sở dữ liệu, biên dịch mã, đặt nó vào bộ nhớ đệm và thực thi nóCác lần chạy tiếp theo trong cùng một phiên sẽ thực thi các thủ tục đã lưu trữ từ bộ nhớ cache, khiến chúng cực kỳ hữu ích cho các tác vụ lặp đi lặp lại Các thủ tục được lưu trữ sử dụng các tham số để truyền giá trị và tùy chỉnh kết quả. Các tham số được sử dụng để chỉ định các cột trong bảng mà truy vấn sẽ thực hiện và trả về kết quả Các thủ tục được lưu trữ cũng có thể bao gồm các câu lệnh luồng điều khiển 2, 3 và 4 thực hiện mã theo thủ tụcTạo thủ tục lưu trữTạo một thủ tục được lưu trữ theo hai cách 1. Sử dụng Vỏ MySQL Sử dụng cú pháp sau để tạo thủ tục lưu sẵn trong MySQL
Theo mặc định, cú pháp được liên kết với cơ sở dữ liệu đang sử dụng, nhưng bạn cũng có thể sử dụng cú pháp cho cơ sở dữ liệu khác bằng cách chỉ định tên cơ sở dữ liệu theo cách sau. 0Ở đây, đối số 1 đầu tiên đặt dấu phân cách mặc định thành 2, trong khi đối số 1 cuối cùng đặt nó trở lại dấu chấm phẩy 4. Để sử dụng nhiều câu lệnh, hãy chỉ định các dấu phân cách khác nhau như 5Tên thủ tục xuất hiện sau đối số 6. Sau tên thủ tục, sử dụng dấu ngoặc đơn để chỉ định các tham số sẽ sử dụng trong thủ tục, tên của tham số, loại dữ liệu và độ dài dữ liệu. Tách từng tham số bằng dấu phẩyCác chế độ tham số là
Ví dụ Thực thi thủ tục được lưu trữ bằng cách gọi nó
Truy vấn trả về kết quả cho thủ tục được lưu trữ 2. Sử dụng bàn làm việc của MySQL Một cách khác để tạo thủ tục lưu sẵn là sử dụng MySQL Workbench Wizard. Trình hướng dẫn trực quan và đơn giản hóa quy trình vì bạn không phải đặt dấu phân cách hoặc lo lắng về định dạng Thực hiện theo các bước sau Bước 1. Bấm chuột phải vào Thủ tục được lưu trữ trong cửa sổ Điều hướng của MySQL Workbench và chọn Tạo thủ tục được lưu trữ… để bắt đầu trình hướng dẫn Bước 2. Chỉ định tên thủ tục và nhập mã trong khối BEGIN … END Bước 3. Xem lại mã và nhấp vào Áp dụng Bước 4. Xác nhận thực hiện bằng cách nhấp vào Áp dụng và tạo quy trình bằng cách nhấp vào Kết thúc Bước 5. Thực hiện thủ tục để xem nếu nó hoạt động. Tạo một tab SQL mới để thực hiện các truy vấn Bước 6. 1 thủ tục trong tab SQL và nhấp vào Thực thiNếu không có lỗi trả về, MySQL thực thi thủ tục lưu sẵn và hiển thị kết quả Liệt kê thủ tục lưu trữCó ba cách để xem danh sách tất cả các thủ tục được lưu trữ 1. Sử dụng Vỏ MySQL Để có danh sách tất cả các thủ tục được lưu trữ mà bạn có quyền truy cập, bao gồm các đặc điểm của chúng, hãy sử dụng cú pháp sau DELIMITER // CREATE procedure CalcIncome ( OUT ending_value INT ) BEGIN DECLARE income INT; SET income = 50; label1: WHILE income <= 3000 DO SET income = income * 2; END WHILE label1; SET ending_value = income; END; // DELIMITER ;8 Câu lệnh DELIMITER // CREATE procedure CalcIncome ( OUT ending_value INT ) BEGIN DECLARE income INT; SET income = 50; label1: WHILE income <= 3000 DO SET income = income * 2; END WHILE label1; SET ending_value = income; END; // DELIMITER ;84 trả về một đầu ra dài. Câu lệnh hiển thị tên và đặc điểm của các thủ tục được lưu trữ mà bạn có quyền truy cập trên máy chủ Cuộn qua đầu ra để tìm các quy trình hiện có trên máy chủ Đối số DELIMITER // CREATE procedure CalcIncome ( OUT ending_value INT ) BEGIN DECLARE income INT; SET income = 50; label1: WHILE income <= 3000 DO SET income = income * 2; END WHILE label1; SET ending_value = income; END; // DELIMITER ;85 tìm các thủ tục được lưu trữ có chứa một từ cụ thể trong tên của chúng. Sử dụng DELIMITER // CREATE procedure CalcIncome ( OUT ending_value INT ) BEGIN DECLARE income INT; SET income = 50; label1: WHILE income <= 3000 DO SET income = income * 2; END WHILE label1; SET ending_value = income; END; // DELIMITER ;86 để thay thế bất kỳ số lượng ký tự nào, kể cả số không Ví dụ Đối số DELIMITER // CREATE procedure CalcIncome ( OUT ending_value INT ) BEGIN DECLARE income INT; SET income = 50; label1: WHILE income <= 3000 DO SET income = income * 2; END WHILE label1; SET ending_value = income; END; // DELIMITER ;87 cho phép bạn chỉ liệt kê các thủ tục được lưu trữ trong một cơ sở dữ liệu cụ thể Ví dụ Trong ví dụ này, câu lệnh chỉ trả về các thủ tục được lưu trữ cho cơ sở dữ liệu 'customer_list' 2. Sử dụng từ điển dữ liệu Cơ sở dữ liệu information_schema chứa một bảng được gọi là thường trình, có thông tin về các thủ tục và chức năng được lưu trữ liên quan đến tất cả các cơ sở dữ liệu trên máy chủ MySQL hiện tại Sử dụng cú pháp sau để xem tất cả các thủ tục được lưu trữ cho cơ sở dữ liệu CALL CalcIncome (@variable_name); SELECT @variable_name;3 3. Sử dụng bàn làm việc của MySQL Đối với cách tiếp cận GUI để xem các thủ tục được lưu trữ, hãy sử dụng MySQL Workbench. Thực hiện theo các bước sau để xem các thủ tục được lưu trữ Bước 1. Bấm đúp vào cơ sở dữ liệu bạn muốn sử dụng trong phần Bộ điều hướng Bước 2. Mở rộng mục thả xuống Thủ tục được lưu trữ Mục này hiển thị tất cả các thủ tục được lưu trữ cho cơ sở dữ liệu hiện tại Thay đổi thủ tục lưu trữĐể thay đổi một thủ tục được lưu trữ có nghĩa là thay đổi các đặc điểm của một thủ tục. Không có câu lệnh nào trong MySQL để sửa đổi các tham số hoặc phần thân của thủ tục được lưu trữ. Để thay đổi tham số hoặc nội dung, bỏ thủ tục đã lưu trữ và tạo một thủ tục mới Thay đổi một thủ tục được lưu trữ theo hai cách 1. Sử dụng Vỏ MySQL Thay đổi một đặc điểm thủ tục bằng cách sử dụng câu lệnh DELIMITER // CREATE procedure CalcIncome ( OUT ending_value INT ) BEGIN DECLARE income INT; SET income = 50; label1: WHILE income <= 3000 DO SET income = income * 2; END WHILE label1; SET ending_value = income; END; // DELIMITER ;88. Ví dụ: chúng ta có thể thêm nhận xét vào thủ tục mà chúng ta đã tạo trước đó. Cú pháp là CALL CalcIncome (@variable_name); SELECT @variable_name;5 2. Sử dụng bàn làm việc của MySQL MySQL Workbench GUI cho phép người dùng thay đổi thủ tục được lưu trữ nơi người dùng có thể thêm tham số hoặc thay đổi mã. MySQL Workbench loại bỏ thủ tục được lưu sẵn hiện có và tạo một thủ tục mới sau khi thực hiện các thay đổi Thực hiện theo các bước sau Bước 1. Trong phần Bộ điều hướng, nhấp chuột phải vào thủ tục được lưu trữ mà bạn muốn sửa đổi. Chọn mục Thủ tục thay thế được lưu trữ… Bước 2. Khi tab mở ra, hãy thực hiện các thay đổi mong muốn đối với quy trình được lưu sẵn hiện có và nhấp vào Áp dụng Bước 3. Một cửa sổ xem xét SQL Script xuất hiện hiển thị quá trình - loại bỏ thủ tục được lưu sẵn hiện có và tạo một thủ tục mới có chứa các thay đổi Nhấp vào Áp dụng rồi nhấp vào Kết thúc trong cửa sổ tiếp theo để thực thi tập lệnh Thủ tục lưu trữ thảBỏ (xóa) một thủ tục 1. Sử dụng Vỏ MySQL Xóa thủ tục được lưu trữ khỏi máy chủ bằng cách sử dụng câu lệnh DELIMITER // CREATE procedure CalcIncome ( OUT ending_value INT ) BEGIN DECLARE income INT; SET income = 50; label1: WHILE income <= 3000 DO SET income = income * 2; END WHILE label1; SET ending_value = income; END; // DELIMITER ;89 Cú pháp cơ bản là CALL CalcIncome (@variable_name); SELECT @variable_name;7 Tham số CALL CalcIncome (@variable_name); SELECT @variable_name;30 chỉ loại bỏ thủ tục được lưu trữ nếu nó tồn tại trên máy chủ. Nhập tên thủ tục lưu trữ thay cho cú pháp CALL CalcIncome (@variable_name); SELECT @variable_name;31 Ví dụ Vì không có quy trình nào có tên 'kiểm tra' trên máy chủ, đầu ra cho biết 0 hàng bị ảnh hưởng và quy trình đã chỉ định không tồn tại Bỏ một thủ tục không tồn tại mà không có tham số CALL CalcIncome (@variable_name); SELECT @variable_name;30 sẽ trả về lỗi 2. Sử dụng bàn làm việc của MySQL Để loại bỏ một thủ tục đã lưu trữ với MySQL Workbench, hãy làm theo các bước sau Bước 1. Mở rộng mục Thủ tục được lưu trữ trong phần Bộ điều hướng. Nhấp chuột phải vào thủ tục được lưu trữ mà bạn muốn xóa và chọn Drop Stored Procedure… trong menu ngữ cảnh Bước 2. Trong cửa sổ xác nhận, nhấp vào Drop Now để xóa thủ tục đã lưu trữ Hành động này sẽ xóa vĩnh viễn thủ tục Ưu điểm và nhược điểm của thủ tục lưu trữ MySQLCác thủ tục được lưu trữ có một số ưu điểm và nhược điểm khi chúng phù hợp với các nhu cầu cụ thể. Dưới đây là một số ưu điểm và nhược điểm Ưu điểm của việc sử dụng thủ tục lưu trữƯu điểm của thủ tục lưu sẵn là Giảm lưu lượng mạng Các thủ tục được lưu trữ giúp giảm lưu lượng mạng giữa các ứng dụng và Máy chủ MySQL bằng cách giữ tất cả logic lập trình trên máy chủ. Thay vì gửi nhiều kết quả truy vấn trên mạng, các ứng dụng chỉ gửi tên quy trình và đầu vào tham số Cải thiện an ninh Quản trị viên cơ sở dữ liệu cấp cho ứng dụng các đặc quyền để chỉ gọi và truy cập các thủ tục được lưu trữ cụ thể mà không cấp cho chúng quyền truy cập trực tiếp vào các bảng. Các thủ tục được lưu trữ giúp ngăn chặn các cuộc tấn công chèn tập lệnh vì các tham số đầu vào được coi là giá trị chứ không phải mã thực thi Logic kinh doanh tập trung Các thủ tục được lưu trữ gói gọn logic nghiệp vụ có thể tái sử dụng bởi nhiều ứng dụng. Điều đó giúp giảm trùng lặp cùng một logic trong nhiều ứng dụng khác nhau và làm cho cơ sở dữ liệu nhất quán hơn Nhược điểm của việc sử dụng các thủ tục được lưu trữNhược điểm của thủ tục lưu sẵn là Sử dụng tài nguyên Việc sử dụng nhiều thủ tục được lưu trữ và các hoạt động logic làm cho việc sử dụng bộ nhớ và CPU tăng lên đáng kể cho mọi kết nối Không có tính di động Không dễ để chuyển các thủ tục được lưu trữ được viết bằng một ngôn ngữ cụ thể từ cài đặt này sang cài đặt khác. Dựa vào một thủ tục được lưu trữ cũng liên kết người dùng với một cơ sở dữ liệu cụ thể Khắc phục sự cố và Kiểm tra MySQL không cung cấp các tiện ích để kiểm tra và gỡ lỗi các thủ tục được lưu trữ, vì vậy có thể khó gỡ lỗi chúng. Phát triển và duy trì các thủ tục được lưu trữ đòi hỏi kiến thức sâu rộng. Đây là một thách thức đối với các nhà phát triển mới và dẫn đến tăng thêm chi phí bảo trì Phần kết luận Sau khi đọc bài viết này, bạn biết thủ tục lưu trữ là gì và khi nào nên sử dụng chúng. Bạn cũng biết cách tạo, sửa đổi, xem tất cả các thủ tục được lưu sẵn có sẵn và xóa những thủ tục bạn không cần nữa Chúng ta có thể viết thủ tục trong MySQL không?Các thủ tục lưu chứa các tham số IN và OUT hoặc cả hai. Chúng có thể trả về tập kết quả trong trường hợp bạn sử dụng câu lệnh SELECT. Các thủ tục được lưu trữ có thể trả về nhiều bộ kết quả. Bạn có thể tạo một thủ tục bằng cách sử dụng câu lệnh MySQL CREATE PROCEDURE .
Làm thế nào để gọi thủ tục trong MySQL?Chúng ta có thể sử dụng câu lệnh CALL để gọi thủ tục lưu sẵn. Câu lệnh này trả về các giá trị cho người gọi nó thông qua các tham số của nó (IN, OUT hoặc INOUT). Cú pháp sau đây được sử dụng để gọi thủ tục được lưu trữ trong MySQL. GỌI tên thủ tục ((các) tham số)
MySQL có các thủ tục được lưu trữ không?MySQL hỗ trợ các thường trình (thủ tục và chức năng) được lưu trữ . Một thói quen được lưu trữ là một tập hợp các câu lệnh SQL có thể được lưu trữ trong máy chủ. Khi điều này đã được thực hiện, khách hàng không cần tiếp tục phát hành lại các câu lệnh riêng lẻ mà thay vào đó có thể tham khảo quy trình được lưu trữ.
Chúng ta có thể TẠO THỦ TỤC trong SQL không?Lệnh CREATE PROCEDURE dùng để tạo thủ tục lưu sẵn . Một thủ tục được lưu trữ là một mã SQL đã chuẩn bị sẵn mà bạn có thể lưu, vì vậy mã này có thể được sử dụng lại nhiều lần. |