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

Oracle Joins (Sql Joins) là gì?

Đôi khi bạn cần hiển thị dữ liệu từ nhiều bảng. Để thực hiện, bạn cần liên kết một bảng này với một bảng khác, có nhiều cách khác nhau để chúng ta có thể lấy dữ liệu từ Nhiều bảng, ở đây tôi sẽ tập trung vào Oracle Joins với các ví dụ. . Tôi sẽ giải thích phép nối bên trong, phép nối ngoài, phép nối chéo, phép nối tự nhiên, phép nối Descartes với các ví dụ

Oracle tham gia

Một Oracle tham gia là một truy vấn kết hợp các hàng từ hai hoặc nhiều bảng tiên tri.

Oracle thực hiện phép nối bất cứ khi nào nhiều bảng xuất hiện trong mệnh đề FROM. Để nối hai bảng, bạn cần xác định các cột chung có liên quan giữa hai bảng. Trong mệnh đề WHERE, bạn xác định mối quan hệ giữa các bảng được liệt kê trong mệnh đề FROM.

Một số nguyên tắc về tham gia Oracle (tham gia Sql)

1) khi viết câu lệnh select nối các bảng, bạn nên đặt trước tên cột với tên bảng để làm rõ ràng.

2) Để nối m bảng, chúng ta cần ít nhất m-1 điều kiện

3) Chúng ta có thể sử dụng bí danh bảng cho tên bảng nếu tên bảng dài. Bảng trông mã ngắn hơn và do đó ít bộ nhớ hơn

4) Nếu bạn không sử dụng tên_bảng hoặc bí danh bảng trong khi chọn cột và Nếu nhiều bảng có cùng tên cột, thì chúng ta nên chỉ định tên_bảng cho cột phổ biến trên các bảng

Tham gia bên trong

Toán tử phổ biến nhất được sử dụng để liên quan hai bảng là toán tử bình đẳng (=). Đây được gọi là tham gia bình đẳng hoặc e quijoin . Tham gia đơn giản này còn được gọi là tham gia bên trong

Ví dụ tham gia bên trong Oracle

Syntax
Select tab1.col,tab2.col
from tab1 ,tab2
where tab1.col=tab2.col

SELECT EMP.EMPNO,EMP.ENAME, DEPT.DEPTNO,DEPT.DNAME
FROM EMP , DEPT
where EMP. DEPTNO= DEPT. DEPTNO;

Để thực hiện một phép nối từ ba bảng trở lên, Oracle nối hai bảng dựa trên điều kiện nối, sau đó nối kết quả với một bảng khác, dựa trên điều kiện nối và lặp lại cho đến khi tất cả các bảng được nối.

Kết hợp phức hợp

Có một hoặc nhiều điều kiện được thêm vào mệnh đề WHERE. Ví dụ:nếu bạn quan tâm đến tất cả các bộ phận và các vị trí của họ bên ngoài Vương quốc Anh, hãy sử dụng

SELECT LOCATIONS.LOCATION_ID, CITY, DEPARTMENT_NAME
FROM LOCATIONS, DEPARTMENTS
WHERE LOCATIONS.LOCATION_ID = DEPARTMENTS.LOCATION_ID
AND COUNTRY_ID != 'UK';

Không tham gia

Một không tương đương là điều kiện tham gia khác với toán tử bình đẳng.

Nó là một câu lệnh nối bên trong sử dụng một phép toán không bằng nhau (ví dụ:<>,>, <, =, BETWEEN, v.v.) để so khớp các hàng từ các bảng khác nhau

SELECT e.ename, e.sal, s.grade
FROM  emp e, sal_grade s
WHERE e.sal BETWEEN s.low_sal AND s.high_sal;

Sản phẩm Descartes hoặc Tham gia Descartes hoặc Tham gia chéo

- Phép nối Đề-các (hoặc tích Đề-các) (hoặc Phép nối chéo) xảy ra khi dữ liệu được chọn từ hai hoặc nhiều bảng và điều kiện nối được xác định hoặc không có mối quan hệ chung nào được xác định trong mệnh đề WHERE

-Nếu một phép nối được thực hiện và không có điều kiện nối nào được chỉ định, thì kết quả là tích Đề-các. Tích Descartes là tập kết quả là tích của tổng số hàng của hai bảng. Nếu bảng “P” có 100 hàng và bảng “Q” có 100 hàng và tích Descartes được phát triển, tập kết quả thu được sẽ có 10000 hàng. Nếu một truy vấn kết hợp ba bảng trở lên, trình tối ưu hóa có thể tìm cách chọn thứ tự kết hợp loại trừ sản phẩm Descartes, nhưng không tính vào thứ tự đó.

SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME  FROM EMP   , DEPT ;
or
SELECT EMPNO,ENAME, DEPT.DEPTNO,DNAME  FROM EMP   cross join DEPT ;

Tham gia bên ngoài

Các phép nối bên trong mà chúng ta đã thấy, trả về các hàng phù hợp từ hai hoặc nhiều bảng theo điều kiện nối. Cơ chế kết hợp bên ngoài trả về dữ liệu từ một bảng ngay cả khi không có hàng tương ứng trong bảng kết hợp.

