Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Toán tử SET trong SQL

Toán tử được sử dụng để nối hoặc kết hợp hai truy vấn không ai khác chính là toán tử SET. Các toán tử được phân loại thành các toán tử SET như sau:

  1. Nhà điều hành UNION.
  2. Nhà điều hành của
  3. UNION ALL.
  4. Toán tử INTERSECT.
  5. Nhà điều hành MINUS.

Các quy tắc cần tuân thủ để vận hành bằng Toán tử SET như sau:

  • Số lượng cột và thứ tự các cột phải giống nhau.
  • Loại dữ liệu phải tương thích.

Hãy hiểu từng Toán tử SET bằng các ví dụ.

Hãy xem xét các bảng sau cùng với các bản ghi đã cho.

Bảng 1:Nhân viên

EMPLOYEEID FIRST_NAME LAST_NAME TIỀN LƯƠNG THÀNH PHỐ KHOA MANAGERID WORKING_HOURS GIỚI TÍNH
1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1 12 F
1002 VAIBHAV SHARMA 60000 NOIDA ORACLE 1 9 M
1003 NIKHIL VANI 50000 JAIPUR FMW 2 10 M
2001 PRACHI SHARMA 55500 ĐIỀU CHỈNH ORACLE 1 10 F
2002 BHAVESH JAIN 65500 PUNE FMW 2 12 M
2003 RUCHIKA JAIN 50000 MUMBAI KIỂM TRA 4 9 F
3001 PRANOTI CHIA SẺ 55500 PUNE JAVA 3 9 F
3002 ANUJA Ở ĐÂU 50500 JAIPUR FMW 2 9 F
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3 12 M
4001 RAJESH MỤC TIÊU 60500 MUMBAI KIỂM TRA 4 10 M

Bảng 2:Nhân viên.

EMPLOYEEID FIRST_NAME LAST_NAME TIỀN LƯƠNG THÀNH PHỐ KHOA MANAGERID WORKING_HOURS GIỚI TÍNH
1001 Vaibhav Sharma 65000 PUNE ORACLE 1 12 M
1002 Nikhil Vani 60000 NOIDA ORACLE 1 9 M
1003 Vaibhavi Mishra 50000 JAIPUR FMW 2 10 F
2001 Ruchika Jain 55500 ĐIỀU CHỈNH ORACLE 1 10 F
2002 Thực tế Sharma 65500 PUNE FMW 2 12 F
2003 Bhavesh Jain 50000 MUMBAI KIỂM TRA 4 9 M
3001 Deepam Jauhari 55500 PUNE JAVA 3 9 M
3002 ANUJA Ở ĐÂU 50500 JAIPUR FMW 2 9 F
3003 Pranoti Shende 58500 MUMBAI JAVA 3 12 F
4001 RAJESH MỤC TIÊU 60500 MUMBAI KIỂM TRA 4 10 M

Bảng 3:Người quản lý.

Managerid manager_name manager_department
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra KIỂM TRA

Bảng 4:Người quản lý1.

Managerid manager_name manager_department
1 Ishita Agrawal ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Paul Oakip KIỂM TRA

Nhà điều hành UNION

Toán tử UNION là Toán tử đầu tiên được sử dụng để hợp nhất hoặc kết hợp hai hoặc nhiều câu lệnh SELECT. Nếu và chỉ khi số lượng cột và thứ tự các cột giống nhau.

Các hàng trùng lặp sẽ không được xem xét trong kết quả thu được sau khi thực hiện thao tác UNION.

Cú pháp cho hoạt động UNION như sau,

SELECT * FROM TABLE_NAME1 UNION SELECT * FROM TABLE_NAME2;

Ví dụ 1: Thực thi truy vấn để thực hiện thao tác UNION giữa bảng Nhân viên và bảng Nhân viên.

SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE;

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên truy xuất dữ liệu từ nhân viên và truy vấn SELECT thứ hai lấy dữ liệu từ dữ liệu nhân viên và hoạt động UNION được thực hiện trên cả hai truy vấn SELECT.

Thao tác UNION sẽ loại bỏ các hàng trùng lặp giữa cả hai bảng. Kết quả sau được hiển thị là:

