Tới nội dung chính
Danh mục
Câu lệnh SQL

Cú pháp mệnh đề Union in SQL

Ngoài những nội dung sql cơ bản thì ta còn phải biết thêm các sql nâng cao như join, alias, alter table, view, union, union all,… Trong đó mệnh đề union trong sql là một mệnh đề quan trọng và hữu ích, giúp người dùng có thể kết hợp các dữ liệu có cấu trúc giống nhau từ nhiều bảng thành một. Vậy, union trong sql cụ thể là gì? Hãy cùng nhau tìm hiểu ngay bây giờ.

Union sql là gì?

Union trong sql là một mệnh đề hay còn gọi là toán tử trong sql. Theo đó, khi sử dụng lệnh union trong sql, cho phép người dùng kết hợp kết quả của hai hoặc nhiều lệnh SELECT mà không trả về bất cứ bản ghi trùng lặp nào (do chức năng của lệnh này là kết hợp lai các dữ liệu có cấu trúc giống nhau từ nhiều bảng thành một nhưng loại bỏ các cơ sở dữ liệu trùng nhau).

Union trong sql, câu lệnh phổ biến thường gặp đối với cơ sở dữ liệu.

Đối với lệnh Union, ta cần phân biệt với lệnh Union All hai lệnh này chỉ cần gõ sai lệnh thì chức năng của nó đã khác nhau. Lệnh Union All các bạn sẽ nghiên cứu ở những mục bên dưới.

Điều kiện để sử dụng được lệnh union in sql là mỗi lệnh SELECT phải:

+ Có số cột giống nhau.

+ Có cùng số biểu thức của các cột.

+ Cùng kiểu dữ liệu.

+ Cột tương ứng phải theo đúng thứ tự (không phải phải cùng chiều dài).

Cú pháp lệnh union trong sql

Cú pháp lệnh sql union cơ bản được thực hiện như sau:

SELECT cot1 [, cot2 ]

FROM bang1 [, bang2 ]

[WHERE dieu_kien]

UNION

SELECT cot1 [, cot2 ]

FROM bang1 [, bang2 ]

[WHERE dieu_kien]

Lưu ý: dieu_kien ở đây có thể là bất cứ biểu thức vào tùy vào lựa chọn của cá nhân bạn.

Ví dụ về union in sql

Sql là tên viết tắt tiếng Anh của Structured Query Language, là ngôn ngữ thường dùng trong doanh nghiệp, bệnh viện hay khách sạn,… để quản lý nhân viên hay khách hàng. Sql giúp quản lý dữ liệu hiệu quả và thực hiện các thao tác tìm kiếm, chỉnh sửa, bổ sung nhanh hơn. Sau đây là một ví dụ điển hình về union trong sql trong quản lý nhân sự của một doanh nghiệp:

Ta cần sử dụng lệnh union trong sql để kết hợp hai bảng dữ liệu nhân viên và tiền thưởng để tính tiền thưởng cho nhân viên, ta sẽ làm như sau:

– Ta có hai bảng ban đầu là bảng 1 là NHANVIEN và bảng 2 là TIENTHUONG:

Bảng 1:NHANVIEN

IDTENTUOIDIACHILUONG
1Trinh31Binhdinh2000.00
2Diep27Hanoi1500.00
3Lai25Hanam2000.00
4Thuy25Hue6500.00
5Nam28Danang8500.00
6Lan29HCM4500.00
7Dao21Hanoi10000.00

Bảng 2:TIENTHUONG

TT_IDNGAYNHANVIEN_IDSOTIEN
1022019 – 01- 08 00:00:0033000
| 1002019 – 01 – 08 00:00:0031500
1012019 – 02 – 20 00:00:0021560
1032018 – 12 – 20 00:00:0042060

– Thực hiện thao tác kết hợp hai bảng này trong lệnh SELECT như sau:

SQL> SELECT ID, TEN, SOTIEN, NGAY

FROM NHANVIEN

LEFT JOIN TIENTHUONG

ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID

UNION

SELECT ID, TEN, SOTIEN, NGAY

FROM NHANVIEN

RIGHT JOIN TIENTHUONG

ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID;

– Kết quả được trả về như sau:

IDTENSOTIENNGAY
1TrinhNULLNULL
2Diep15602019 – 02 – 20 00:00:00
3Lai30002019 – 01- 08 00:00:00
3Lai15002019 – 01- 08 00:00:00
4Thuy20602018 – 12 – 20 00:00:00
5NamNULLNULL
6LanNULLNULL
7DaoNULLNULL

