Hàm người dùng MySQL ()

MySQL có thể làm được nhiều hơn là chỉ lưu trữ và truy xuất 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ề 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 của MySQL. Theo mặc định, MySQL lưu các kiểu dữ liệu ngày ở định dạng “YYYY-MM-DD”. Giả sử chúng ta đã xây dựng một ứng dụng và người dùng của chúng ta muốn ngày được trả về ở định dạng “DD-MM-YYYY”, chúng ta có thể sử dụng hàm DATE_FORMAT tích hợp trong MySQL để đạt được điều này. DATE_FORMAT là một trong những hàm đượ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ở bài học

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

Hàm người dùng MySQL ()

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ể nghĩ “Tại sao phải bận tâm đến các Hàm của MySQL?

Quay trở lại ví dụ về NGÀY 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 nghiệp vụ sẽ phải thực hiện các 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ể nhúng chức nă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 nó ở định dạng bắt buộc. Điều này làm giảm việc làm lại trong logic nghiệp vụ và giảm sự không nhất quán của dữ liệu

Một lý do khác tại sao chúng ta nên cân nhắc sử dụng các chức năng của MySQL 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ủ. Tầng 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. Tính 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 tổng thể của hệ thống

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 tích hợp. Các chức năng tích hợp chỉ đơn giản là các chức năng đã đượ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. Về cơ bản, các chức năng tích hợp có thể được phân loại thành các danh mục được sử dụng nhiều nhất sau đây

  • Các hàm chuỗi – hoạt động trên các kiểu dữ liệu chuỗi
  • Các hàm số – hoạt động trên các kiểu dữ liệu số
  • Các hàm ngày tháng – hoạt động trên các kiểu dữ liệu ngày tháng
  • Các 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ẽ giới hạn bài học của mình chỉ với các chức năng được đặt tên ở trên

