Tìm hiểu MySQL lâu liệu bạn đã biết tới các functions này ?

Giới thiệu Trong quá trình làm việc cũng như học tập về SQL cụ thể trong bài này mình muốn nói tới là MySQL, vì nó khá phổ biến so với sinh viên hay với những người đã đi làm thì việc sử dụng cơ sở dữ liệu như một điều tất yếu đối với

Giới thiệu

Trong quá trình làm việc cũng như học tập về SQL cụ thể trong bài này mình muốn nói tới là MySQL, vì nó khá phổ biến so với sinh viên hay với những người đã đi làm thì việc sử dụng cơ sở dữ liệu như một điều tất yếu đối với lập trình viên chúng ta. Tuy nhiên ở trường lớp chúng ta cũng chỉ có cơ hội tiếp xúc với những câu lệnh SQL đơn giản, thậm chí khi đi làm 1, 2 năm rồi cũng chưa chắc chúng ta đã có cơ hội để sử dụng hết những functions trong MySQL.

Vậy nên ở trong bài viết này mình sẽ giới thiệu cho các bạn một vài functions của MySQL khá hữu ích mà đôi khi chúng ta sẽ cần đến.

Các hàm này trong MySQL cũng sẽ có các hàm xử lý kết quả được lấy ra từ database luôn mà không cần đợi đến lúc chúng ta lấy kết quả từ cơ sở dữ liệu ra rồi, lại sử dụng một ngôn ngữ lập trình nào đó, format kết quả đó thành thứ chúng ta mong muốn.

String functions

Ở phần này mình sẽ giới thiệu cho các bạn một vài các functions trong MySQL để sử lý các chuỗi (string).

CONCAT()

Nhắc tới hàm concat chắc nhiều tín đồ javascript sẽ nhận ra ngay đây cũng là một hàm phổ biến trong javascript được sử dụng để nối chuỗi hoặc merge các mảng lại với nhau. Trong MySQL cũng có hàm CONCAT cho riêng mình với tác dụng tương tự, dùng để nối các biểu thức lại với nhau

Cú pháp :

CONCAT(expression1, expression2, expression3,...)

Ví dụ

SELECT Name,CONCAT(Address," ", City)AS Address
FROM Users;

Kết quả

Name Address
Quang Phú Minh Khai Hà Nội
Thu Thủy Phú Xuyên Hà Nội

LCASE() và UCASE()

Khi sử dụng hàm LCASE(), nó sẽ convert chuỗi được lấy ra dưới dạng lower-case, và ngược lại UCASE() sẽ lấy ra dưới dạng upper-case

Cú pháp :

LCASE(text)UCASE(text)

Ví dụ :

SELECTLCASE(Name)AS LowercaseName
FROM Users;

Kết quả :

LowercaseName
quang phú
thu thủy

LEFT()

Hàm này dùng để trích xuất một số ký tự từ một chuỗi được lấy ra, bắt đầu từ trái qua phải
Cú pháp :

LEFT(string, number_of_chars)

Ví dụ :

SELECTLEFT(Name,3)AS ExtractName
FROM Users;

Kết quả

ExtractName
qua
thu

TRIM()

Hàm này dùng để loại bỏ khoảng trắng đầu cuối. Hàm này khá hữu ích khi dữ liệu của bạn đôi khi được lưu trong cơ sở dữ liệu mà dữ liệu thừa khoảng trắng đầu và cuối.

Để xử lý việc này MySQL cung cấp luôn cho chúng ta functions này để xử lý dữ liệu ngay khi lấy ra.

Cú pháp

TRIM(string)

Ví dụ

SELECTTRIM('    Quang Phú    ')AS TrimmedName;

Kết quả

Quang Phú

Numeric functions

Nhắc đến các numeric functions chắc chắc không thể nhắc tới các hàm nổi tiếng được xuất hiện trong các giáo trình hồi đại học của mình như MAX, MIN, SUM, COUNT, AVG, thì hồi đó trong trí óc của 1 cậu sinh viên của mình chỉ biết tới sợ tồn tại của những functions đó.

Tuy nhiên cũng còn rất nhiều các functions liên quan đến số má các kiểu mà mình sẽ liệt kê vài functions mà mình thấy hay dưới đây

GREATEST() và LEAST()

Hàm GREATEST sẽ trả về giá trị lớn nhất, ngược lại LEAST sẽ trả về giá trị nhỏ nhất
Cú pháp :

GREATEST(arg1, arg2, arg3,...)LEAST(arg1, arg2, arg3,...)

Ví dụ

SELECTLEAST(3,12,34,8,25);

Kết quả

3

ROUND()

Hàm này sẽ làm tròn một số đến với số thập phân được chỉ định
Cú pháp :

ROUND(number, decimals)

với number là giá trị cần làm tròn, decimals là số chữ số thập phân được làm tròn
Ví dụ :

SELECTROUND(135.375,2);

Kết quả :

135.38

MOD()

Hàm này sẽ trả về kết quả của phép chia
Cú pháp :

MOD(x, y)// hoặc
x MOD y
// hoặc
x % y

Ví dụ

SELECT18MOD4;

Kết quả

2

Date functions

Việc xử lý ngày tháng trong MySQL rõ ràng là điều chúng ta rất cần thiết, vì vậy việc MySQL cung cấp cho chúng ta các hàm để xử lý cũng là điều dễ hiểu, tuy nhiên không phải ai cũng biết.