Từ kết quả hiển thị như trên, ta có thể thấy không có sự trùng lặp dữ liệu nào trong kết quả trả về.

Mệnh đề Union All trong SQL

Mệnh đề Union All trong SQL cũng dùng để kết hợp các dữ liệu có cấu trúc giống nhau từ hai hay nhiều bảng thành một bảng nhưng không loại bỏ các dữ liệu trùng nhau.

Cú pháp mệnh đề Union All

Cú pháp mệnh đề Union All cũng giống với mệnh đề UNION nhưng thay bằng gõ UNION ta sẽ gõ bằng UNION ALL và tất nhiên hai lệnh này cũng sẽ có chức năng khác nhau. Cú pháp cơ bản như sau:

SELECT cot1 [, cot2 ]

FROM bang1 [, bang2 ]

[WHERE dieu_kien]

UNION ALL

SELECT cot1 [, cot2 ]

FROM bang1 [, bang2 ]

[WHERE dieu_kien]

Ví dụ về mệnh đề Union All

Cũng lấy lại ví dụ về hai bảng nhân viên và tiền thưởng như trên nhưng khi sử dụng 2 lệnh khác nhau ta sẽ thấy ra kết quả khác nhau giữa UNION và UNION ALL.

– Kết hợp hai bảng trên trong lệnh SELECT được thực hiện như sau:

SQL> SELECT ID, TEN, SOTIEN, NGAY

FROM NHANVIEN

LEFT JOIN TIENTHUONG

ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID

UNION ALL

SELECT ID, TEN, SOTIEN, NGAY

FROM NHANVIEN

RIGHT JOIN TIENTHUONG

ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID;

– Kết quả được trả về khi sử dụng lệnh UNION ALL sẽ khác với khi sử dụng lệnh UNION như sau:

IDTENSOTIENNGAY
1TrinhNULLNULL
2Diep15602019 – 02 – 20 00:00:00
3Lai3000019 – 01- 08 00:00:00
3Lai1500019 – 01- 08 00:00:00
4Thuy2060 |2018 – 12 – 20 00:00:00
5NamNULLNULL
6LanNULLNULL
7DaoNULLNULL
3Lai3000019 – 01- 08 00:00:00
3Lai1500019 – 01- 08 00:00:00
2Diep15602019 – 01- 08 00:00:00
4Thuy20602018 – 12 – 20 00:00:0

Ta sẽ thấy có sự trùng lặp nhau, đã xuất hiện lại dữ liệu của nhân viên Lai, Diep, Thuy ở cuối hàng, nó không loại bỏ sự trùng lặp nhau.

Ngoài ra, chúng ta cũng có thể sử dụng hai mệnh đề khác tương tự như mệnh đề UNION đó là mệnh đề INTERSECT trong SQL và mệnh đề EXCEPT trong SQL. Tùy vào sở thích và kỹ năng mà từng người có thể lựa chọn để hoàn thành tốt công việc của mình.

Như vậy, bài viết trên đã giúp bạn biết cách truy vấn cú pháp câu lệnh union trong sql cũng như lệnh union all. Hy vọng những hướng dẫn này giúp bạn nâng cao kiến thức và kỹ năng trong việc sử dụng sql trong quản lý doanh nghiệp, khách sạn, nhà hàng, bệnh viện,… được nhanh và hiệu quả hơn.

Để thành thạo hơn trong sử dụng ngôn ngữ sql, cũng như cách thức sử dụng toán tử trong matlab. Bạn nên tham gia một khóa học chuyên sâu, theo đó các giảng viên, người hướng dẫn sẽ hướng dẫn bạn tận tình từ kỹ năng đơn giản đến nâng cao.

Thảo Larskanis

@Thảo Larskanis

Lĩnh vực công nghệ thông tin, đặc biệt là cấu trúc dữ liệu ngày càng quan trọng và trở nên cần thiết hơn với nhiều doanh nghiệp. Nhận thấy rõ được tầm quan trọng của SQL, Thảo Nguyễn - người đã có nhiều năm học tập và làm việc trong lĩnh vực công nghệ thông tin đã quyết định thành lập một website chia sẻ kiến thức cũng như kinh nghiệm của bản thân về lĩnh vực SQL đến cho những bạn có đam mê và muốn hiểu rõ hơn về lĩnh vực này.