Bạn có thể tạo các hàm trong MySQL không?
Bài viết này mô tả cách tạo và thực thi các chức năng và quy trình được lưu trữ của MySQL trên tài khoản Dịch vụ lưu trữ A2 của bạn. Bạn có thể sử dụng các hàm và thủ tục được lưu trữ cho nhiều tình huống khác nhau. Ví dụ: các chức năng và thủ tục được lưu trữ được thiết kế tốt có thể tăng cường bảo mật cơ sở dữ liệu, cải thiện tính toàn vẹn của dữ liệu và tăng hiệu suất Show chức năng lưu trữCác chức năng được lưu trữ của MySQL cung cấp một cách mạnh mẽ và linh hoạt để thao tác và xử lý dữ liệu. Bạn có thể xác định và chạy các chức năng được lưu trữ trên bất kỳ máy chủ A2 Hosting nào sử dụng MySQL Thiết lập cơ sở dữ liệu thử nghiệmĐể minh họa một ví dụ cơ bản về các chức năng được lưu trữ, hãy bắt đầu bằng cách tạo cơ sở dữ liệu mà chúng tôi có thể sử dụng cho mục đích thử nghiệm. Trong câu lệnh SQL sau, hãy thay thế tên người dùng bằng tên người dùng tài khoản của bạn CREATE DATABASE username_test; Nếu bạn đang sử dụng phpMyAdmin, hãy nhấp vào tên username_test để chọn cơ sở dữ liệu. Mặt khác, nếu bạn đang sử dụng chương trình dòng lệnh mysql, hãy nhập câu lệnh SQL sau USE username_test; Tiếp theo, tạo một bảng trong cơ sở dữ liệu username_test có tên là sản phẩm. Để thực hiện việc này, hãy chạy câu lệnh SQL sau CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id)); Câu lệnh SQL sau đây thêm một số dữ liệu mẫu vào bảng sản phẩm INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00); Tạo chức năng được lưu trữBây giờ chúng ta đã có một cơ sở dữ liệu và một bảng để làm việc, chúng ta đã sẵn sàng để tạo một hàm được lưu trữ. Hãy tạo một hàm có tên calcProfit. Hàm này nhận hai tham số đầu vào. chi phí và giá cả của một cái gì đó. Nó tính toán lợi nhuận bằng cách lấy giá trừ đi chi phí, rồi trả về giá trị cho biểu thức gọi Để tạo chức năng được lưu trữ này, hãy chạy các câu lệnh MySQL sau DELIMITER $$ CREATE FUNCTION calcProfit(cost FLOAT, price FLOAT) RETURNS DECIMAL(9,2) BEGIN DECLARE profit DECIMAL(9,2); SET profit = price-cost; RETURN profit; END$$ DELIMITER ; Lệnh DELIMITER ở đầu các câu lệnh này ngăn MySQL xử lý định nghĩa hàm quá sớm. Lệnh DELIMITER ở cuối các câu lệnh này sẽ đưa quá trình xử lý trở lại bình thường Sử dụng chức năng được lưu trữBây giờ bạn có thể thực thi chức năng được lưu trữ trong truy vấn cơ sở dữ liệu. Câu lệnh SQL sau minh họa cách thực hiện việc này SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products; Câu lệnh SQL này trả về các kết quả sau +---------+--------------+-----------+------------+--------+ | prod_id | prod_name | prod_cost | prod_price | profit | +---------+--------------+-----------+------------+--------+ | 1 | Basic Widget | 5.95 | 8.35 | 2.40 | | 2 | Micro Widget | 0.95 | 1.35 | 0.40 | | 3 | Mega Widget | 99.95 | 140 | 40.05 | +---------+--------------+-----------+------------+--------+ Như bạn có thể thấy, hàm calcProfit tự động tính lợi nhuận (giá trừ chi phí) cho mỗi sản phẩm trong bảng thủ tục lưu trữCác thủ tục được lưu trữ đôi khi bị nhầm lẫn với các chức năng được lưu trữ, nhưng chúng khác nhau ở một số điểm quan trọng. Ví dụ, các thủ tục được lưu trữ phải được gọi bằng câu lệnh CALL, trong khi các hàm được lưu trữ có thể được sử dụng trực tiếp trong các biểu thức SQL. Bạn có thể xác định và chạy các thủ tục lưu trữ trên bất kỳ máy chủ A2 Hosting nào sử dụng MySQL Các câu lệnh MySQL sau đây trình bày cách tạo một thủ tục lưu trữ rất cơ bản có tên là thủ tụcTest. Quy trình này thực hiện một tra cứu đơn giản trên bảng sản phẩm mà chúng tôi đã sử dụng trong ví dụ về hàm được lưu trữ ở trên. Mặc dù thủ tục này không được sử dụng nhiều trong thực tế, nhưng nó thể hiện đúng cú pháp và cấu trúc để khai báo thủ tục lưu sẵn DELIMITER $$ CREATE PROCEDURE procedureTest() BEGIN SELECT prod_name FROM products; END$$ DELIMITER ; Để thực thi thủ tục được lưu trữ, hãy sử dụng câu lệnh MySQL sau ________số 8Nếu bạn đang sử dụng phpMyAdmin, hãy nhập câu lệnh MySQL trước đó mà không có tùy chọn \G ở cuối Thêm thông tinĐể biết thêm thông tin về các thủ tục và chức năng được lưu trữ trong MySQL, vui lòng truy cập http. // nhà phát triển. mysql. com/doc/refman/5. 0/vi/tạo thủ tục. html Bạn đã tạo một hàm có tên là hello nhận một tham số. Tham số bị bỏ qua và trả về một SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;6 chứa giá trị 'foobar'. Bạn đã tạo một bảng tên là yar và thêm ba hàng vào đó. Câu lệnh select chạy hàm SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;7 cho mỗi hàng được trả về theo năm Trong lập trình, hàm là một phần của quy trình nghiệp vụ hoặc phép tính được gói gọn dưới tên hàm Khi bạn cần chạy một quy trình hoặc tính toán, bạn có thể thực hiện điều đó bằng cách chỉ cần gọi tên hàm Đây là một hàm ví dụ trong JavaScript
Trong MySQL, bạn có thể tạo một hàm được lưu trữ bằng cách sử dụng cú pháp USE username_test;00 Cú pháp cơ bản để tạo một hàm trong MySQL như sau USE username_test;0 Trước tiên, bạn cần chỉ định tên của hàm trong USE username_test;01 Tiếp theo, bạn cần khai báo các tham số cần nhận cho hàm Bạn có thể khai báo bao nhiêu tham số tùy thích, nhưng tốt nhất là một hàm nên có từ 0 đến 5 tham số. Quá nhiều tham số có thể làm bạn bối rối khi bảo trì chương trình sau này Khi bạn có các tham số, hãy chỉ định loại dữ liệu được trả về bởi hàm bằng cách sử dụng từ khóa USE username_test;02 Bạn cũng cần chỉ định hàm là USE username_test;03 hay USE username_test;04 bên cạnh từ khóa USE username_test;02 USE username_test;03 có nghĩa là hàm sẽ luôn trả về cùng một đầu ra cho cùng một đầu vào, cho phép MySQL tối ưu hóa việc thực thi hàm Khi bạn không chắc chắn, chỉ cần chỉ định USE username_test;03 vì đó là mặc định mà MySQL sẽ sử dụng cho các chức năng Cuối cùng, bạn cần chỉ định USE username_test;08 được hàm trả về bằng cách sử dụng từ khóa USE username_test;09 Đây là một hàm MySQL tương tự như hàm JavaScript ở trên CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));1 Khi bạn chạy câu lệnh trên, bạn có thể truy vấn hàm bằng câu lệnh CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));10 như sau CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));3 Tên hàm MySQL là duy nhất, có nghĩa là bạn chỉ có thể có một hàm với một tên nhất định Chạy cú pháp USE username_test;00 hai lần sẽ gây ra CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));12 ngay cả khi cùng một chức năng có các tham số khác nhau CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));6 CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));7 Để sửa đổi một hàm hiện có, trước tiên bạn cần bỏ hàm đó bằng cú pháp CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));13, sau đó chạy lại cú pháp USE username_test;00 INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);0 Tạo một hàm MySQL với nhiều câu lệnhTheo mặc định, một hàm MySQL chỉ có thể thực thi một câu lệnh USE username_test;09 trong phần thân của nó Khi bạn cần chạy một quy trình phức tạp với nhiều câu lệnh SQL, thì bạn cần thêm mệnh đề CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));16 và câu lệnh ghép CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));17 vào cú pháp USE username_test;00 của mình Đây là một ví dụ về một hàm có nhiều câu lệnh INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);5 Hàm CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));19 ở trên tính toán một CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));30 tùy ý và trả về một CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));31 khác dựa trên giá trị CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));30 Khi giá trị là CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));33 hoặc thấp hơn, thì CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));31 sẽ là CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));35. Nếu không, nó sẽ là CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));36 Vì hàm có nhiều câu lệnh nên dấu phân cách được thay đổi từ dấu chấm phẩy mặc định CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));37 thành dấu gạch chéo kép CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));38 bằng cách sử dụng từ khóa CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));16 Điều này cho phép bạn viết toàn bộ các câu lệnh CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));60, CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));61 và USE username_test;09 ở trên bên trong câu lệnh CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));17 Nếu không có câu lệnh CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));16 thì MySQL sẽ diễn giải lần lượt từng câu lệnh trên, gây ra lỗi Đây là kết quả khi bạn thử truy vấn hàm bằng câu lệnh CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));10 như sau SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;3 SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;4 Và đó là cách bạn có thể tạo một chức năng trong máy chủ cơ sở dữ liệu MySQL Bằng cách lưu trữ một phần quy trình hoặc phép tính bên trong một hàm, bạn có thể thực hiện cùng một quy trình bao nhiêu lần tùy ý bằng cách gọi hàm như được hiển thị trong câu lệnh CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));10 ở trên Làm cách nào để thêm chức năng trong MySQL?Có ba cách để thêm chức năng mới vào MySQL. . Tạo một chức năng được lưu trữ (một loại đối tượng được lưu trữ). Một hàm được lưu trữ được viết bằng cách sử dụng các câu lệnh SQL thay vì biên dịch mã đối tượng. . Tạo một hàm MySQL gốc (tích hợp sẵn). . Sử dụng giao diện chức năng có thể tải Có chức năng nào trong MySQL không?MySQL có nhiều chức năng tích hợp sẵn . Tài liệu tham khảo này chứa chuỗi, số, ngày và một số chức năng nâng cao trong MySQL.
Làm cách nào để chạy một chức năng trong MySQL?CHỨC NĂNG TẠO isodd(input_number int) RETURNS int BEGIN DECLARE v_isodd INT; . From the MySQL command line, we can invoke our simple stored function in a number of ways.
Làm cách nào để tạo một chức năng được lưu trữ trong MySQL?Một hàm được lưu trữ trong MySQL là một tập hợp các câu lệnh SQL thực hiện một số tác vụ/thao tác và trả về một giá trị duy nhất. . PHÂN BIỆT $$ TẠO CHỨC NĂNG fun_name(fun_parameter(s)) RETURNS kiểu dữ liệu [KHÔNG] {Đặc điểm} niềm_vui; |