+3

Giúp bạn hiểu về MySQL Query trong 10 phút.

Các bài viết chủ đề MySQL

Giới thiệu

Trong SQL, truy vấn có tác dụng quan trọng và đa dạng trong việc làm việc với cơ sở dữ liệu. Bằng cách sử dụng các câu lệnh truy vấn, người dùng có thể thực hiện nhiều tác vụ khác nhau như:

  • Truy xuất dữ liệu từ một hoặc nhiều bảng trong cơ sở dữ liệu, cho phép xem thông tin theo nhu cầu cụ thể.
  • Lọc và sắp xếp dữ liệu theo các tiêu chí cụ thể, giúp tìm kiếm và sắp xếp thông tin một cách dễ dàng và tiện lợi.
  • Thêm, sửa đổi hoặc xóa dữ liệu trong cơ sở dữ liệu, cho phép người dùng thực hiện các thao tác cập nhật và thay đổi dữ liệu một cách linh hoạt.
  • Tạo, sửa đổi hoặc xóa bảng và các đối tượng khác trong cơ sở dữ liệu, giúp người dùng tạo ra và quản lý cấu trúc dữ liệu theo yêu cầu.
  • Tạo và quản lý các ràng buộc và quan hệ giữa các bảng, đảm bảo tính nhất quán và an toàn của dữ liệu trong cơ sở dữ liệu.
  • Thực hiện các phép tính toán và xử lý dữ liệu, cho phép người dùng thực hiện các phép toán và tính toán trên dữ liệu theo nhu cầu.

Truy vấn trong SQL không chỉ đơn thuần là một công cụ, mà còn là một khía cạnh quan trọng và cơ bản trong việc làm việc với cơ sở dữ liệu. Nó cho phép người dùng truy xuất và quản lý dữ liệu một cách linh hoạt, hiệu quả và dễ dàng.

Lấy thông tin từ các bảng trong MySQL

SQL cung cấp các câu lệnh để lấy dữ liệu từ một bảng trong cơ sở dữ liệu. Để lấy dữ liệu từ một bảng, bạn có thể sử dụng câu lệnh SELECT. Ví dụ, để lấy tất cả dữ liệu từ bảng "TenBang", bạn có thể sử dụng câu lệnh sau:

SELECT * FROM TenBang;

Trong câu lệnh này, "" đại diện cho tất cả các cột trong bảng "TenBang". Bạn cũng có thể chỉ định các cột cụ thể mà bạn muốn lấy dữ liệu bằng cách thay thế "" bằng tên cột tương ứng.

SELECT * FROM TenBang LIMIT 10;

Trong câu lệnh trên, LIMIT 10 được sử dụng để giới hạn số dòng kết quả trả về của truy vấn thành 10 dòng. Bạn có thể thay đổi số 10 thành số dòng tùy ý tuỳ thuộc vào nhu cầu của bạn.

Filter kết quả truy vấn

Filter kết quả truy vấn trong SQL là quá trình lọc dữ liệu trả về từ một bảng dựa trên một số tiêu chí cụ thể. Điều này giúp người dùng tìm kiếm và hiển thị chỉ những dòng dữ liệu mà họ quan tâm, thay vì lấy toàn bộ dữ liệu từ bảng. Các tiêu chí lọc có thể bao gồm các điều kiện như giá trị cột cụ thể, phép so sánh, phép logic và các biểu thức khác. Các câu lệnh lọc thông thường trong SQL bao gồm WHERE, AND, OR, IN, BETWEEN, LIKE và nhiều hơn nữa.

Ví dụ:

SELECT * FROM city WHERE countryCode = 'VI';

Trong truy vấn này, 'countryCode' là mã quốc gia mà bạn muốn lọc dữ liệu từ bảng 'city'. Bạn nên thay thế 'countryCode' bằng mã quốc gia cụ thể mà bạn muốn sử dụng để lọc dữ liệu.

