Chức năng là gì?

MySQL có thể làm nhiều hơn là chỉ lưu trữ và lấy dữ liệu . Chúng tôi cũng có thể thực hiện các thao tác trên dữ liệu trước khi lấy hoặc lưu nó. Đó là nơi các Hàm MySQL xuất hiện. Các hàm chỉ đơn giản là các đoạn mã thực hiện một số thao tác và sau đó trả về một kết quả. Một số chức năng chấp nhận tham số trong khi các chức năng khác không chấp nhận tham số.
 Hãy xem xét ngắn gọn một ví dụ về chức năng MySQL. Theo mặc định, MySQL lưu các loại dữ liệu ngày theo định dạng "YYYY-MM-DD". Giả sử chúng tôi đã xây dựng một ứng dụng và người dùng của chúng tôi muốn ngày được trả về ở định dạng "DD-MM-YYYY", chúng tôi có thể sử dụng MySQL được xây dựng trong chức năng DATE_FORMAT để đạt được điều này. DATE_FORMAT là một trong những chức năng được sử dụng nhiều nhất trong MySQL. Chúng tôi sẽ xem xét nó chi tiết hơn khi chúng tôi mở ra bài học. 

Tại sao phải sử dụng chức năng?

Hàm MySQL: Chuỗi, Số, Người dùng xác định, Được lưu trữ
Dựa trên ví dụ được đưa ra trong phần giới thiệu, những người có kinh nghiệm về lập trình máy tính có thể đang nghĩ "Tại sao phải làm phiền các chức năng của MySQL? Hiệu ứng tương tự có thể đạt được với ngôn ngữ lập trình / lập trình?"  Đúng là chúng ta có thể đạt được điều đó bằng cách viết một số thủ tục / chức năng trong chương trình ứng dụng.
Quay trở lại ví dụ DATE của chúng tôi trong phần giới thiệu, để người dùng của chúng tôi nhận được dữ liệu ở định dạng mong muốn, lớp doanh nghiệp sẽ phải xử lý cần thiết.
Điều này trở thành một vấn đề khi ứng dụng phải tích hợp với các hệ thống khác. Khi chúng tôi sử dụng các chức năng của MySQL như DATE_FORMAT, thì chúng tôi có thể có chức năng đó được nhúng vào cơ sở dữ liệu và bất kỳ ứng dụng nào cần dữ liệu sẽ nhận được định dạng theo yêu cầu. Điều này làm giảm hoạt động lại trong logic kinh doanh và giảm sự không nhất quán dữ liệu.
Một lý do khác tại sao chúng ta nên xem xét sử dụng các chức năng của MySQL là thực tế là nó có thể giúp giảm lưu lượng mạng trong các ứng dụng máy khách / máy chủ . Lớp nghiệp vụ sẽ chỉ cần thực hiện cuộc gọi đến các chức năng được lưu trữ mà không cần thao tác dữ liệu. Trung bình, việc sử dụng các chức năng có thể giúp cải thiện đáng kể hiệu năng hệ thống tổng thể.

Các loại chức năng

Chức năng tích hợp sẵn
MySQL đi kèm với một số chức năng được xây dựng. Các hàm được xây dựng đơn giản là các hàm đã được triển khai trong máy chủ MySQL. Các chức năng này cho phép chúng tôi thực hiện các loại thao tác khác nhau trên dữ liệu. Các hàm tích hợp có thể được phân loại thành các loại được sử dụng nhiều nhất sau đây.
  • Hàm chuỗi - hoạt động trên các kiểu dữ liệu chuỗi
  • Hàm số - hoạt động trên các loại dữ liệu số
  • Hàm ngày - hoạt động theo kiểu dữ liệu ngày
  • Hàm tổng hợp - hoạt động trên tất cả các loại dữ liệu trên và tạo ra các tập kết quả tóm tắt.
  • Các chức năng khác - MySQL cũng hỗ trợ các loại chức năng tích hợp khác nhưng chúng tôi sẽ chỉ giới hạn bài học của chúng tôi cho các chức năng được đặt tên ở trên.

Bây giờ chúng ta hãy xem xét từng chức năng được đề cập ở trên một cách chi tiết. Chúng tôi sẽ giải thích các chức năng được sử dụng nhiều nhất bằng cách sử dụng "Myflixdb" của chúng tôi.

Hàm chuỗi

