JOIN ?
여러 테이블의 데이터를 함께 출력할 때 사용
여러 테이블에서 공통된 데이터가 저장된 컬럼을 찾아서 조인 구문을 작성해야 함.
모호한 컬럼명 앞에는 반드시 테이블 명이나 테이블 ALIAS명을 접두어로 붙여야 함.
한쪽 테이블에만 있는 유일한 컬럼명앞에는 테이블명이나 테이블 alias 명이 필수는 아니나, 권장사항
예제1. employees 테이블과 departments 테이블을 조인해서 사번, 이름, 급여, 부서이름을 출력하는 구문을 작성하시오.
>> employees 테이블과 dapartments 테이블이 공통으로 가지고 있는 department_id를 기준으로 조인
예제2. employees 테이블과 departments 테이블을 조인해서 사번, 이름, 급여, 부서번호, 부서이름을 출력하는 구문을 작성하시오.
>> department_id 컬럼은 두 테이블에 동일하게 존재하므로 테이블명을 접두어로 붙여줘야 함.
>> 두 테이블이 department_id 컬럼을 기준으로 조인
예제3. employees 테이블과 departments 테이블을 조인해서 사번, 이름, 매니저번호, 급여, 부서번호, 부서이름을 출력하시오.
>> manager_id컬럼과 department_id 컬럼은 두 테이블에 동일하게 존재하므로 테이블명을 접두어로 붙여줘야 함.
>> 두 테이블이 department_id 컬럼을 기준으로 조인
예제4. departments 테이블과 locations 테이블을 조인해서 부서번호, 부서이름, 도시번호, 도시명을 출력하시오.
>> location_id컬럼은 두 테이블에 동일하게 존재하므로 테이블명을 접두어로 붙여줘야 함.
>> 두 테이블이 location_id 컬럼을 기준으로 조인
예제5. 성능 개선을 위해서 from절에 테이블 alias를 선언하여 컬럼명 앞에 테이블 alias를 붙여준다.
예제 6. employees 테이블과 departments 테이블을 조인해서 사번, 이름, 급여, 부서번호, 부서이름을 출력하되 80번 부서에 소속된 사원만 출력하시오.
N개의 테이블 JOIN
테이블 개수 | 조인 조건 수
2 | 1
3 | 2
N | N-1
예제7. employees, departments, locations 테이블을 조인해서 직원 정보, 부서 정보, 위치 정보를 함께 출력하시오.
>> emloyees와 departments 테이블은 department_id 컬럼을,
departments와 locations 테이블은 location_id 컬럼을 기준으로 조인
Self JOIN ?
하나의 테이블을 마치 다른 테이블인 듯 테이블 alias를 달리 부여하여 자기 자신 테이블과 조인하는 유형
예제8. 직원의 사번, 직원의 이름, 직원의 급여, 매니저 이름을 출력하는 구문을 작성하시오.
>> e2.last_name 은 e1.manager_id 의 last_name
>> employee_id 101 kochhar의 manager_id는 100
>> 100번의 last_name 은 king
equi join VS non-equi join ?
equi JOIN : 조인 조건문에 동등연산자(=)를 사용한 조인 유형
non-equi JOIN : 조인조건문에 동등연산자가 아닌 그 외 다른 비교 연산자를 사용한 조인 유형
inner JOIN VS outer JOIN ?
inner : 조인 조건을 만족하는 행만 반환하는 조인 유형
outer : 조인조건을 만족하는 행은 물론이고 조인조건을 만족하지 않는 행까지 반환하는 조인 유형
left outer join : 조인조건을 만족하지 않는 왼쪽 테이블의 행을 반환 해주는 조인 유형
right outer join : 조인조건을 만족하지 않는 오른쪽 테이블의 행을 반환 해주는 조인 유형
full outer join : 조인조건을 만족하지 않는 양쪽 테이블의 행을 모두 반환 해주는 조인 유형
'STUDY > DATABASE' 카테고리의 다른 글
MYSQL - DML_데이터 삭제(delete) (0) | 2022.05.02 |
---|---|
MySQL - 단일 행 함수(문자함수) (0) | 2022.04.15 |
MySQL - ERD 만들기 (0) | 2022.04.12 |
MySQL 문법 (0) | 2022.04.12 |
MySQL 데이터 조회(SELECT) (0) | 2022.04.11 |