Sử dụng các hàm thao tác với dữ liệu

Trong MySQL, bạn có thể sử dụng các hàm toán học như ABS, ROUND, CEIL, FLOOR để thực hiện các phép tính và xử lý dữ liệu số. Các hàm chuỗi như CONCAT, UPPER, LOWER, SUBSTRING cho phép bạn thao tác và định dạng dữ liệu chuỗi theo nhu cầu. Ngoài ra, MySQL cũng cung cấp các hàm xử lý ngày tháng như DATE, YEAR, MONTH, DAY để thực hiện các phép tính và lọc dữ liệu dựa trên ngày tháng.

Nếu các hàm có sẵn không đáp ứng được yêu cầu của bạn, bạn cũng có thể tự tạo ra các hàm riêng trong SQL, C hoặc C++. Điều này giúp bạn tùy chỉnh và mở rộng khả năng xử lý dữ liệu của MySQL theo ý muốn của mình. Bằng cách sử dụng các ngôn ngữ lập trình như C hoặc C++, bạn có thể viết mã logic phức tạp để xử lý dữ liệu và trả về kết quả mong muốn.

Với khả năng sử dụng các hàm có sẵn và tự tạo hàm riêng, bạn có thể linh hoạt lọc dữ liệu dựa trên các điều kiện cụ thể và định dạng nó theo ý muốn. Điều này giúp bạn tối ưu hóa truy vấn và đảm bảo rằng chỉ có dữ liệu phù hợp với yêu cầu của bạn được trả về.

Trong các phần tiếp theo, chúng ta sẽ tìm hiểu chi tiết về một số trong số những hàm này và cách sử dụng chúng trong MySQL.

Math functions - Các hàm toán học

MySQL cung cấp các hàm toán học để thực hiện các phép tính và xử lý dữ liệu số trong cơ sở dữ liệu. Dưới đây là một số ví dụ về các hàm toán học phổ biến trong MySQL:

  1. Hàm ABS(x): Hàm này trả về giá trị tuyệt đối của số x. Ví dụ, nếu chúng ta chạy câu lệnh SELECT ABS(-5) AS AbsoluteValue;, kết quả sẽ trả về giá trị tuyệt đối của -5, tức là 5.
  2. Hàm ROUND(x): Hàm này làm tròn số x đến số nguyên gần nhất. Ví dụ, nếu chúng ta chạy câu lệnh SELECT ROUND(3.14159) AS RoundedValue;, kết quả sẽ trả về số 3, vì 3.14159 làm tròn thành 3.
  3. Hàm CEIL(x): Hàm này làm tròn số x lên số nguyên gần nhất. Ví dụ, nếu chúng ta chạy câu lệnh SELECT CEIL(4.2) AS CeiledValue;, kết quả sẽ trả về số 5, vì 4.2 làm tròn lên thành 5.
  4. Hàm FLOOR(x): Hàm này làm tròn số x xuống số nguyên gần nhất. Ví dụ, nếu chúng ta chạy câu lệnh SELECT FLOOR(4.8) AS FlooredValue;, kết quả sẽ trả về số 4, vì 4.8 làm tròn xuống thành 4.

Với các hàm toán học này, bạn có thể thực hiện các phép tính và xử lý dữ liệu số một cách dễ dàng trong MySQL. Hơn nữa, bạn cũng có thể kết hợp các hàm này với các câu lệnh truy vấn khác để thực hiện các phép tính phức tạp và trả về kết quả theo yêu cầu của bạn.

Ví dụ:

SELECT ABS(-5) AS AbsoluteValue, ROUND(3.14159) AS RoundedValue, CEIL(4.2) AS CeiledValue, FLOOR(4.8) AS FlooredValue;

Kết quả:

AbsoluteValue RoundedValue CeiledValue FlooredValue
5 3 5 4