Chúng tôi đã xem xét các chức năng chuỗi làm gì. Chúng tôi sẽ xem xét một ví dụ thực tế sử dụng chúng. Trong bảng phim của chúng tôi, các tiêu đề phim được lưu trữ bằng cách sử dụng kết hợp các chữ cái viết thường và in thường. Giả sử chúng tôi muốn nhận danh sách truy vấn trả về tên phim bằng chữ in hoa. Chúng ta có thể sử dụng chức năng "UCASE" để làm điều đó. Nó lấy một chuỗi làm tham số và chuyển đổi tất cả các chữ cái thành chữ hoa. Kịch bản hiển thị bên dưới minh họa việc sử dụng chức năng "UCASE".
SELECT `movie_id`,`title`, UCASE(`title`)  FROM `movies`;
ĐÂY
  • UCASE (`title`) là hàm dựng sẵn lấy tiêu đề làm tham số và trả về nó bằng chữ in hoa với tên bí danh` Upper_case_title`.
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với Myflixdb cho chúng ta các kết quả sau được hiển thị bên dưới.
phim_idchức vụUCASE ('tiêu đề')
1667% có tộiBẢO HÀNH 67%
6Thiên thần và ác quỷTHIÊN THẦN VÀ ÁC QUỶ
4Tên mã màu đenMÃ TÊN ĐEN
5Cô bé của bốGIRLS CỦA DADDY
7Mật mã Da VinciMẬT MÃ DA VINCI
2Quên Sarah MarshalLẬP TỨC SARAH MARSHAL
9Mật ong mặt trăngMẬT ONG
19phim 3PHIM 3
1Cướp biển Caribean 4TUYỆT VỜI CỦA CHÂU ÂU 4
18phim mẫuPHIM MẪU
17Nhà độc tài vĩ đạiNHÀ ĐỘC TÀI VĨ ĐẠI
3X MenX MEN
MySQL hỗ trợ một số hàm chuỗi. Để có danh sách đầy đủ tất cả các hàm chuỗi tích hợp, hãy tham khảo liên kết này http://dev.mysql.com/doc/refman/5.0/en/opes-fifts.html trên trang web MySQL.

Hàm số

Như đã đề cập trước đó, các hàm này hoạt động trên các loại dữ liệu số. Chúng ta có thể thực hiện các tính toán toán học trên dữ liệu số trong các câu lệnh SQL.
Toán tử số học
MySQL hỗ trợ các toán tử arithmatic sau có thể được sử dụng để thực hiện tính toán trong các câu lệnh SQL.
Tên
Sự miêu tả
DIV
Chia lấy phần nguyên
/
Phép chia
-
Phép trừ
+
Phép cộng
*
Phép nhân
% hoặc MOD
Mô-đun

Bây giờ chúng ta hãy xem các ví dụ về từng toán tử trên
Chia lấy phần nguyên (DIV)
SELECT 23 DIV 6 ;
Thực hiện đoạn script trên cho chúng ta kết quả như sau.
3
Phép chia (/)
Bây giờ chúng ta hãy xem ví dụ về toán tử chia. Chúng tôi sẽ sửa đổi ví dụ DIV.
SELECT 23/6;
Thực hiện đoạn script trên cho chúng ta kết quả như sau.
3,8333
Toán tử trừ (-)
Bây giờ chúng ta hãy xem ví dụ toán tử trừ. Chúng tôi sẽ sử dụng các giá trị giống như trong hai ví dụ trước
SELECT 23 - 6;
Thực hiện đoạn script trên cho chúng ta 17

Toán tử cộng (+)
Bây giờ chúng ta hãy xem ví dụ toán tử bổ sung. Chúng tôi sẽ sửa đổi ví dụ trước.
SELECT 23 + 6;
Thực hiện đoạn script trên cho chúng ta 29

Toán tử nhân (*)
Bây giờ chúng ta hãy xem xét ví dụ toán tử nhân. Chúng tôi sẽ sử dụng các giá trị tương tự như trong các ví dụ trước.
SELECT 23 * 6 AS `multiplication_result`;
Thực hiện đoạn script trên cho chúng ta kết quả như sau.

multiplication_result
138 
Toán tử modulo (-)
Toán tử modulo chia N cho M và cho chúng ta lời nhắc. Bây giờ chúng ta hãy xem ví dụ về toán tử modulo. Chúng tôi sẽ sử dụng các giá trị tương tự như trong các ví dụ trước.
SELECT 23% 6; 
HOẶC LÀ
SELECT 23 MOD 6;

Thực hiện đoạn script trên cho chúng ta 5

Bây giờ chúng ta hãy xem xét một số hàm số phổ biến trong MySQL.
Tầng - chức năng này sẽ loại bỏ các số thập phân khỏi một số và làm tròn nó đến số thấp nhất gần nhất. Kịch bản hiển thị dưới đây cho thấy việc sử dụng nó.
SELECT FLOOR(23 / 6) AS `floor_result`; 
Thực hiện đoạn script trên cho chúng ta kết quả như sau.
floor_result
3

