MySQL - Câu lệnh DISTINCT: Khám phá Sức mạnh của Độc đáo
Xin chào các bạn tương lai của phù thủy cơ sở dữ liệu! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của MySQL và khám phá một tính năng đặc biệt gọi là câu lệnh DISTINCT. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ cùng nhau giải quyết chủ đề này từng bước một. Vậy, hãy lấy một ly đồ uống yêu thích của bạn, và cùng tôi nhảy vào!
Câu lệnh DISTINCT trong MySQL là gì?
Hãy tưởng tượng bạn đang ở một buổi tiệc và bạn muốn biết có bao nhiêu loại đồ uống khác nhau đang được phục vụ. Bạn sẽ không đếm từng lon Coke riêng lẻ, phải không? Bạn sẽ chỉ ghi lại "Coke" một lần. Đó chính xác là điều mà câu lệnh DISTINCT làm trong MySQL - nó giúp chúng ta xác định và lấy ra các giá trị duy nhất từ một bảng cơ sở dữ liệu.
Câu lệnh DISTINCT được sử dụng trong các câu lệnh SELECT để loại bỏ các hàng trùng lặp từ tập kết quả. Nó giống như một bảo vệ VIP ở một câu lạc bộ, chỉ cho phép một đại diện từ mỗi nhóm khách hàng identikit vào.
Hãy cùng xem một ví dụ đơn giản:
SELECT DISTINCT column_name
FROM table_name;
Câu truy vấn này sẽ trả về tất cả các giá trị duy nhất từ cột được chỉ định trong bảng.
Ví dụ Thực tế
Giả sử chúng ta có một bảng叫做 employees
với dữ liệu như sau:
id | name | department |
---|---|---|
1 | Alice | Sales |
2 | Bob | Marketing |
3 | Carol | Sales |
4 | David | IT |
5 | Eve | Marketing |
Nếu chúng ta muốn biết tất cả các bộ phận khác nhau trong công ty của chúng ta, chúng ta có thể sử dụng:
SELECT DISTINCT department
FROM employees;
Điều này sẽ cho chúng ta:
department |
---|
Sales |
Marketing |
IT |
Thấy sao? Nó đã loại bỏ các trùng lặp một cách ngăn nắp! Đó là phép màu của DISTINCT!
Câu lệnh DISTINCT với hàm COUNT()
Bây giờ, hãy nâng cấp và kết hợp DISTINCT với một hàm有用的 khác: COUNT(). Cặp đôi này cho phép chúng ta đếm số lượng giá trị duy nhất trong một cột.
SELECT COUNT(DISTINCT column_name)
FROM table_name;
Sử dụng ví dụ trước đó, nếu chúng ta muốn biết chúng ta có bao nhiêu bộ phận khác nhau, chúng ta có thể sử dụng:
SELECT COUNT(DISTINCT department)
FROM employees;
Điều này sẽ trả về:
COUNT(DISTINCT department) |
---|
3 |
Như thể hỏi, "Chúng tôi cung cấp bao nhiêu hương vị kem?" thay vì "Chúng tôi đã bán bao nhiêu scoop kem?"
DISTINCT trên Nhiều Cột
Đây là phần thú vị nhất. DISTINCT có thể phát huy phép thuật của mình trên nhiều cột cùng một lúc. Nó coi sự kết hợp của các cột như một đơn vị duy nhất khi xác định các giá trị duy nhất.
SELECT DISTINCT column1, column2
FROM table_name;
Hãy mở rộng bảng employees
của chúng ta:
id | name | department | city |
---|---|---|---|
1 | Alice | Sales | New York |
2 | Bob | Marketing | Chicago |
3 | Carol | Sales | New York |
4 | David | IT | Boston |
5 | Eve | Marketing | Chicago |
6 | Frank | Sales | Boston |
Nếu chúng ta muốn biết tất cả các kết hợp bộ phận-thành phố duy nhất:
SELECT DISTINCT department, city
FROM employees;
Điều này sẽ cho chúng ta:
department | city |
---|---|
Sales | New York |
Marketing | Chicago |
IT | Boston |
Sales | Boston |
Chú ý rằng "Sales" xuất hiện hai lần vì nó ở các thành phố khác nhau.
DISTINCT với các giá trị NULL
Đây là một sự thật thú vị: Trong thế giới của DISTINCT, NULL được coi là một giá trị duy nhất. Nếu bạn có nhiều giá trị NULL trong một cột, DISTINCT sẽ chỉ trả về một NULL.
Hãy thay đổi bảng employees
của chúng ta:
id | name | department | project |
---|---|---|---|
1 | Alice | Sales | Alpha |
2 | Bob | Marketing | NULL |
3 | Carol | Sales | Beta |
4 | David | IT | NULL |
5 | Eve | Marketing | Alpha |
Nếu chúng ta chạy:
SELECT DISTINCT project
FROM employees;
Chúng ta sẽ nhận được:
project |
---|
Alpha |
NULL |
Beta |
Thấy sao? Chỉ có một NULL, mặc dù chúng ta có hai giá trị NULL trong bảng?
Câu lệnh DISTINCT sử dụng một Chương trình Khách
Bây giờ, hãy áp dụng tất cả kiến thức này vào thực tế bằng cách sử dụng một chương trình khách MySQL. Tôi sẽ sử dụng trình khách dòng lệnh MySQL cho ví dụ này, nhưng nguyên tắc áp dụng cho bất kỳ trình khách MySQL nào.
Thứ nhất, hãy tạo bảng employees
của chúng ta:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50),
project VARCHAR(50)
);
INSERT INTO employees VALUES
(1, 'Alice', 'Sales', 'Alpha'),
(2, 'Bob', 'Marketing', NULL),
(3, 'Carol', 'Sales', 'Beta'),
(4, 'David', 'IT', NULL),
(5, 'Eve', 'Marketing', 'Alpha');
Bây giờ, hãy thử một số câu truy vấn mà chúng ta đã học:
-
Lấy tất cả các bộ phận duy nhất:
SELECT DISTINCT department FROM employees;
-
Đếm số lượng dự án duy nhất:
SELECT COUNT(DISTINCT project) FROM employees;
-
Lấy tất cả các kết hợp bộ phận-dự án duy nhất:
SELECT DISTINCT department, project FROM employees;
Thử các câu truy vấn này trong trình khách MySQL của bạn và xem câu lệnh DISTINCT phát huy phép thuật của nó!
Kết luận
Và thế là, các bạn! Chúng ta đã cùng nhau hành trình qua thế giới của DISTINCT, từ cách sử dụng cơ bản đến các ứng dụng phức tạp hơn. Nhớ rằng, DISTINCT giống như một trợ lý hữu ích giúp làm sạch dữ liệu của bạn, loại bỏ các trùng lặp và cho bạn một cái nhìn rõ ràng hơn về thông tin của bạn.
Khi bạn tiếp tục hành trình MySQL của mình, bạn sẽ thấy DISTINCT là một công cụ đáng tin cậy trong bộ công cụ cơ sở dữ liệu của bạn. Nó đặc biệt hữu ích khi bạn làm việc với các bộ dữ liệu lớn và cần nhanh chóng xác định các giá trị hoặc kết hợp duy nhất.
Tiếp tục thực hành, giữ vững sự tò mò, và trước khi bạn biết, bạn sẽ viết các truy vấn phức tạp với sự tự tin của một chuyên gia cơ sở dữ liệu. Đến gặp lại, chúc các bạn vui vẻ khi truy vấn!
Credits: Image by storyset