Trong ví dụ trên, chúng ta sử dụng các hàm toán học để thực hiện các phép tính toán trên các số. Kết quả trả về là giá trị tuyệt đối của -5, số 3.14159 làm tròn thành 3, số 4.2 làm tròn lên thành 5, và số 4.8 làm tròn xuống thành 4.

Các hàm xử lý chuỗi trong MySQL

MySQL cung cấp nhiều hàm xử lý chuỗi để thực hiện các phép tính và định dạng dữ liệu chuỗi trong cơ sở dữ liệu. Dưới đây là một số ví dụ về các hàm xử lý chuỗi phổ biến trong MySQL:

  1. Hàm CONCAT(str1, str2, ...): Hàm này kết hợp các chuỗi str1, str2, ... lại với nhau và trả về một chuỗi mới. Ví dụ, nếu chúng ta chạy câu lệnh SELECT CONCAT('Hello', 'World') AS ConcatenatedString;, kết quả sẽ trả về chuỗi "HelloWorld".
  2. Hàm UPPER(str): Hàm này chuyển đổi tất cả các ký tự trong chuỗi str thành ký tự in hoa và trả về chuỗi mới. Ví dụ, nếu chúng ta chạy câu lệnh SELECT UPPER('Hello') AS UppercaseString;, kết quả sẽ trả về chuỗi "HELLO".
  3. Hàm LOWER(str): Hàm này chuyển đổi tất cả các ký tự trong chuỗi str thành ký tự thường và trả về chuỗi mới. Ví dụ, nếu chúng ta chạy câu lệnh SELECT LOWER('WORLD') AS LowercaseString;, kết quả sẽ trả về chuỗi "world".
  4. Hàm SUBSTRING(str, start, length): Hàm này trích xuất một phần của chuỗi str bắt đầu từ vị trí start và có độ dài length. Ví dụ, nếu chúng ta chạy câu lệnh SELECT SUBSTRING('HelloWorld', 6, 5) AS Substring;, kết quả sẽ trả về chuỗi "World".
  5. Hàm LENGTH(str): Hàm này trả về độ dài của chuỗi str. Ví dụ, nếu chúng ta chạy câu lệnh SELECT LENGTH('Hello') AS StringLength;, kết quả sẽ trả về giá trị 5.

Với các hàm xử lý chuỗi này, bạn có thể thực hiện các phép tính và định dạng dữ liệu chuỗi một cách dễ dàng trong MySQL. Hơn nữa, bạn cũng có thể kết hợp các hàm này với các câu lệnh truy vấn khác để thực hiện các phép tính và trả về kết quả theo yêu cầu của bạn.

Ví dụ:

SELECT CONCAT('Hello', 'World') AS ConcatenatedString, UPPER('Hello') AS UppercaseString, LOWER('WORLD') AS LowercaseString, SUBSTRING('HelloWorld', 6, 5) AS Substring, LENGTH('Hello') AS StringLength;

Kết quả:

ConcatenatedString UppercaseString LowercaseString Substring StringLength
HelloWorld HELLO world World 5

Trong ví dụ trên, chúng ta sử dụng các hàm xử lý chuỗi để thực hiện các phép tính và định dạng dữ liệu chuỗi. Kết quả trả về là chuỗi "HelloWorld", chuỗi "HELLO", chuỗi "world", chuỗi "World" và giá trị 5 là độ dài của chuỗi "Hello".

Các hàm xử lý ngày tháng trong MySQL

