DBMS hỗ trợ các toán tử tập hợp quan hệ. Các toán tử chính là union (hợp), intersection (giao), và set difference (hiệu). Tất cả có thể triển khai trong DBMS bằng các truy vấn khác nhau.
Các toán tử tập hợp quan hệ chi tiết với ví dụ cho trước:
| Student_Number | Student_Name | Student_Marks |
|---|---|---|
| 1 | John | 95 |
| 2 | Mary | 80 |
| 3 | Damon | 57 |
| Student_Number | Student_Name | Student_Marks |
|---|---|---|
| 2 | Mary | 50 |
| 3 | Damon | 98 |
| 6 | Matt | 45 |
Hợp (Union)
Hợp kết hợp hai kết quả khác nhau từ truy vấn thành một kết quả duy nhất dưới dạng bảng. Tuy nhiên, các kết quả phải tương tự nếu áp dụng union. Union loại bỏ tất cả bản sao (duplicates) và chỉ hiển thị giá trị riêng biệt. Nếu cần giá trị trùng lặp trong kết quả, dùng UNION ALL.
Ví dụ của union:
Select Student_Name from Art_Students UNION Select Student_Name from Dance_Students
Sẽ hiển thị tên tất cả sinh viên trong bảng Art_Students và Dance_Students: John, Mary, Damon, Matt.
Giao (Intersection)
Toán tử giao cho các giá trị dữ liệu chung giữa hai tập dữ liệu được giao. Hai tập dữ liệu phải tương tự để toán tử giao hoạt động. Giao cũng loại bỏ tất cả bản sao trước khi hiển thị kết quả.
Ví dụ của giao:
Select Student_Name from Art_Students INTERSECT Select Student_Name from Dance_Students
Sẽ hiển thị tên sinh viên có trong cả Art_Students và Dance_Students, tức là sinh viên học cả mỹ thuật và nhảy. Đó là Mary và Damon.
Hiệu (Set difference)
Toán tử hiệu lấy hai tập hợp và trả về các giá trị ở tập đầu tiên nhưng không ở tập thứ hai.
Ví dụ của hiệu:
Select Student_Name from Art_Students MINUS Select Student_Name from Dance_Students
Sẽ hiển thị tên tất cả sinh viên trong Art_Students nhưng không trong Dance_Students, tức là sinh viên học mỹ thuật nhưng không học nhảy. Đó là John.