5.1.KẾT HỢP DỮ LIỆU TỪ NHIỀU BẢNG

Một phần của tài liệu SQL và PL/SQL Cơ bản Oracle cơ bản (Trang 41 - 44)

5.1.1. Mối liên kết tương đương

Mối liên kết tương đương được thể hiện trong mệnh đểWHERE.

Để liên kết trong mệnh đểWHERE phải chỉ rõ tên của các column và mệnh đềđược đặt tương đương. Ví dụ:

emp.deptno =dept.deptno

Các column trùng tên phải được chỉ rõ column đó nằm ở bảng nảo thông qua tên hoặc qua alias. Tên trùng này có thểđặt trong các mệnh đề khác nhưSELECT, ORDER BY..

Ví dụ:

SELECT DEPT.DEPTNO, ENAME,JOB, DNAME FROM EMP, DEPT FROM EMP, DEPT

WHERE EMP.DEPTNO = DEPT.DEPTNO ORDER BY DEPT.DEPTNO; ORDER BY DEPT.DEPTNO;

SELECT A.DEPTNO, A.ENAME, A.JOB, B.DNAME FROM EMP A, DEPT B FROM EMP A, DEPT B

WHERE A.DEPTNO = B.DEPTNO ORDER BY A.DEPTNO; ORDER BY A.DEPTNO;

5.1.2. Mối liên kết không tương đương

Mối liên kết tương đương được thể hiện trong mệnh đểWHERE.

Để liên kết trong mệnh đểWHERE phải chỉ rõ tên của các column và mệnh đềđược đặt không tương đương. Ví dụ:

WHERE E.SAL BETWEEN S. LOSAL AND S.HISAL

Các column trùng tên phải được chỉ rõ column đó nằm ở bảng nào thông qua tên hoặc qua alias. Tên trùng này có thểđặt trong các mệnh đề khác nhưSELECT, ORDER BY..

Ví dụ:

SELECT E.ENAME,E.JOB, S.GRADE FROM EMP E, SALGRADE S FROM EMP E, SALGRADE S

WHERE E.SAL BETWEEN S. LOSAL AND S.HISAL;

Chú ý: Điu kin liên kết đúng là s các bng - 1 = s các điu kin liên kết

5.1.3. Mối liên kết cộng

Mối liên kết cộng trả về cả các giá trịNULL trong biểu thức điều kiện. Dấu (+) đểở vế nào tính thêm các giá trịNULLở vếđó.

Một câu lệnh select chỉđặt được 1 mối liên kết cộng, dấu (+) đặt ở bên phải column liên kết

Oracle cơ bản - SQL và PL/SQL

Trong mệnh đềWHERE của mối liên kết cộng không được dùng toán tửIN hoặc ORđể nối các điều kiện liên kết khác.

Ví dụ:

SELECT E.ENAME, D.DEPTNO, D.DNAME FROM EMP E, DEPT D FROM EMP E, DEPT D

WHERE E.DEPTNO (+)=D.DEPTNO AND D.DEPTNO IN (30, 40); AND D.DEPTNO IN (30, 40); ENAME DEPTNO DNAME

BLAKE 30 SALES MARTIN 30 SALES ALLEN 30 SALES TURNER 30 SALES JAMES 30 SALES WARD 30 SALES 40 OPERATIONS 5.1.4. Liên kết của bảng với chính nó (tự thân) Có thể liên kết bảng với chính nó bằng cách đặt alias. Ví du:

Select e.ename emp_name, e.sal emp_sal,

m.ename mgr_name, m.sal mgr_sal from emp e, emp m

where e.mgr = m.empno and e.sal <m.sal;

EMP_NAME EMP_SAL MGR_NAME MGR_SAL

BLAKE 2850 KING 5000 CLARK 2450 KING 5000 JONES 2975 KING 5000 MARTIN 1250 BLAKE 2850 ALLEN 1600 BLAKE 2850 TURNER 1500 BLAKE 2850 JAMES 950 BLAKE 2850 WARD 1250 BLAKE 2850 SMITH 800 FORD 3000 ADAMS 1100 SCOTT 3000 MILLER 1300 CLARK 2450 5.1.5. Cách biểu diễn kết nối mới trong Oracle 9i Tích đề-các

CROSS JOIN (Cartesian Product) SELECT E.ENAME, D.DNAME

FROM EMP E CROSS JOIN DEPT D;

Kết nối tự nhiên NATURAL JOIN (Equijoin on All Identically Named Columns). SELECT E.ENAME, D.DNAME

FROM EMP E NATURAL JOIN DEPT D;

Mệnh đềUSING (Tương tự như Natural Join, nhưng cho phép chỉ rõ tên cột được sử dụng trong phép kết nối).

Oracle cơ bản - SQL và PL/SQL

SELECT E.ENAME, D.DNAME

FROM EMP E JOIN DEPT D USING (DEPTNO);

Mệnh đề ON (Chỉ rõ tên cột tham gia trong phép kết nối) SELECT E.ENAME, D.DNAME

FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO); Kết nối trái LEFT OUTER JOIN

SELECT E.ENAME, D.DNAME

FROM EMP E LEFT OUTER JOIN DEPT D ON (E.DEPTNO = D.DEPTNO);

Kết nối trái RIGHT OUTER JOIN

SELECT E.ENAME, D.DNAME

FROM EMP E RIGHT OUTER JOIN DEPT D ON (E.DEPTNO= D.DEPTNO);

Kết nối FULL OUTER JOIN (All records from both tables—Identical to a union of left outer join and right outer join)

SELECT E.ENAME, D.DNAME

FROM EMP E FULL OUTER JOIN DEPT D ON (E.DEPTNO = D.DEPTNO);

5.1.6. Các toán tử tập hợp

Tên toán tử UNION

Diễn giải

Kết hợp kết quả của nhiều câu hỏi với nhau, chỉ giữ lại một đại diện cho các mẫu tin trùng nhau.

UNION ALL Kết hợp kết quả của nhiều câu hỏi với nhau, các mẫu tin trùng nhau cũng được lặp lại

INTERSET MINUS MINUS

Ví dụ:

Lấy phần giao các kết quả của nhiều câu hỏi

Lấy kết quả có trong câu hỏi thứ nhất mà không có trong câu hỏi thứ hai (câu hỏi sau toán tử MINUS)

Select job from emp where deptno = 10 Union

Select job from emp where deptno = 30; JOB CLERK MANAGER PRESIDENT SALESMAN Trang 42

Oracle cơ bản - SQL và PL/SQL

Một phần của tài liệu SQL và PL/SQL Cơ bản Oracle cơ bản (Trang 41 - 44)

Tải bản đầy đủ (PDF)

(104 trang)