Có ba phép nối bên ngoài

a) Tham gia bên ngoài bên trái hoặc Tham gia bên trái

b) Tham gia bên ngoài bên phải hoặc Tham gia bên phải

c) Tham gia đầy đủ bên ngoài hoặc tham gia đầy đủ

Tham gia bên ngoài bên trái

trả về các hàng phù hợp từ cả hai bảng cũng như các hàng chưa khớp từ bảng ở bên trái của mệnh đề kết hợp.

LEFT OUTER JOIN sẽ trả về tất cả các bản ghi từ bảng bên trái và chỉ những bản ghi từ bảng bên phải giao với bảng bên phải

Đây là ví dụ về phép tham gia bên ngoài Oracle Left ngoài

Example:
select empno,ename,emp.deptno,dname
from emp
LEFT OUTER JOIN dept
on emp.deptno=dept.deptno;

cú pháp tham gia oracle (+) :Trong cơ sở dữ liệu Oracle, chúng ta cũng có thể sử dụng cú pháp dấu cộng cho phép nối bên trái bên trái. Trong trường hợp này, phép nối cộng nằm ở phía bên phải của phương trình.

Example:
select empno,ename,emp.deptno,dname
from emp ,dept where emp.deptno=dept.deptno(+) ;

Tham gia bên ngoài bên phải

trả về các hàng phù hợp từ cả hai bảng cũng như các hàng chưa khớp từ bảng ở bên phải của mệnh đề kết hợp.

Đây là ví dụ cho phép tham gia bên ngoài của Oracle Right

Example:
select empno,ename,dept.deptno,dname
from emp
right OUTER JOIN dept
on emp.deptno=dept.deptno;

cú pháp tham gia oracle (+) :Trong cơ sở dữ liệu Oracle, chúng ta cũng có thể sử dụng cú pháp dấu cộng cho RIGHT OUTER JOIN. Trong trường hợp này, phép nối phải được chỉ ra khi dấu cộng ở bên trái của phương trình.

Example:
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno(+)=dept.deptno ;

Tham gia toàn bộ bên ngoài

Kiểu liên kết này trả về tất cả các hàng từ bảng bên TRÁI và bảng bên phải có giá trị rỗng ở vị trí mà điều kiện kết hợp không được đáp ứng

Đây là ví dụ cho Oracle Full Outer Join

select empno,ename,dept.deptno,dname
from emp
full OUTER JOIN dept
on emp.deptno=dept.deptno;

Truy vấn này sẽ trả về tất cả các hàng từ cả hai bảng. Việc sử dụng cú pháp Oracle sử dụng E.DEPT_ID (+) =D.DEPT_ID (+) là không thể vì dấu (+) chỉ có thể tham chiếu đến một bảng. Chúng ta phải sử dụng Union để đạt được điều tương tự bằng cách sử dụng dấu +

select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno=dept.deptno(+)
union
select empno,ename,dept.deptno,dname
from emp ,dept where emp.deptno(+)=dept.deptno;

Một số RDBMS không hỗ trợ điều khoản Kết nối bên ngoài đầy đủ, sau đó chúng tôi có thể sử dụng bên dưới để đề cập đến điều đó

select empno,ename,dept.deptno,dname
from emp
left OUTER JOIN dept
on emp.deptno=dept.deptno
union
select empno,ename,dept.deptno,dname
from emp
right OUTER JOIN dept
on emp.deptno=dept.deptno;


THAM GIA TỰ NHIÊN

Phép nối tự nhiên chỉ định rằng phép nối liên quan đến tất cả các cột có cùng tên trên hai bảng.

Về cơ bản, nó so sánh các cột chung của cả hai bảng với nhau. Người ta nên kiểm tra xem các cột chung có tồn tại trong cả hai bảng hay không trước khi thực hiện một phép nối tự nhiên.

Example
SELECT EMP_ID,EMP_NAME, DEPT_ID,DEPARTMENT_NAME  FROM EMP  NATURAL JOIN DEPT;

Ở đây dept_id là cùng một cột giữa các bảng emp và dept

Tham gia tự nhiên có thể tham gia nhiều hơn hai bảng

Hy vọng bạn thích bài đăng này trên Oracle tham gia với các ví dụ.

Các bài viết có liên quan
Hướng dẫn sql Oracle

Truy vấn con Oracle Sql

Toán tử tập hợp Oracle

Chế độ xem Oracle

cách viết truy vấn sql

Cột Tự động tăng dần - Trình tự

Tham gia chéo trong Oracle

tự tham gia vào oracle với các ví dụ

Ví dụ về cú pháp nối oracle

Hash Tham gia trong Oracle


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách giải quyết ORA-28000 tài khoản bị khóa

  2. Oracle 11g nhận tất cả các lần xuất hiện phù hợp bằng một biểu thức chính quy

  3. Sử dụng hàm to_date của Oracle cho chuỗi ngày với mili giây

  4. Cuộc phiêu lưu mua hàng nhẹ nhàng

  5. Chuyển đổi Dấu thời gian Unix thành Giá trị ngày tháng trong Oracle