Chức năng MySQL là gì?
Hàm là một khối mã có tổ chức, có thể sử dụng lại được dùng để thực hiện một hành động đơn lẻ có liên quan. Các chức năng cung cấp tính mô-đun tốt hơn cho ứng dụng của bạn và mức độ tái sử dụng mã cao Show
MySQL cung cấp một bộ hàm dựng sẵn thực hiện các tác vụ cụ thể, ví dụ hàm CURDATE() trả về ngày hiện tại Bạn có thể tạo một hàm được lưu trữ bằng cách sử dụng câu lệnh CREATE FUNCTION cú phápSau đây là cú pháp câu lệnh CREATE FUNCTION - CREATE FUNCTION function_Name(input_arguments) RETURNS output_parameter Trong đó, function_name là tên hàm bạn cần tạo, input_arguments là giá trị đầu vào của hàm và output_parameter là giá trị trả về của hàm ví dụ 1Giả sử chúng ta đã tạo một bảng có tên Emp trong cơ sở dữ liệu bằng cách sử dụng câu lệnh CREATE như hình dưới đây - mysql> CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255)); Query OK, 0 rows affected (2.03 sec) Và chúng tôi đã chèn ba bản ghi vào bảng Emp dưới dạng - mysql> INSERT INTO Emp VALUES ('Amit', DATE('1970-01-08'), 'Hyderabad'); mysql> INSERT INTO Emp VALUES ('Sumith', DATE('1990-11-02'), 'Vishakhapatnam'); mysql> INSERT INTO Emp VALUES ('Sudha', DATE('1980-11-06'), 'Vijayawada'); Truy vấn sau tạo một hàm có tên getDob() chấp nhận tên của nhân viên, truy xuất và trả về giá trị của cột DOB mysql> DELIMITER // mysql> CREATE FUNCTION test.getDob(emp_name VARCHAR(50)) RETURNS DATE DETERMINISTIC BEGIN declare dateOfBirth DATE; select DOB into dateOfBirth from test.emp where Name = emp_name; MySQL CREATE FUNCTION Statement return dateOfBirth; END// Query OK, 0 rows affected (0.31 sec) mysql> DELIMITER ; Nếu bạn gọi hàm, bạn có thể nhận được ngày sinh của một nhân viên như hình bên dưới - mysql> SELECT getDob('Amit'); +----------------+ | getDob('Amit') | +----------------+ | 1970-01-08 | +----------------+ 1 row in set (0.15 sec) ví dụ 2Giả sử chúng ta đã tạo một bảng khác như hình bên dưới - CREATE TABLE student (Name VARCHAR(100), Math INT, English INT, Science INT, History INT); INSERT INTO student values('Raman', 95, 89, 85, 81); INSERT INTO student values('Rahul' , 90, 87, 86, 81); INSERT INTO student values('Mohit', 90, 85, 86, 81); INSERT INTO student values('Saurabh', NULL, NULL, NULL, NULL ); Truy vấn sau tạo một hàm có tên tbl_Update − mysql> DELIMITER // Create Function tbl_Update(S_name Varchar(50), M1 INT, M2 INT, M3 INT, M4 INT) RETURNS INT DETERMINISTIC BEGIN UPDATE student SET Math = M1, English = M2, Science = M3, History = M4 WHERE Name = S_name; RETURN 1; END // mysql> DELIMITER ; Bạn có thể gọi hàm đã tạo ở trên như hình bên dưới - mysql> Select tbl_update('Saurabh',85,69,75,82); +-----------------------------------+ | tbl_update('Saurabh',85,69,75,82) | +-----------------------------------+ | 1 | +-----------------------------------+ 1 row in set (0.28 sec) Nếu bạn lấy các bản ghi của bảng student bằng câu lệnh select, bạn có thể quan sát bản ghi đã sửa đổi - Câu lệnh CREATE FUNCTION được sử dụng để tạo một hàm được lưu trữ và các hàm do người dùng định nghĩa. Hàm được lưu trữ là một tập hợp các câu lệnh SQL thực hiện một số thao tác và trả về một giá trị Bản tóm tắt. trong hướng dẫn này, bạn sẽ học cách tạo các hàm được lưu trữ bằng cách sử dụng câu lệnh mysql> DELIMITER // mysql> CREATE FUNCTION test.getDob(emp_name VARCHAR(50)) RETURNS DATE DETERMINISTIC BEGIN declare dateOfBirth DATE; select DOB into dateOfBirth from test.emp where Name = emp_name; MySQL CREATE FUNCTION Statement return dateOfBirth; END// Query OK, 0 rows affected (0.31 sec) mysql> DELIMITER ;3 Hàm được lưu trữ là một chương trình được lưu trữ loại đặc biệt trả về một giá trị duy nhất. Thông thường, bạn sử dụng các hàm được lưu trữ để đóng gói các công thức hoặc quy tắc kinh doanh phổ biến có thể sử dụng lại giữa các câu lệnh SQL hoặc các chương trình được lưu trữ Khác với một thủ tục được lưu trữ, bạn có thể sử dụng một hàm được lưu trữ trong các câu lệnh SQL ở bất cứ nơi nào một biểu thức được sử dụng. Điều này giúp cải thiện khả năng đọc và khả năng bảo trì của mã thủ tục Để tạo một chức năng được lưu trữ, bạn sử dụng câu lệnh mysql> DELIMITER // mysql> CREATE FUNCTION test.getDob(emp_name VARCHAR(50)) RETURNS DATE DETERMINISTIC BEGIN declare dateOfBirth DATE; select DOB into dateOfBirth from test.emp where Name = emp_name; MySQL CREATE FUNCTION Statement return dateOfBirth; END// Query OK, 0 rows affected (0.31 sec) mysql> DELIMITER ;3 Cú pháp MySQL mysql> DELIMITER // mysql> CREATE FUNCTION test.getDob(emp_name VARCHAR(50)) RETURNS DATE DETERMINISTIC BEGIN declare dateOfBirth DATE; select DOB into dateOfBirth from test.emp where Name = emp_name; MySQL CREATE FUNCTION Statement return dateOfBirth; END// Query OK, 0 rows affected (0.31 sec) mysql> DELIMITER ; 3Sau đây minh họa cú pháp cơ bản để tạo một hàm được lưu trữ mới ________số 8Trong cú pháp này Trước tiên, hãy chỉ định tên của hàm được lưu trữ mà bạn muốn tạo sau từ khóa mysql> DELIMITER // mysql> CREATE FUNCTION test.getDob(emp_name VARCHAR(50)) RETURNS DATE DETERMINISTIC BEGIN declare dateOfBirth DATE; select DOB into dateOfBirth from test.emp where Name = emp_name; MySQL CREATE FUNCTION Statement return dateOfBirth; END// Query OK, 0 rows affected (0.31 sec) mysql> DELIMITER ;3 Thứ hai, liệt kê tất cả các tham số của hàm được lưu trữ bên trong dấu ngoặc đơn theo sau là tên hàm. Theo mặc định, tất cả các tham số là tham số 0. Bạn không thể chỉ định công cụ sửa đổi 0 , 2 hoặc 3 cho tham số Thứ ba, chỉ định loại dữ liệu của giá trị trả về trong câu lệnh 4, có thể là bất kỳ loại dữ liệu MySQL hợp lệ nào Thứ tư, chỉ định xem một hàm có xác định hay không bằng cách sử dụng từ khóa 5 Hàm xác định luôn trả về cùng một kết quả cho cùng một tham số đầu vào trong khi hàm không xác định trả về các kết quả khác nhau cho cùng một tham số đầu vào Nếu bạn không sử dụng 5 hoặc 7, MySQL sẽ sử dụng tùy chọn 7 theo mặc định Thứ năm, viết mã trong phần thân của hàm được lưu trữ trong khối 9. Trong phần nội dung, bạn cần chỉ định ít nhất một câu lệnh mysql> CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255)); Query OK, 0 rows affected (2.03 sec)90. Câu lệnh mysql> CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255)); Query OK, 0 rows affected (2.03 sec)90 trả về một giá trị cho các chương trình đang gọi. Bất cứ khi nào đạt đến câu lệnh mysql> CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255)); Query OK, 0 rows affected (2.03 sec)90, việc thực thi chức năng được lưu trữ sẽ bị chấm dứt ngay lập tức Ví dụ về MySQL mysql> DELIMITER // mysql> CREATE FUNCTION test.getDob(emp_name VARCHAR(50)) RETURNS DATE DETERMINISTIC BEGIN declare dateOfBirth DATE; select DOB into dateOfBirth from test.emp where Name = emp_name; MySQL CREATE FUNCTION Statement return dateOfBirth; END// Query OK, 0 rows affected (0.31 sec) mysql> DELIMITER ; 3Hãy lấy ví dụ về việc tạo một chức năng được lưu trữ. Chúng tôi sẽ sử dụng bảng mysql> CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255)); Query OK, 0 rows affected (2.03 sec)94 trong cơ sở dữ liệu mẫu để trình diễn Câu lệnh mysql> DELIMITER // mysql> CREATE FUNCTION test.getDob(emp_name VARCHAR(50)) RETURNS DATE DETERMINISTIC BEGIN declare dateOfBirth DATE; select DOB into dateOfBirth from test.emp where Name = emp_name; MySQL CREATE FUNCTION Statement return dateOfBirth; END// Query OK, 0 rows affected (0.31 sec) mysql> DELIMITER ;3 sau đây tạo một hàm trả về cấp khách hàng dựa trên tín dụng
Sau khi chức năng được tạo, bạn có thể xem nó trong MySQL Workbench trong phần Chức năng Hoặc bạn có thể xem tất cả các chức năng được lưu trữ trong cơ sở dữ liệu mysql> CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255)); Query OK, 0 rows affected (2.03 sec)96 hiện tại bằng cách sử dụng mysql> CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255)); Query OK, 0 rows affected (2.03 sec)97 như sau mysql> CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255)); Query OK, 0 rows affected (2.03 sec)9 Gọi hàm được lưu trữ trong câu lệnh SQLCâu lệnh sau sử dụng hàm được lưu trữ mysql> CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255)); Query OK, 0 rows affected (2.03 sec)98 mysql> INSERT INTO Emp VALUES ('Amit', DATE('1970-01-08'), 'Hyderabad'); mysql> INSERT INTO Emp VALUES ('Sumith', DATE('1990-11-02'), 'Vishakhapatnam'); mysql> INSERT INTO Emp VALUES ('Sudha', DATE('1980-11-06'), 'Vijayawada');8 Gọi một hàm được lưu trữ trong một thủ tục được lưu trữCâu lệnh sau đây tạo một thủ tục được lưu trữ mới gọi hàm được lưu trữ mysql> CREATE TABLE Emp(Name VARCHAR(255), DOB DATE, Location VARCHAR(255)); Query OK, 0 rows affected (2.03 sec)99 mysql> DELIMITER // mysql> CREATE FUNCTION test.getDob(emp_name VARCHAR(50)) RETURNS DATE DETERMINISTIC BEGIN declare dateOfBirth DATE; select DOB into dateOfBirth from test.emp where Name = emp_name; MySQL CREATE FUNCTION Statement return dateOfBirth; END// Query OK, 0 rows affected (0.31 sec) mysql> DELIMITER ;0 Phần sau đây minh họa cách gọi thủ tục được lưu trữ mysql> INSERT INTO Emp VALUES ('Amit', DATE('1970-01-08'), 'Hyderabad'); mysql> INSERT INTO Emp VALUES ('Sumith', DATE('1990-11-02'), 'Vishakhapatnam'); mysql> INSERT INTO Emp VALUES ('Sudha', DATE('1980-11-06'), 'Vijayawada');80 mysql> DELIMITER // mysql> CREATE FUNCTION test.getDob(emp_name VARCHAR(50)) RETURNS DATE DETERMINISTIC BEGIN declare dateOfBirth DATE; select DOB into dateOfBirth from test.emp where Name = emp_name; MySQL CREATE FUNCTION Statement return dateOfBirth; END// Query OK, 0 rows affected (0.31 sec) mysql> DELIMITER ;2 Điều quan trọng cần lưu ý là nếu một hàm được lưu trữ chứa các câu lệnh SQL truy vấn dữ liệu từ các bảng, thì bạn không nên sử dụng nó trong các câu lệnh SQL khác; Trong hướng dẫn này, bạn đã học cách tạo một hàm được lưu trữ để đóng gói công thức chung hoặc quy tắc kinh doanh Tại sao các chức năng được sử dụng trong MySQL?Chức năng cho phép chúng tôi nâng cao khả năng của MySQL . Các hàm luôn trả về một giá trị và có thể tùy chọn chấp nhận các tham số. Các chức năng tích hợp là các chức năng được cung cấp cùng với MySQL. Chúng có thể được phân loại theo các loại dữ liệu mà chúng hoạt động trên i. e. chuỗi, ngày và số được xây dựng trong chức năng.
Các chức năng khác nhau trong MySQL là gì?Các chức năng nâng cao của MySQL Hai loại chức năng trong MySQL là gì?Trong MySQL, chúng ta có các loại hàm khác nhau. Hàm chuỗi . hàm số.
Chúng ta có thể tạo các chức năng trong MySQL không?Câu lệnh CREATE FUNCTION cũng được sử dụng trong MySQL để hỗ trợ các hàm có thể tải . Xem Phần 13. 7. 4. 1, “CREATE FUNCTION Statement for Loadable Functions”. Một chức năng có thể tải có thể được coi là một chức năng được lưu trữ bên ngoài. |