JOIN문
: 하나 이상의 테이블에 있는 데이터를 조회하기 위해 사용하는 SQL문
Primary Key 를 중심으로 Forign Key와 일치하는 컬럼들에 대한 경우의 수를 만들어 사용하는 것이 일반적이다
JOIN 조건은 where 절에 기술
똑같은 열 이름이 하나 이상의 테이블에 존재하면 모호성을 없애기 위해서 컬럼앞에 테이블명을 붙인다
별명을 붙여 사용 ; 일반적으로 별명은 최대한 단순하게 만들어서 사용
데이터가 있는 위치를 정확히 알려주므로 성능 향상에 도움을 준다
각 조인의 형태에 따라 적는 키워드 들이 존재한다
보통은 테이블 사이에 키워드를 적는다
crossJoin
: 조인되는 두 테이블에서 곱집합을 반환
m행을 가진 테이블과 n행을 가지는 테이블이 교차 조인 되면서 m*n개의 결과를 나타낸다
join의 조건이 없다
select * from employees,departments;
select * from employee CROSS JOIN department;
innerJoin : 내부 조인
: 여러 조인문중에 가장 흔한 결합방식의 조인문
가장 기본적인 형식의 조인문
조인 구문에 2개의 테이블의 컬럼값을 결합함으로써 새로운 결과 테이블을 생성한다
내부 조인은 두개 테이블에서 NULL값을 가지고 있는 열들은 조인 조건에 제외된다
select * from employees e,departments d where e.department_id = d.department_id;
select * from employees e INNER JOIN departments d ON e.department_id = d.department_id;
outerJOIN
: join조건을 만족하지 않는 행들도 보기 위해서 사용하는 join문
정보가 부족한쪽에 (+)기호를 붙여서 사용하기도 한다
left outer join
: 오른쪽의 항목이 NULL이라도 그 열을 포함시켜 출력 ; 왼쪽 중심
select * from employees e LEFT OUTER JOIN departments d ON e.department_id = d.department_id;
select * from employees e,departments d where e.department_id = d.department_id(+);
right outer join
: 왼쪽의 항목이 NULL이라도 그 열을 포함시켜 출력 ; 오른쪽 중심
select * from employees e RIGHT OUTER JOIN departments d ON e.department_id = d.department_id;
select * from employees e,departments d where e.department_id(+) = d.department_id;
full outer join
: 완전 외부 조인 - 조건이 만족하지 않더라도 모두 출력
select * from employees e FULL OUTER JOIN departments d ON e.department_id = d.department_id;
select * from employees e,departments d where e.department_id(+) = d.department_id(+); --X
selfJoin
: 자가 조인
자기 자신의 테이블을 조인하는 것 ; SubQuery와 유사
'DB > DBMS & SQL' 카테고리의 다른 글
DBMS SQL Oracle Database 샘플 스키마 설치 및 생성 (0) | 2023.03.10 |
---|---|
DBMS SQL Oracle Database SubQuery(서브쿼리) (0) | 2023.03.10 |
DBMS SQL Oracle Database CRUD - DML 테이블의 데이터 수정, 제약조건 (0) | 2023.03.10 |
DBMS SQL Oracle Database 연산자 (0) | 2023.03.10 |
DBMS SQL Oracle Database 오라클 내장함수 (0) | 2023.03.09 |