-
SQL_Join 개요 & Cross JoinData Base_Oracle/SQL 2020. 1. 6. 21:51
JOIN
두 개 이상의 테이블에서 원하는 데이터들을
중복된 데이터가 없도록 조회하는 방법JOIN 종류
종류 설명 inner join 검색하고자 하는 두 테이블의 레코드 총량이 비슷할 때 사용
주로 많이 사용됨equi join inner join에 포함되며, 연관된 테이블에 동일한 칼럼이 있을 때 사용 self join inner join에 포함되며,
자기 자신의 table 내의 필드를 참조해서 데이터를 조회할 때 사용non-equi join 조회하려는 테이블 간에 동일한 칼럼이 없을 때 사용 outer join 두 테이블의 레코드 총량이 비대칭일 때 사용 cross join 조회하려는 복수의 테이블 내 필드들을 단순히 나열 ansi join 표준 SQL인 Ansi를 이용한 Join으로 Inner/Outer Join이 있음
Cross Join
보고자 하는 필드들을 단순히 나열하는 것
§ 형식
[ SQL> select 필드명1, 필드명2,,,,
from 테이블명1, 테이블명2,,,, ]# 예제
▷ ALLEN의 부서명을 조회, emp테이블에서는 확인할 수 없음 (부서명 필드 X)
dept테이블(부서 : 부서번호, 부서이름, 위치)을 조회해야 함▶ [ SQL> select ename, dname from emp, dept where ename=upper('allen'); ]
# 에러
▷ ALLEN의 부서명을 조회, emp테이블에서는 확인할 수 없음 (부서명 필드 X)
dept테이블(부서 : 부서번호, 부서이름, 위치)을 조회해야 함
사원번호, 이름, 부서번호, 부서이름, 위치를 조회▶ [ SQL> select empno, ename, deptno, dname, loc from emp, dept;
1행에 오류:ORA-00918: 열의 정의가 애매합니다 ]
※ 'deptno'가 emp테이블과 dept테이블에 모두 있기 때문에 발생하는 에러∴ 테이블명.공통필드 로 명확하게 필드를 지정해야 함
# 풀이
▶▶ [ SQL> select empno, ename, emp.deptno, dname, loc from emp, dept
where ename=upper('allen'); ]EMPNO ENAME DEPTNO DNAME LOC 7499 ALLEN 30 ACCOUNTING NEW YORK 7499 ALLEN 30 OPERATIONS BOSTON 7499 ALLEN 30 SALES CHICAGO 7499 ALLEN 30 RESEARCH DALLAS # 단점
중복된 데이터가 많아짐 → 찾고자하는 데이터를 검색하기 어려움
Cross Join은 중복된 데이터가 많아서 원하는 데이터를 정확하게 조회한 결과라고 할 수 없습니다.
'Data Base_Oracle > SQL' 카테고리의 다른 글
SQL_Equi Join & Self Join (0) 2020.01.06 SQL_Inner Join(Equi Join) & 테이블 별칭 부여 (0) 2020.01.06 SQL_Constraint Enable / Disable (0) 2020.01.06 SQL 제약조건 Foreign Key (0) 2020.01.04 SQL 제약조건 Check & Default (0) 2020.01.04