MySQL cung cấp nhiều hàm để xử lý và làm việc với dữ liệu ngày tháng trong cơ sở dữ liệu. Dưới đây là một số ví dụ về các hàm xử lý ngày tháng phổ biến trong MySQL:

  1. Hàm NOW(): Hàm này trả về thời gian hiện tại theo định dạng "YYYY-MM-DD HH:MM:SS". Ví dụ, nếu chúng ta chạy câu lệnh SELECT NOW() AS CurrentTime;, kết quả sẽ trả về thời gian hiện tại.
  2. Hàm DATE(): Hàm này trích xuất phần ngày từ một giá trị ngày tháng. Ví dụ, nếu chúng ta chạy câu lệnh SELECT DATE('2022-10-15') AS DateValue;, kết quả sẽ trả về ngày "October 15, 2022".
  3. Hàm YEAR(): Hàm này trích xuất phần năm từ một giá trị ngày tháng. Ví dụ, nếu chúng ta chạy câu lệnh SELECT YEAR('2022-10-15') AS YearValue;, kết quả sẽ trả về năm "2022".
  4. Hàm MONTH(): Hàm này trích xuất phần tháng từ một giá trị ngày tháng. Ví dụ, nếu chúng ta chạy câu lệnh SELECT MONTH('2022-10-15') AS MonthValue;, kết quả sẽ trả về tháng "10".
  5. Hàm DAY(): Hàm này trích xuất phần ngày từ một giá trị ngày tháng. Ví dụ, nếu chúng ta chạy câu lệnh SELECT DAY('2022-10-15') AS DayValue;, kết quả sẽ trả về ngày "15".

Với các hàm xử lý ngày tháng này, bạn có thể thực hiện các phép tính và xử lý dữ liệu ngày tháng một cách dễ dàng trong MySQL. Hơn nữa, bạn cũng có thể kết hợp các hàm này với các câu lệnh truy vấn khác để thực hiện các phép tính và trả về kết quả theo yêu cầu của bạn.

Ví dụ:

SELECT NOW() AS CurrentTime, DATE('2022-10-15') AS DateValue, YEAR('2022-10-15') AS YearValue, MONTH('2022-10-15') AS MonthValue, DAY('2022-10-15') AS DayValue;

Kết quả:

CurrentTime DateValue YearValue MonthValue DayValue
@October 15, 2022 12:34:56 @October 15, 2022 2022 10 15

Trong ví dụ trên, chúng ta sử dụng các hàm xử lý ngày tháng để trích xuất thông tin về thời gian hiện tại, ngày "October 15, 2022", phần năm, tháng và ngày từ giá trị ngày tháng. Kết quả trả về là các giá trị tương ứng với từng hàm.

Tổng hợp dữ liệu trong MySQL

Điều này là một trong những khía cạnh mạnh mẽ nhất của ngôn ngữ SQL. Để làm điều này, chúng ta sử dụng mệnh đề GROUP BY trong câu lệnh SELECT. Điều này nhóm một hoặc nhiều dòng lại với nhau và báo cáo các giá trị dựa trên nhóm này. MySQL có nhiều hàm hoạt động trên một nhóm dòng, trong đó một trong số đó là MAX(), được sử dụng để lấy giá trị lớn nhất từ nhóm. Quan trọng là chỉ sử dụng các cột mà bạn đang nhóm theo và/hoặc các cột khác có chức năng tổng hợp.

Ví dụ, để tính tổng số lượng sản phẩm bán ra của từng danh mục, chúng ta có thể sử dụng câu lệnh sau:

SELECT category, SUM(quantity) AS total_quantity FROM products GROUP BY category;

Trong câu lệnh này, chúng ta nhóm các sản phẩm theo danh mục bằng cách sử dụng mệnh đề "GROUP BY category" và sử dụng hàm SUM() để tính tổng số lượng sản phẩm của từng danh mục. Kết quả trả về sẽ bao gồm danh mục và tổng số lượng sản phẩm tương ứng.

Bây giờ, hãy đi qua một số hàm thường được sử dụng để tổng hợp dữ liệu:

  • SUM(): Tính tổng tất cả các dòng trong nhóm.
  • MAX() và MIN(): Chọn giá trị cao nhất hoặc thấp nhất.
  • COUNT(): Trả về số lượng bản ghi trong nhóm.
  • AVG(): Trả về giá trị trung bình của các giá trị trong nhóm.
  • GROUP_CONCAT(): Kết hợp (nối) tất cả các giá trị từ nhóm lại với nhau.

