Thủ tục được lưu trữ trong MySQL là gì?

Trong phần này, bạn sẽ học cách phát triển các chương trình được lưu trữ bao gồm các thủ tục được lưu trữ và các hàm được lưu trữ trong MySQL

Phần 1. Khái niệm cơ bản về thủ tục lưu trữ

  • Giới thiệu về Thủ tục được lưu trữ trong MySQL  – giới thiệu cho bạn về các thủ tục được lưu trữ, ưu điểm và nhược điểm của chúng
  • Thay đổi dấu phân cách mặc định – tìm hiểu cách thay đổi dấu phân cách mặc định trong MySQL
  • Tạo thủ tục lưu trữ mới – chỉ cho bạn cách tạo, sử dụng câu lệnh CREATE PROCEDURE để tạo thủ tục lưu trữ mới trong cơ sở dữ liệu
  • Xóa thủ tục lưu sẵn – chỉ cho bạn cách sử dụng câu lệnh DROP PROCEDURE để loại bỏ thủ tục lưu trữ hiện có
  • Biến – hướng dẫn bạn cách sử dụng biến để giữ kết quả ngay lập tức bên trong thủ tục lưu trữ
  • Tham số – giới thiệu cho bạn các loại tham số khác nhau được sử dụng trong các thủ tục được lưu trữ bao gồm tham số IN, OUTINOUT
  • Thay đổi quy trình được lưu trữ – chỉ cho bạn từng bước cách thay đổi quy trình được lưu trữ bằng cách sử dụng chuỗi các câu lệnh DROP PROCEDURECREATE PROCEDURE trong MySQL Workbench
  • Liệt kê các thủ tục được lưu trữ – cung cấp cho bạn một số lệnh hữu ích để liệt kê các thủ tục được lưu trữ từ cơ sở dữ liệu

Phần 2. Câu điều kiện

  • Câu lệnh IF – chỉ cho bạn cách sử dụng câu lệnh IF THEN trong thủ tục lưu sẵn
  • Câu lệnh CASE – giới thiệu cho bạn câu lệnh CASE bao gồm câu lệnh CASE đơn giản và câu lệnh CASE được tìm kiếm

Phần 3. vòng lặp

  • LOOP – tìm hiểu cách thực hiện lặp đi lặp lại một danh sách các câu lệnh dựa trên một điều kiện
  • Vòng lặp WHILE – chỉ cho bạn cách thực hiện một vòng lặp miễn là một điều kiện là đúng
  • REPEAT Loop – chỉ cho bạn cách thực hiện một vòng lặp cho đến khi điều kiện tìm kiếm là đúng
  • Câu lệnh LEAVE – hướng dẫn bạn cách thoát khỏi vòng lặp ngay lập tức

phần 4. Xử lý lỗi

  • Xử lý ngoại lệ – chỉ cho bạn cách xử lý ngoại lệ và lỗi trong các thủ tục được lưu trữ
  • Nêu lỗi  – tìm hiểu cách sử dụng DROP PROCEDURE1 và DROP PROCEDURE2 để nêu lỗi trong các thủ tục được lưu trữ

Phần 5. con trỏ

  • Con trỏ – tìm hiểu cách sử dụng con trỏ để xử lý từng hàng trong tập kết quả

Phần 6. Chức năng được lưu trữ

  • Tạo một chức năng được lưu trữ – chỉ cho bạn cách sử dụng các chức năng được lưu trữ trong cơ sở dữ liệu
  • Xóa chức năng được lưu trữ – sử dụng câu lệnh DROP PROCEDURE3 để xóa chức năng được lưu trữ
  • Liệt kê các hàm được lưu trữ – tìm hiểu cách liệt kê tất cả các hàm được lưu trữ trong cơ sở dữ liệu bằng cách sử dụng DROP PROCEDURE4 hoặc truy vấn từ từ điển dữ liệu