Cả hai bản ghi bảng đều được hiển thị ngoại trừ các bản ghi trùng lặp.

Ví dụ 2: Thực thi truy vấn để thực hiện thao tác UNION giữa bảng Nhân viên và bảng Nhân viên. Nhưng chỉ hiển thị hồ sơ của những nhân viên đó từ bảng nhân viên thuộc thành phố Mumbai và từ bảng nhân viên chỉ hiển thị hồ sơ của những nhân viên có mức lương nhân viên lớn hơn 50000 và dưới 60000.

SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION SELECT * FROM EMPLOYEE WHERE SALARY > 50000 AND SALARY < 60000;

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên chỉ tìm nạp những bản ghi có nhân viên thuộc thành phố Mumbai từ bảng Nhân viên. Và thực hiện thao tác UNION với truy vấn SELECT thứ hai chỉ tìm nạp những bản ghi có mức lương của nhân viên lớn hơn 50000 nhưng dưới 60000 từ bảng nhân viên. Thao tác UNION sẽ loại bỏ các hàng trùng lặp giữa cả hai bảng.

Kết quả sau được hiển thị dưới dạng:

Cả hai bản ghi bảng đều được hiển thị ngoại trừ các bản ghi trùng lặp.

Ví dụ 3: Thực thi truy vấn để thực hiện thao tác UNION giữa bảng Nhân viên và bảng Nhân viên. Chúng tôi chỉ muốn các bản ghi đó từ bảng Nhân viên có thành phố nhân viên thuộc về 'Pune' và 'Jaipur'.

SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'JAIPUR') UNION SELECT * FROM EMPLOYEE;

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên tìm nạp những bản ghi có nhân viên thuộc thành phố 'Pune' và 'Jaipur' từ bảng Nhân viên. Hoạt động UNION được thực hiện với các bản ghi được truy xuất từ ​​truy vấn SELECT thứ hai từ nhân viên bảng.

Thao tác UNION sẽ loại bỏ các hàng trùng lặp giữa cả hai bảng. Kết quả sau được hiển thị dưới dạng:

Như tất cả chúng ta có thể thấy, kết quả năm hồ sơ đầu tiên là những nhân viên thuộc thành phố Pune hoặc Jaipur. Và các bản ghi còn lại là từ bảng nhân viên, truy vấn CHỌN thứ hai.

Cả hai bản ghi bảng đều được hiển thị ngoại trừ các bản ghi trùng lặp.

Ví dụ 4: Thực thi truy vấn để thực hiện thao tác UNION giữa bảng Nhân viên và bảng Nhân viên. Chúng tôi chỉ muốn các bản ghi đó từ bảng Nhân viên có tên nhân viên bắt đầu bằng V.

SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE WHERE FIRST_NAME LIKE 'V%';

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên tìm nạp tất cả các bản ghi từ bảng Nhân viên. Hoạt động UNION được thực hiện với các bản ghi được truy xuất từ ​​truy vấn SELECT thứ hai từ nhân viên bảng có tên bắt đầu bằng 'V'.

Thao tác UNION sẽ loại bỏ các hàng trùng lặp giữa cả hai bảng. Kết quả sau được hiển thị là:

Như tất cả chúng ta có thể, 10 kết quả đầu tiên là từ bảng Nhân viên và phần còn lại là từ bảng Nhân viên có tên nhân viên bắt đầu bằng 'V'.

Ví dụ 5: Thực thi một truy vấn để thực hiện thao tác UNION giữa bảng Manager và bảng Manager1.

SELECT * FROM MANAGER UNION SELECT * FROM MANAGER1;

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên truy xuất dữ liệu từ Trình quản lý và truy vấn SELECT thứ hai lấy dữ liệu từ dữ liệu manager1 và hoạt động UNION được thực hiện trên cả hai truy vấn SELECT.

Thao tác UNION sẽ loại bỏ các hàng trùng lặp giữa cả hai bảng. Kết quả sau được hiển thị dưới dạng:

Cả hai bản ghi bảng đều được hiển thị ngoại trừ các bản ghi trùng lặp.

LIÊN KẾT TẤT CẢ Nhà điều hành