Bây giờ chúng ta hãy xem xét chi tiết từng chức năng được đề cập ở trên. 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 ta đã xem các hàm chuỗi làm gì. Chúng ta 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, tiêu đề phim được lưu trữ bằng cách sử dụng kết hợp chữ thường và chữ in hoa. Giả sử chúng ta muốn nhận danh sách truy vấn trả về tiêu đề phim bằng chữ in hoa. Chúng ta có thể sử dụng chức năng “UCASE” để làm điều đó. Nó nhận một chuỗi làm tham số và chuyển đổi tất cả các chữ cái thành chữ hoa. Tập lệnh 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`;

NƠI ĐÂY

  • UCASE(`title`) là hàm tích hợp lấy tiêu đề làm tham số và trả về nó ở dạng chữ in hoa với tên bí danh `upper_case_title`

Thực thi tập lệnh trên trong bàn làm việc của MySQL đối với Myflixdb mang lại cho chúng tôi các kết quả sau được hiển thị bên dưới











movie_id




title




UCASE('title')












16




67% Guilty




67% GUILTY












6




Angels and Demons




ANGELS AND DEMONS












4




Code Name Black




CODE NAME BLACK












5




Daddy's Little Girls




DADDY'S LITTLE GIRLS












7




Davinci Code




DAVINCI CODE












2




Forgetting Sarah Marshal




FORGETTING SARAH MARSHAL












9




Honey mooners




HONEY MOONERS












19




movie 3




MOVIE 3












1




Pirates of the Caribean 4




PIRATES OF THE CARIBEAN 4












18




sample movie




SAMPLE MOVIE












17




The Great Dictator




THE GREAT DICTATOR












3




X-Men




X-MEN










MySQL hỗ trợ một số hàm chuỗi. Để biết 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. // nhà phát triển. mysql. com/doc/refman/5. 0/vi/hàm chuỗi. 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 kiểu dữ liệu số. Chúng ta có thể thực hiện các phép tính 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ử số học sau đây có thể được sử dụng để thực hiện tính toán trong các câu lệnh SQL

TênMô tảDIVIChia số nguyên/Phép chia–Phép trừ+Cộng*Nhân% hoặc MODModulus

Bây giờ chúng ta hãy xem các ví dụ của từng toán tử trên

Phân chia số nguyên (DIV)

SELECT 23 DIV 6 ;

Thực thi đoạn script trên cho chúng ta kết quả như sau

3

Toán tử 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 thi đ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ụ về 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 thi đ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ụ về toán tử cộng. Chúng tôi sẽ sửa đổi ví dụ trước

SELECT 23 + 6 ;

Thực thi đoạn script trên cho chúng ta 29

Toán tử nhân (*)

Bây giờ hãy xem ví dụ về toán tử nhân. Chúng tôi sẽ sử dụng các giá trị giống như trong các ví dụ trước

SELECT 23 * 6 AS `multiplication_result`;

Thực thi đoạn script trên cho chúng ta kết quả như sau

phép nhân_result138

Toán tử modulo (-)

Toán tử modulo chia N cho M và cho chúng ta phần còn lại. 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ị giống như trong các ví dụ trước

SELECT 23 % 6 ;

HOẶC LÀ

________số 8_______

Thực thi đ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 loại bỏ các vị trí 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ị bên dưới thể hiện cách sử dụng của nó

SELECT FLOOR(23 / 6) AS `floor_result`;

Thực thi đoạn script trên cho chúng ta kết quả như sau

Floor_result3

Làm tròn – hàm này làm tròn một số có vị trí thập phân thành số nguyên gần nhất. Kịch bản hiển thị bên dưới thể hiện cách sử dụng của nó











movie_id




title




UCASE('title')












16




67% Guilty




67% GUILTY












6




Angels and Demons




ANGELS AND DEMONS












4




Code Name Black




CODE NAME BLACK












5




Daddy's Little Girls




DADDY'S LITTLE GIRLS












7




Davinci Code




DAVINCI CODE












2




Forgetting Sarah Marshal




FORGETTING SARAH MARSHAL












9




Honey mooners




HONEY MOONERS












19




movie 3




MOVIE 3












1




Pirates of the Caribean 4




PIRATES OF THE CARIBEAN 4












18




sample movie




SAMPLE MOVIE












17




The Great Dictator




THE GREAT DICTATOR












3




X-Men




X-MEN










0

Thực thi đoạn script trên cho chúng ta kết quả như sau

Round_result4

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ị bên dưới thể hiện cách sử dụng của nó











movie_id




title




UCASE('title')












16




67% Guilty




67% GUILTY












6




Angels and Demons




ANGELS AND DEMONS












4




Code Name Black




CODE NAME BLACK












5




Daddy's Little Girls




DADDY'S LITTLE GIRLS












7




Davinci Code




DAVINCI CODE












2




Forgetting Sarah Marshal




FORGETTING SARAH MARSHAL












9




Honey mooners




HONEY MOONERS












19




movie 3




MOVIE 3












1




Pirates of the Caribean 4




PIRATES OF THE CARIBEAN 4












18




sample movie




SAMPLE MOVIE












17




The Great Dictator




THE GREAT DICTATOR












3




X-Men




X-MEN










1

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 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











movie_id




title




UCASE('title')












16




67% Guilty




67% GUILTY












6




Angels and Demons




ANGELS AND DEMONS












4




Code Name Black




CODE NAME BLACK












5




Daddy's Little Girls




DADDY'S LITTLE GIRLS












7




Davinci Code




DAVINCI CODE












2




Forgetting Sarah Marshal




FORGETTING SARAH MARSHAL












9




Honey mooners




HONEY MOONERS












19




movie 3




MOVIE 3












1




Pirates of the Caribean 4




PIRATES OF THE CARIBEAN 4












18




sample movie




SAMPLE MOVIE












17




The Great Dictator




THE GREAT DICTATOR












3




X-Men




X-MEN










2

NƠI ĐÂ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
  • "Kiểu dữ liệu RETURNS" là bắt buộc và chỉ định kiểu dữ liệu mà hàm sẽ trả về
  • “XÁC ĐỊNH” có nghĩa là hàm sẽ trả về các giá trị giống nhau nếu các đối số giống nhau đượ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 một ví dụ thực tế triển khai một chức năng tích hợp. Giả sử chúng ta muốn biết những bộ phim đã thuê nào đã quá hạn 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 nhỏ hơn ngày quay lại phim, thì chúng tôi trả về “Không”, ngược lại, chúng tôi trả về “Có”. Kịch bản hiển thị bên dưới giúp chúng tôi đạt được điều đó











movie_id




title




UCASE('title')












16




67% Guilty




67% GUILTY












6




Angels and Demons




ANGELS AND DEMONS












4




Code Name Black




CODE NAME BLACK












5




Daddy's Little Girls




DADDY'S LITTLE GIRLS












7




Davinci Code




DAVINCI CODE












2




Forgetting Sarah Marshal




FORGETTING SARAH MARSHAL












9




Honey mooners




HONEY MOONERS












19




movie 3




MOVIE 3












1




Pirates of the Caribean 4




PIRATES OF THE CARIBEAN 4












18




sample movie




SAMPLE MOVIE












17




The Great Dictator




THE GREAT DICTATOR












3




X-Men




X-MEN










3

Việc thực thi tập lệnh trên đã tạo hàm được lưu trữ `sf_past_movie_return_date`

Bây giờ hãy kiểm tra chức năng được lưu trữ của chúng tôi











movie_id




title




UCASE('title')












16




67% Guilty




67% GUILTY












6




Angels and Demons




ANGELS AND DEMONS












4




Code Name Black




CODE NAME BLACK












5




Daddy's Little Girls




DADDY'S LITTLE GIRLS












7




Davinci Code




DAVINCI CODE












2




Forgetting Sarah Marshal




FORGETTING SARAH MARSHAL












9




Honey mooners




HONEY MOONERS












19




movie 3




MOVIE 3












1




Pirates of the Caribean 4




PIRATES OF THE CARIBEAN 4












18




sample movie




SAMPLE MOVIE












17




The Great Dictator




THE GREAT DICTATOR












3




X-Men




X-MEN










4

Thực thi đoạn mã trên trong bàn làm việc của MySQL đối với myflixdb mang lại cho chúng tôi các kết quả sau











movie_id




title




UCASE('title')












16




67% Guilty




67% GUILTY












6




Angels and Demons




ANGELS AND DEMONS












4




Code Name Black




CODE NAME BLACK












5




Daddy's Little Girls




DADDY'S LITTLE GIRLS












7




Davinci Code




DAVINCI CODE












2




Forgetting Sarah Marshal




FORGETTING SARAH MARSHAL












9




Honey mooners




HONEY MOONERS












19




movie 3




MOVIE 3












1




Pirates of the Caribean 4




PIRATES OF THE CARIBEAN 4












18




sample movie




SAMPLE MOVIE












17




The Great Dictator




THE GREAT DICTATOR












3




X-Men




X-MEN










5

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 xác định để 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 được thêm vào, chúng có thể được sử dụng giống như bất kỳ chức năng nào khác

Chức năng MySQL do người dùng định nghĩa là gì?

MySQL cũng hỗ trợ các chức năng do người dùng xác định giúp mở rộng MySQL. Các hàm do người dùng định nghĩa 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. rồi thêm chúng vào máy chủ MySQL . Sau khi được thêm vào, chúng có thể được sử dụng giống như bất kỳ chức năng nào khác.

Vai trò người dùng MySQL là gì?

Vai trò là gì? . Quản trị viên có thể gán đặc quyền cho các vai trò giống như cách họ gán đặc quyền cho tài khoản người dùng. an entity that functions as a container or collection of privileges. Administrators can assign privileges to roles in the same way that they assign privileges to user accounts.

Làm cách nào để tạo một hàm do người dùng xác định trong MySQL?

Sau đây là cú pháp cơ bản để tạo MySQL User-define function. Đầu tiên, chúng ta cần chỉ định tên của hàm do người dùng định nghĩa mà bạn muốn tạo sau câu lệnh CREATE FUNCTION. Thứ hai, liệt kê tất cả các tham số đầu vào của hàm do người dùng xác định bên trong dấu ngoặc đơn theo sau là tên hàm

Làm cách nào để kiểm tra vai trò người dùng trong MySQL?

TỔNG CẤP HIỂN THỊ MySQL .
Đầu tiên, chỉ định tên của tài khoản người dùng hoặc vai trò mà bạn muốn hiển thị các đặc quyền đã được cấp trước đó cho tài khoản hoặc vai trò người dùng sau từ khóa FOR. .
Thứ hai, sử dụng mệnh đề USING để kiểm tra các đặc quyền liên quan đến vai trò của người dùng