MySQL - UNION Operator

Xin chào các bạn, những法师 cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ cùng tìm hiểu một trong những công cụ mạnh mẽ nhất của MySQL: toán tử UNION. Nó giống như một枝 c魔法, cho phép chúng ta kết hợp kết quả của nhiều câu lệnh SELECT thành một tập kết quả duy nhất. Thật thú vị phải không? Hãy cùng bắt đầu cuộc phiêu lưu này nhé!

MySQL - UNION Operator

MySQL UNION Operator

Toán tử UNION được sử dụng để kết hợp các tập kết quả của hai hoặc nhiều câu lệnh SELECT. Nó giống như mời các nhóm bạn bè khác nhau đến cùng một buổi tiệc - họ đều đến cùng một địa điểm!

Dưới đây là cú pháp cơ bản:

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

Hãy xem một ví dụ thực tế. Giả sử chúng ta có hai bảng: 'employees' và 'customers'.

-- Tạo bảng employees
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);

-- Chèn một số dữ liệu
INSERT INTO employees VALUES
(1, 'John Doe', '[email protected]'),
(2, 'Jane Smith', '[email protected]');

-- Tạo bảng customers
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);

-- Chèn một số dữ liệu
INSERT INTO customers VALUES
(1, 'Alice Johnson', '[email protected]'),
(2, 'Bob Wilson', '[email protected]');

-- Bây giờ, hãy sử dụng UNION
SELECT name, email FROM employees
UNION
SELECT name, email FROM customers;

Câu truy vấn này sẽ cho chúng ta một danh sách kết hợp các tên và email từ cả hai bảng. Thật tuyệt vời phải không?

Lưu ý, UNION sẽ loại bỏ các hàng trùng lặp theo mặc định. Nó giống như một bảo vệ tại buổi tiệc của chúng ta, đảm bảo không ai vào hai lần!

UNION với mệnh đề WHERE

Chúng ta có thể làm UNION mạnh mẽ hơn bằng cách thêm các mệnh đề WHERE. Điều này cho phép chúng ta lọc kết quả từ mỗi câu lệnh SELECT trước khi chúng được kết hợp.

SELECT name, email FROM employees WHERE id > 1
UNION
SELECT name, email FROM customers WHERE name LIKE 'B%';

Câu truy vấn này sẽ cho chúng ta các nhân viên có ID lớn hơn 1 và các khách hàng có tên bắt đầu bằng 'B'. Nó giống như có các khu vực VIP tại buổi tiệc của chúng ta!

UNION với mệnh đề ORDER BY

Muốn sắp xếp kết quả kết hợp của bạn? Không có vấn đề gì! Chúng ta có thể sử dụng ORDER BY với UNION, nhưng nó phải ở cuối toàn bộ câu lệnh UNION.

SELECT name, email FROM employees
UNION
SELECT name, email FROM customers
ORDER BY name ASC;

Điều này sẽ cho chúng ta tất cả các tên và email, được sắp xếp theo thứ tự bảng chữ cái theo tên. Nó giống như sắp xếp các khách mời của chúng ta theo thứ tự bảng chữ cái!

UNION với Alias

Đôi khi, các cột trong bảng của chúng ta có thể có tên khác nhau. Không sao! Chúng ta có thể sử dụng alias để làm cho chúng khớp.

SELECT name, email AS contact FROM employees
UNION
SELECT customer_name, customer_email AS contact FROM customers;

Tại đây, chúng ta giả định rằng bảng customers có tên cột hơi khác một chút. Từ khóa AS cho phép chúng ta đổi tên chúng trên máy bay!

UNION ALL Toán tử

Nhớ bảo vệ của chúng ta đã loại bỏ các hàng trùng lặp? Đôi khi chúng ta muốn để mọi người vào, cả những người trùng lặp. Đó là khi UNION ALL được sử dụng.

SELECT name FROM employees
UNION ALL
SELECT name FROM customers;

Điều này sẽ cho chúng ta tất cả các tên, ngay cả khi có trùng lặp giữa hai bảng. Nó giống như có chính sách "mọi người đều được chào đón" tại buổi tiệc của chúng ta!

UNION Toán tử Sử dụng Chương trình Khách

Bây giờ, hãy xem cách chúng ta có thể sử dụng toán tử UNION trong một chương trình khách. Tôi sẽ cho bạn một ví dụ sử dụng Python và thư viện mysql-connector.

import mysql.connector

# Kết nối với cơ sở dữ liệu
cnx = mysql.connector.connect(user='your_username', password='your_password',
host='127.0.0.1', database='your_database')
cursor = cnx.cursor()

# Thực hiện câu lệnh UNION
query = """
SELECT name, email FROM employees
UNION
SELECT name, email FROM customers
ORDER BY name
"""
cursor.execute(query)

# Lấy và in kết quả
for (name, email) in cursor:
print(f"{name}: {email}")

# Đóng kết nối
cursor.close()
cnx.close()

Chương trình này kết nối với cơ sở dữ liệu MySQL của bạn, thực hiện một câu lệnh UNION và in kết quả. Nó giống như có một trợ lý cá nhân để quản lý danh sách khách mời của bạn!

Dưới đây là bảng tóm tắt các phương pháp UNION mà chúng ta đã thảo luận:

Phương pháp Mô tả
UNION Kết hợp kết quả, loại bỏ trùng lặp
UNION ALL Kết hợp kết quả, giữ trùng lặp
UNION với WHERE Lọc kết quả trước khi kết hợp
UNION với ORDER BY Sắp xếp kết quả kết hợp
UNION với Aliases Đổi tên cột để khớp

Và đó là tất cả, các bạn yêu thích cơ sở dữ liệu! Chúng ta đã cùng nhau khám phá thế giới của toán tử UNION, từ các kết hợp cơ bản đến các truy vấn phức tạp với lọc và sắp xếp. Nhớ rằng, thực hành là cách tốt nhất để thành thạo, vì vậy đừng ngần ngại thử nghiệm các truy vấn này trên cơ sở dữ liệu của riêng bạn. Ai biết được? Bạn có thể sẽ tổ chức buổi tiệc dữ liệu tốt nhất trong thị trấn!

Credits: Image by storyset