Toán tử UNION ALL kết hợp tất cả dữ liệu từ cả hai truy vấn. Trong toán tử UNION, các bản ghi trùng lặp không được xem xét trong kết quả, nhưng UNION ALL được coi là các bản ghi trùng lặp trong kết quả thu được sau khi thao tác UNION ALL được thực hiện.

Cú pháp cho thao tác UNION ALL như sau,

SELECT * FROM TABLE_NAME1 UNION ALL SELECT * FROM TABLE_NAME2;

Ví dụ 1: Thực thi truy vấn để thực hiện thao tác UNION ALL giữa bảng Nhân viên và bảng Nhân viên.

SELECT * FROM EMPLOYEES UNION ALL SELECT * FROM EMPLOYEE;

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên tìm nạp dữ liệu từ các nhân viên và thực hiện hoạt động UNION ALL với dữ liệu được tìm nạp bởi truy vấn SELECT thứ hai lấy dữ liệu từ bảng nhân viên.

Kết quả sau được hiển thị dưới dạng:

Tất cả các bản ghi sẽ được hiển thị từ cả hai bảng Nhân viên và Nhân viên, các bản ghi trùng lặp cũng được hiển thị khi chúng tôi thực hiện thao tác UNION ALL.

Ví dụ 2: Thực thi truy vấn để thực hiện thao tác UNION ALL giữa bảng Nhân viên và bảng Nhân viên. Nhưng chỉ hiển thị hồ sơ của những nhân viên đó từ bảng nhân viên thuộc thành phố Mumbai. Từ bảng nhân viên, chỉ những bản ghi nhân viên có mức lương của nhân viên là 60500 và thành phố là "Mumbai".

SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION ALL SELECT * FROM EMPLOYEE WHERE SALARY = 60500 AND CITY = 'MUMBAI';

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên chỉ tìm nạp những bản ghi có nhân viên thuộc thành phố Mumbai từ bảng Nhân viên. Và thực hiện thao tác UNION ALL với truy vấn SELECT thứ hai chỉ tìm nạp những bản ghi có mức lương nhân viên là 60500 và thành phố là 'Mumbai' từ bảng nhân viên.

Kết quả sau được hiển thị dưới dạng:

Cả hai bản ghi bảng đều được hiển thị, bao gồm cả các bản ghi trùng lặp khi chúng tôi thực hiện UNION ALL hoạt động.

Ví dụ 3: Thực thi truy vấn để thực hiện thao tác UNION giữa bảng Nhân viên và bảng Nhân viên. Chúng tôi chỉ muốn các bản ghi đó từ bảng Nhân viên có thành phố nhân viên thuộc về 'Pune', 'Mumbai' và 'Jaipur'.

SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'MUMBAI', 'JAIPUR') UNION ALL SELECT * FROM EMPLOYEE;

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên tìm nạp những bản ghi có nhân viên thuộc thành phố 'Pune', 'Mumbai' và 'Jaipur' từ bảng Nhân viên. Hoạt động UNION ALL được thực hiện với các bản ghi được truy xuất từ ​​truy vấn SELECT thứ hai từ nhân viên bảng.

Kết quả sau được hiển thị dưới dạng:

Cả hai bản ghi bảng đều được hiển thị, bao gồm cả các bản ghi trùng lặp khi chúng tôi thực hiện UNION ALL hoạt động.

Ví dụ 4: Thực thi một truy vấn để thực hiện UNION ALL hoạt động giữa bảng Manager và bảng Manager1.

SELECT * FROM MANAGER UNION ALL SELECT * FROM MANAGER1;

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên tìm nạp dữ liệu từ Manager và thực hiện UNION ALL hoạt động với dữ liệu được tìm nạp bởi truy vấn SELECT thứ hai truy xuất dữ liệu từ bảng manager1.

Kết quả sau được hiển thị là:

Tất cả các bản ghi sẽ được hiển thị từ cả hai bảng Manager và Manager1; các bản ghi trùng lặp được hiển thị khi chúng tôi thực hiện UNION ALL hoạt động.

Toán tử INTERSECT

Toán tử Intersect được sử dụng để kết hợp hai hoặc nhiều câu lệnh SELECT, nhưng nó chỉ hiển thị dữ liệu tương tự như câu lệnh SELECT.