Phần 7. Bảo mật chương trình được lưu trữ

  • Kiểm soát truy cập đối tượng được lưu trữ – tìm hiểu cách kiểm soát tính bảo mật của đối tượng được lưu trữ

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về các thủ tục được lưu trữ trong MySQL, ưu điểm và nhược điểm của chúng

Bắt đầu với các thủ tục được lưu trữ

Câu lệnh SELECT sau đây trả về tất cả các hàng trong bảng customers từ cơ sở dữ liệu mẫu

SELECT customerName, city, state, postalCode, country FROM customers ORDER BY customerName;

Code language: SQL (Structured Query Language) (sql)

Ảnh này hiển thị một phần đầu ra của truy vấn

Thủ tục được lưu trữ trong MySQL là gì?
Thủ tục được lưu trữ trong MySQL là gì?

Khi bạn sử dụng MySQL Workbench hoặc mysql shell để đưa ra truy vấn tới MySQL Server, MySQL sẽ xử lý truy vấn và trả về tập kết quả

Nếu bạn muốn lưu truy vấn này trên máy chủ cơ sở dữ liệu để thực hiện sau này, một cách để thực hiện là sử dụng thủ tục lưu sẵn

Câu lệnh CREATE PROCEDURE sau đây tạo một thủ tục được lưu trữ mới kết thúc truy vấn ở trên

DELIMITER $$ CREATE PROCEDURE GetCustomers() BEGIN SELECT customerName, city, state, postalCode, country FROM customers ORDER BY customerName; END$$ DELIMITER ;

Code language: SQL (Structured Query Language) (sql)

Theo định nghĩa, thủ tục lưu sẵn là một đoạn câu lệnh SQL khai báo được lưu trữ bên trong Máy chủ MySQL. Trong ví dụ này, chúng ta vừa tạo một thủ tục lưu trữ có tên GetCustomers()

Khi bạn lưu thủ tục được lưu trữ, bạn có thể gọi nó bằng cách sử dụng câu lệnh CALL

CALL GetCustomers();

Code language: SQL (Structured Query Language) (sql)

Và câu lệnh trả về kết quả tương tự như truy vấn

Lần đầu tiên bạn gọi một thủ tục được lưu trữ, MySQL sẽ tìm kiếm tên trong danh mục cơ sở dữ liệu, biên dịch mã của thủ tục được lưu trữ, đặt nó vào vùng bộ nhớ được gọi là bộ đệm và thực thi thủ tục được lưu trữ

Nếu bạn gọi lại cùng một thủ tục được lưu trữ trong cùng một phiên, MySQL chỉ thực thi thủ tục được lưu trữ từ bộ đệm mà không phải biên dịch lại nó

Một thủ tục được lưu trữ có thể có các tham số để bạn có thể chuyển các giá trị cho nó và nhận lại kết quả. Ví dụ: bạn có thể có một thủ tục được lưu trữ trả về khách hàng theo quốc gia và thành phố. Trong trường hợp này, quốc gia và thành phố là các tham số của thủ tục được lưu trữ

Một thủ tục được lưu trữ có thể chứa các câu lệnh luồng điều khiển như IF, CASE

DELIMITER $$ CREATE PROCEDURE GetCustomers() BEGIN SELECT customerName, city, state, postalCode, country FROM customers ORDER BY customerName; END$$ DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
0 cho phép bạn triển khai mã theo cách thủ tục

Một thủ tục được lưu trữ có thể gọi các thủ tục được lưu trữ khác hoặc các hàm được lưu trữ, cho phép bạn điều chỉnh mã của mình

Lưu ý rằng bạn sẽ học từng bước cách tạo thủ tục lưu sẵn mới trong hướng dẫn tiếp theo

Ưu điểm của thủ tục lưu trữ MySQL

Sau đây là những ưu điểm của thủ tục lưu trữ

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ởi vì thay vì gửi nhiều câu lệnh SQL dài, các ứng dụng chỉ phải gửi tên và tham số của các thủ tục được lưu trữ