DATE_FORMAT()

Trong quá trình làm việc mình thấy đa số việc xử lý ngày tháng sẽ được xử lý sau khi lấy dữ liệu ra bằng các hàm có sẵn của ngôn ngữ lập trình hoặc sử dụng thư viện nên đôi khi làm chúng ta quên đi rằng SQL cũng có cách để chúng ta xử lý ngày tháng.

Hàm DATE_FORMAT này mình thấy khá hay được dùng để định dạng ngày tháng.
Cú pháp :

DATE_FORMAT(date, format)

trong đó date là ngày cần được định dạng, format là kiểu cần định dạng ra là gì, giá trị của format có thể là các format sau

  • %d: ngày (giá trị từ 01>31)
  • %H: giờ (00->23h)
  • %h: giờ (0->12h)
  • %M: tháng (January -> December)
  • %Y: năm (giá trị trả về là xxxx, 4 số)
  • %y: năm (giống %Y những trả về 2 số cuối)

Ngoài ra còn rất nhiều các kiểu định dạng khác mà chúng ta có thể tìm được ở docs của MySQL
Ví dụ :

SELECTDATE_FORMAT("1998-06-12","%Y");

Kết quả

1998

hoặc truyền một lúc nhiều định dạng

SELECTDATE_FORMAT("2017-06-15","%M %d %Y");

Kết quả

June 15 2017

DAYOFMONTH()

Ngoài cách định dạng trên để lấy ra giá trị của tháng trong dữ liệu được truyền vào, MySQL cung cấp cho chúng ta hàm DAYOFMONTH() để lấy ra kết quả của ngày trong date nhanh hơn.
Cú pháp :

DAYOFMONTH(date)

Ví dụ :

SELECTDAYOFMONTH("2017-06-15");

Kết quả

15

EXTRACT()

Hàm này giúp chúng trong việc lấy dự liệu trong date được truyền vào, có thể là ngày, tháng, năm, giờ …
Cú pháp :

EXTRACT(part FROM date)

trong đó với part là dữ liệu mà chúng ta cần trích xuất ra
Ví dụ

SELECTEXTRACT(MONTHFROM"2017-06-15");

Kết quả

6

Ngoài ra còn rất nhiều thuộc tính truyền vào part như
MICROSECOND,
SECOND,
MINUTEHOUR,
DAYDAY_SECOND,
DAY_HOUR,
YEAR_MONTH … tùy vào nhu cầu sử dụng của mỗi người

Advanced functions

CASE

Việc xử lý điều kiện rồi mới trả về kết quả thay vì chúng ta thực thi câu lệnh truy vấn xong r mới lọc kết quả, giờ đây đã có câu điều kiện CASE trong MySQL giúp.

Câu lệnh này sẽ đi qua lần lượt các câu lệnh điều kiện, nếu thỏa mãn lệnh điều kiện nào nó sẽ return luôn giá trị đó, ngược lại nếu không thỏa mãn bất cứ điều kiện nào, nó sẽ đi vào phần ELSE của câu lệnh điều kiện này

Cú pháp :

CASEWHEN condition1 THEN result1
    WHEN condition2 THEN result2
    WHEN conditionN THEN resultN
    ELSE result
END;

Ví dụ :

SELECT CustomerName, City, Country FROM Customers
ORDERBY(CASEWHEN City ISNULLTHEN Country
ELSE City
END);

Kết quả :

CustomerName City Country
Drachenblut Delikatessend Aachen Germany
Rattlesnake Canyon Grocery Albuquerque USA
Folies gourmandes Leipzig Germany

IF

Ngoài câu điều kiện CASE ra thì còn có cả câu điều kiện IF luôn cho anh em sử dụng, việc sử dụng cũng khá dễ dàng

Cú pháp :

IF(condition, value_if_true, value_if_false)

Ví dụ :

SELECT OrderID, Quantity,IF(Quantity>10,"MORE","LESS")as QuantityText
FROM OrderDetails;

Kết quả

OrderID Quantity QuantityText
1 12 MORE
2 10 LESS
3 8 LESS

COALESCE()

Hàm này sẽ trả về giá trị không null đầu tiên được tìm thấy

Cú pháp :

COALESCE(val1, val2,...., val_n)

Ví dụ :

SELECTCOALESCE(NULL,1,2,'W3Schools.com');

Kết quả

1

CAST()

Dùng để convert dữ liệu sang một kiểu dữ liệu khác

Cú pháp :

CAST(value AS datatype)

trong đó với datatype là kiểu dữ liệu muốn convert sang, ví dụ như DATE, DATETIME, CHAR, TIME

Ví dụ

SELECTCAST("2017-08-29"ASDATE);

Kết quả :

2017-08-29

LAST_INSERT_ID()

Hàm này khá hữu ích trong một số trường hợp khi bạn muốn lấy AUTO_INCREMENT id của record gần nhất được thêm vào cơ sở dữ liệu
Ví dụ :

SELECT LAST_INSERT_ID();

DATABASE();

Hàm này dùng để trả về tên của database

Ví dụ :

SELECTDATABASE();

Kết luận

Trên đây là những functions hữu ích trong MySQL mà mình muốn giới thiệu với các bạn, bởi đôi khi các hàm này có sẵn mà chúng ta lại không hề hay biết thì quả là hơi phí 🤣🤣🤣

Nếu bài viết có ích hãy tặng mình 1 upvote nhé !!!

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