Cú pháp cho hoạt động INTERSECT như sau,

SELECT * FROM TABLE_NAME1 INTERSECT SELECT * FROM TABLE_NAME2;

Ví dụ 1: Thực thi truy vấn để thực hiện thao tác INTERSECT giữa bảng Nhân viên và bảng Nhân viên.

SELECT * FROM EMPLOYEES INTERSECT SELECT * FROM EMPLOYEE;

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên tìm nạp dữ liệu từ nhân viên và thực hiện hoạt động INTERSECT với dữ liệu được tìm nạp bởi truy vấn SELECT thứ hai lấy dữ liệu từ bảng nhân viên.

Kết quả sau được hiển thị dưới dạng:

Chỉ các bản ghi tương tự sẽ được hiển thị từ cả hai bảng, khi chúng tôi thực hiện thao tác INTERSECT giữa bảng Nhân viên và bảng Nhân viên.

Ví dụ 2: Thực thi truy vấn để thực hiện thao tác INTERSECT giữa bảng Manager và bảng Manager1.

SELECT * FROM MANAGER INTERSECT SELECT * FROM MANAGER1;

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên tìm nạp dữ liệu từ Manager và thực hiện thao tác INTERSECT với dữ liệu được tìm nạp bởi truy vấn SELECT thứ hai truy xuất dữ liệu từ bảng Manager1.

Kết quả sau được hiển thị dưới dạng:

Chỉ các bản ghi tương tự sẽ được hiển thị từ cả hai bảng, khi chúng tôi thực hiện thao tác INTERSECT giữa bảng Trình quản lý và bảng Trình quản lý1.

MINUS Nhà khai thác

Toán tử MINUS được sử dụng để trả về các hàng có trong truy vấn đầu tiên nhưng không có trong phần còn lại của các truy vấn mà không có bản sao.

Cú pháp cho phép toán MINUS như sau.

SELECT * FROM TABLE_NAME1 EXCEPT SELECT * FROM TABLE_NAME2;

Lưu ý: Từ khóa MINUS chỉ được hỗ trợ trong cơ sở dữ liệu ORACLE. Chúng tôi có thể sử dụng từ khóa EXCEPT cho các cơ sở dữ liệu khác để thực hiện thao tác tương tự.

Ví dụ 1: Thực thi một truy vấn để thực hiện thao tác MINUS giữa bảng Nhân viên và bảng Nhân viên.

SELECT * FROM EMPLOYEES EXCEPT SELECT * FROM EMPLOYEE;

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên tìm nạp dữ liệu từ các nhân viên và thực hiện thao tác MINUS với dữ liệu được tìm nạp bởi truy vấn SELECT thứ hai lấy dữ liệu từ bảng nhân viên.

Kết quả sau được hiển thị dưới dạng:

Chỉ các bản ghi chưa khớp sẽ được hiển thị từ cả hai bảng, khi chúng tôi thực hiện phép toán TRỪ giữa bảng Nhân viên và bảng Nhân viên.

Ví dụ 2: Thực thi một truy vấn để thực hiện MINUS hoạt động giữa bảng Trình quản lý và bảng Trình quản lý1.

SELECT * FROM MANAGER EXCEPT SELECT * FROM MANAGER1;

Trong truy vấn trên, chúng tôi đã sử dụng hai truy vấn SELECT. Truy vấn SELECT đầu tiên tìm nạp dữ liệu từ Manager và thực hiện thao tác MINUS với dữ liệu được tìm nạp bởi truy vấn SELECT thứ hai lấy dữ liệu từ bảng Manager1.

Kết quả sau được hiển thị dưới dạng:

Chỉ các bản ghi chưa khớp sẽ được hiển thị từ cả hai bảng, vì chúng tôi đã thực hiện MINUS thao tác giữa bảng Trình quản lý và bảng Trình quản lý1.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ODBC là gì?

  2. Hiểu biết về làm lại nhóm nhật ký so với tệp và thành viên

  3. Cách sử dụng thực tế của hàm COALESCE trong SQL

  4. Hiểu thời gian của người điều hành kế hoạch thực thi

  5. Hướng dẫn về các chức năng của PubNub