Tập trung logic kinh doanh trong cơ sở dữ liệu

Bạn có thể sử dụng các thủ tục được lưu trữ để triển khai logic nghiệp vụ mà nhiều ứng dụng có thể sử dụng lại. Các thủ tục được lưu trữ giúp giảm nỗ lực sao chép cùng một logic trong nhiều ứng dụng và làm cho cơ sở dữ liệu của bạn nhất quán hơn

Làm cho cơ sở dữ liệu an toàn hơn

Quản trị viên cơ sở dữ liệu có thể cấp các đặc quyền phù hợp cho các ứng dụng chỉ truy cập các thủ tục được lưu trữ cụ thể mà không cấp bất kỳ đặc quyền nào trên các bảng bên dưới

Nhược điểm của thủ tục lưu trữ MySQL

Bên cạnh những ưu điểm đó, thủ tục lưu sẵn cũng có những nhược điểm

Sử dụng tài nguyên

Nếu bạn sử dụng nhiều thủ tục được lưu trữ, mức sử dụng bộ nhớ của mọi kết nối sẽ tăng lên đáng kể

Bên cạnh đó, việc lạm dụng một số lượng lớn các thao tác logic trong các thủ tục được lưu trữ sẽ làm tăng mức sử dụng CPU vì MySQL không được thiết kế tốt cho các thao tác logic

Xử lý sự cố

Thật khó để gỡ lỗi các thủ tục được lưu trữ. Thật không may, MySQL không cung cấp bất kỳ phương tiện nào để gỡ lỗi các thủ tục được lưu trữ giống như các sản phẩm cơ sở dữ liệu doanh nghiệp khác như Oracle và SQL Server

bảo trì

Việc phát triển và duy trì các thủ tục được lưu trữ thường yêu cầu một bộ kỹ năng chuyên biệt mà không phải nhà phát triển ứng dụng nào cũng sở hữu. Điều này có thể dẫn đến các vấn đề trong cả phát triển và bảo trì ứng dụng

Trong hướng dẫn này, bạn đã tìm hiểu về các thủ tục được lưu trữ trong MySQL, ưu điểm và nhược điểm của chúng. Hãy tiếp tục tìm hiểu cách tạo thủ tục lưu trữ mới trong MySQL

Việc sử dụng các thủ tục được lưu trữ là gì?

Việc sử dụng các thủ tục được lưu trữ có thể giảm lưu lượng truy cập mạng giữa máy khách và máy chủ , bởi vì các lệnh được thực thi dưới dạng một nhóm mã duy nhất. Điều này có nghĩa là chỉ lệnh gọi để thực thi quy trình được gửi qua mạng, thay vì từng dòng mã được gửi riêng lẻ.

Thủ tục được lưu trữ ở đâu trong MySQL?

Các thủ tục lưu trữ được lưu trữ ở đâu? . mysql. quy trình và mysql. bảng tham số , là một phần của từ điển dữ liệu.

Thủ tục MySQL là gì?

Một thủ tục là một chương trình con (như chương trình con) bằng ngôn ngữ kịch bản thông thường, được lưu trữ trong cơ sở dữ liệu . Trong trường hợp của MySQL, các thủ tục được viết bằng MySQL và được lưu trữ trong cơ sở dữ liệu/máy chủ MySQL. Một thủ tục MySQL có tên, danh sách tham số và (các) câu lệnh SQL.

Sự khác biệt giữa thủ tục được lưu trữ và chức năng trong MySQL là gì?

Một thủ tục không trả về một giá trị. Thay vào đó, nó được gọi bằng câu lệnh CALL để thực hiện một thao tác như sửa đổi bảng hoặc xử lý các bản ghi đã truy xuất. Mặt khác, một hàm được gọi trong một biểu thức và trả về một giá trị duy nhất trực tiếp cho người gọi sẽ được sử dụng trong biểu thức