Cũng có thể lọc những nhóm mà bạn muốn trong kết quả của mình bằng từ khóa HAVING. Xem câu truy vấn sau đây:

SELECT category, SUM(quantity) AS total_quantity FROM products GROUP BY category HAVING total_quantity > 100;

Trong câu truy vấn này, chúng ta nhóm các sản phẩm theo danh mục bằng cách sử dụng mệnh đề "GROUP BY category" và sử dụng hàm SUM() để tính tổng số lượng sản phẩm của từng danh mục. Sau đó, bằng từ khóa HAVING, chúng ta lọc ra các nhóm có tổng số lượng sản phẩm lớn hơn 100. Kết quả trả về sẽ bao gồm danh mục và tổng số lượng sản phẩm tương ứng, nhưng chỉ bao gồm các nhóm có tổng số lượng sản phẩm lớn hơn 100.

Tổng hợp dữ liệu trong MySQL rất hữu ích trong việc tính toán và phân tích dữ liệu. Nó giúp chúng ta có cái nhìn tổng quan về các thông số tổng hợp và hiểu rõ hơn về dữ liệu trong cơ sở dữ liệu của mình. Qua đó, chúng ta có thể tìm ra các xu hướng, mô hình và thông tin quan trọng khác từ dữ liệu được tổng hợp.

Câu lệnh CASE

Trong MySQL, câu lệnh CASE được sử dụng để xử lý dữ liệu dựa trên một hoặc nhiều điều kiện. Nó cho phép bạn thực hiện các phép tính và hiển thị dữ liệu tương ứng với từng điều kiện cụ thể.

Cú pháp của câu lệnh CASE như sau:

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE result
END

Trong câu lệnh này, bạn có thể xác định nhiều điều kiện và kết quả tương ứng cho mỗi điều kiện. Nếu không có điều kiện nào khớp, kết quả cuối cùng sẽ là kết quả mặc định được xác định bởi mệnh đề ELSE.

Ví dụ, để hiển thị thông báo "Giá trị lớn" nếu giá trị cột "amount" lớn hơn 100, và hiển thị thông báo "Giá trị nhỏ" nếu giá trị nhỏ hơn hoặc bằng 100, chúng ta có thể sử dụng câu lệnh CASE như sau:

SELECT
    CASE
        WHEN amount > 100 THEN 'Giá trị lớn'
        ELSE 'Giá trị nhỏ'
    END AS ThongBao
FROM table_name;

Trong truy vấn này, mỗi dòng dữ liệu sẽ có một cột mới được gọi là "ThongBao", và giá trị của cột này sẽ phụ thuộc vào giá trị của cột "amount".

Câu lệnh CASE trong MySQL cho phép bạn xử lý dữ liệu dựa trên điều kiện và hiển thị kết quả tương ứng. Bằng cách sử dụng câu lệnh này, bạn có thể linh hoạt và tiện lợi trong việc hiển thị dữ liệu theo yêu cầu của bạn.

Tổng kết

Trong bài viết này, bạn đã học cách chọn cơ sở dữ liệu và truy vấn các bảng của chúng. Bạn cũng đã học cách áp dụng các bộ lọc khác nhau vào kết quả sử dụng WHERE. Bạn đã thực hành sử dụng các hàm tích hợp phổ biến giúp bạn xử lý dữ liệu, chẳng hạn như ROUND(), POW() và CEILING(), các hàm chuỗi để cắt và xử lý kết quả, và sử dụng các hàm ngày và thời gian để cho phép bạn ghi lại các điểm thời gian khác nhau khi một bản ghi được chèn hoặc thay đổi. Cuối cùng, bạn đã được thực hành tổng hợp dữ liệu, đây là một kỹ năng cần thiết cho bất kỳ quản trị cơ sở dữ liệu nào.

Hãy đón chờ các bài viết tới chuyên sâu về SQL nhé.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.