Làm tròn - hàm này làm tròn một số có vị trí thập phân đến số nguyên gần nhất. Kịch bản hiển thị dưới đây cho thấy việc sử dụng nó.
SELECT ROUND(23 / 6) AS `round_result`;
Thực hiện đoạn script trên cho chúng ta kết quả như sau.
Round_result
4

Rand - hàm này được sử dụng để tạo một số ngẫu nhiên, giá trị của nó thay đổi mỗi khi hàm được gọi. Kịch bản hiển thị dưới đây cho thấy việc sử dụng nó.
SELECT RAND() AS `random_result`;

Chức năng lưu trữ

Các chức năng được lưu trữ giống như các chức năng được tích hợp ngoại trừ việc bạn phải tự xác định chức năng được lưu trữ. Khi một hàm được lưu trữ đã được tạo, nó có thể được sử dụng trong các câu lệnh SQL giống như bất kỳ hàm nào khác. Cú pháp cơ bản để tạo một hàm được lưu trữ như dưới đây
CREATE FUNCTION sf_name ([parameter(s)])
   RETURNS data type
   DETERMINISTIC
   STATEMENTS

ĐÂY
  • "CREATE FUNCTION sf_name ([parameter(s)]) " là bắt buộc và yêu cầu máy chủ MySQL tạo một hàm có tên `sf_name 'với các tham số tùy chọn được xác định trong ngoặc đơn.
  • "RETURNS data type" là bắt buộc và chỉ định kiểu dữ liệu mà hàm sẽ trả về.
  • "DETERMINISTIC" có nghĩa là hàm sẽ trả về cùng các giá trị nếu các đối số tương tự được cung cấp cho nó.
  • "STATEMENTS" là mã thủ tục mà hàm thực thi.

Bây giờ chúng ta hãy xem xét một ví dụ thực tế thực hiện chức năng tích hợp. Giả sử chúng tôi muốn biết những bộ phim được thuê đã qua ngày trở lại. Chúng ta có thể tạo một hàm được lưu trữ chấp nhận ngày trả về làm tham số và sau đó so sánh nó với ngày hiện tại trong máy chủ MySQL. Nếu ngày hiện tại ít hơn ngày quay trở lại, thì chúng tôi trả về "Không", chúng tôi sẽ trả lại "Có". Kịch bản hiển thị dưới đây giúp chúng tôi đạt được điều đó.
DELIMITER |
CREATE FUNCTION sf_past_movie_return_date (return_date DATE)
  RETURNS VARCHAR(3)
   DETERMINISTIC
    BEGIN
     DECLARE sf_value VARCHAR(3);
        IF curdate() > return_date
            THEN SET sf_value = 'Yes';
        ELSEIF  curdate() <= return_date
            THEN SET sf_value = 'No';
        END IF;
     RETURN sf_value;
    END|

Việc thực thi đoạn script trên đã tạo ra hàm được lưu trữ `sf_past_movie_return_date`.
Bây giờ chúng ta hãy kiểm tra chức năng lưu trữ của chúng tôi.
SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`)  FROM `movierentals`; 
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta các kết quả sau.
movie_idmembership_numberreturn_dateCURDATE()sf_past_movie_return_date('return_date')
11NULL04-08-2012NULL
2125-06-201204-08-2012yes
2325-06-201204-08-2012yes
2225-06-201204-08-2012yes
33NULL04-08-2012NULL

Hàm do người dùng định nghĩa

MySQL cũng hỗ trợ các chức năng do người dùng định nghĩa mở rộng MySQL. Các hàm do người dùng xác định là các hàm mà bạn có thể tạo bằng ngôn ngữ lập trình như C, C ++, v.v. và sau đó thêm chúng vào máy chủ MySQL. Sau khi thêm, chúng có thể được sử dụng giống như bất kỳ chức năng nào khác.

Tóm lược

  • Các 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ấp nhận các tham số.
  • Các hàm được xây dựng là các hàm được gửi 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 các hàm, chuỗi và ngày được tích hợp sẵn trong các hàm.
  • Các chức năng được lưu trữ được tạo bởi người dùng trong máy chủ MySQL và có thể được sử dụng trong các câu lệnh SQL.
  • Các hàm do người dùng xác định được tạo bên ngoài MySQL và có thể được tích hợp vào máy chủ MySQL.

Post a Comment

Mới hơn Cũ hơn