Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tạo và thực thi các hàm và thủ tục được lưu trữ trong MySQL

Bài viết này mô tả cách tạo và thực thi các hàm và thủ tục được lưu trữ MySQL trên tài khoản A2 Hosting 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 trường hợp. 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.

Các hàm được lưu trữ

Các hàm được lưu trữ trong 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

Để chứng minh một ví dụ cơ bản về các hàm được lưu trữ, hãy bắt đầu bằng cách tạo cơ sở dữ liệu mà chúng ta 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 với tên người dùng tài khoản của bạn:

CREATE DATABASE username_test;
Bạn có thể chạy lệnh SQL trước (và các lệnh SQL sau) từ dòng lệnh bằng công cụ MySQL hoặc trong trình duyệt web của bạn bằng phpMyAdmin.

Nếu bạn đang sử dụng phpMyAdmin, hãy nhấp vào tên tên người dùng _test để chọn cơ sở dữ liệu. Ngược lại, 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 tên người dùng _test cơ sở dữ liệu có tên 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 thêm một số dữ liệu mẫu vào sản phẩm bảng:

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 hàm đượ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ủa một thứ gì đó. Nó tính toán lợi nhuận bằng cách trừ chi phí khỏi giá, sau đó trả về giá trị cho biểu thức gọi.

Để tạo hàm đượ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 ;
DELIMITER lệnh ở đầu các câu lệnh này ngăn MySQL xử lý định nghĩa hàm quá sớm. DELIMITER lệnh ở cuối các câu lệnh này trả lại quá trình xử lý về 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 một truy vấn cơ sở dữ liệu. Câu lệnh SQL sau trình bày 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, calcProfit chức năng tự động tính toán lợi nhuận (giá trừ chi phí) cho từng sản phẩm trong bảng.

Các thủ tục được lưu trữ

Các thủ tục được lưu trữ đôi khi bị nhầm lẫn với các hàm được lưu trữ, nhưng chúng khác nhau theo một số cách quan trọng. Ví dụ:các thủ tục đã lưu trữ phải được gọi bằng CALL câu lệnh, 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 đượ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 được lưu trữ rất cơ bản có tên là procedureTest . Quy trình này thực hiện tra cứu đơn giản về sản phẩm bảng 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 cú pháp và cấu trúc chính xác để khai báo một thủ tục được lưu trữ:

DELIMITER $$
CREATE PROCEDURE procedureTest()
BEGIN
  SELECT prod_name FROM products;
END$$
DELIMITER ;

Để thực hiện thủ tục đã lưu trữ, hãy sử dụng câu lệnh MySQL sau:

CALL procedureTest() \G
Nếu bạn đang sử dụng phpMyAdmin, hãy nhập câu lệnh MySQL trước đó mà không có \ G tùy chọn ở cuối.

Thông tin khác

Để biết thêm thông tin về các thủ tục và hàm được lưu trữ trong MySQL, vui lòng truy cập http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tính phần trăm tăng trưởng hàng tuần trong MySQL

  2. Làm cách nào để có được danh sách các khung nhìn MySQL?

  3. Kiến thức cơ bản về điều chỉnh MySQL trên máy chủ chuyên dụng

  4. Chọn hàng có ngày gần đây nhất cho mỗi người dùng

  5. MYSQL Chọn MAX Ngày bên trong một câu lệnh kết hợp