반응형
조인이란
: 두개 이상의 테이블에 있는 컬럼들을 합쳐서 가상의 테이블을 만들어 조회하는 방식.
- 소스테이블: main information
- 타겟테이블: sub information
Foreign key(외래키): 한 테이블이 다른 테이블의 칼럼값을 참조하는 것.
자식테이블에서 참조하고 있는것을 부모테이블에서 마음대로 삭제 할 수없다.
참조하고 있지 않다면 삭제가능. 삭제하려면 자식테이블에서 참조되고있는 값을 먼저 삭제해야한다. 참조하는 행이나 값을 삭제할수 있다.
CASCADE : 부모 테이블에서 데이터를 삭제/수정하면, 그 행을 참조하는 자식테이블의 행들도 같이 삭제/수정된다.
SET NULL : 부모 테이블에서 데이터를 삭제/수정하면, 그 행을 참조하는 자식테이블의 foreign key 컬럼의 값을 NULL로 변경한다.
조인의 종류
inner join: 양쪽 테이블에서 조인 조건을 만족하는 행들만 합친다.
outer join: 한쪽 테이블의 행들을 모두 사용하고 다른쪽 테이블은 조인조건을 만족하는 행만 합친다.
cross join: 명시적으로 붙이라고 하는것
크로스 조인 구문)
SELECT *
FROM t1 CROSS JOIN t2;
outer조인
left outer join: 구문상 소스 테이블이 왼쪽 right outer join: 구문상 소스 테이블이 오른쪽 full outer join: 둘다 소스 테이블 (Mysql은 지원하지 않는다. - union 연산을 이용해서 구현)
구문)
from 테이블a [LEFT | RIGHT] OUTER JOIN 테이블b ON 조인조건
dept d left outer join emp e
emp e right outer join dept d on조건
→ 편한대로 위치만 바꿔서 해도된다.
예시)
-- TODO 직원 id(emp.emp_id)가 200번대(200 ~ 299)인 직원들의
-- 직원_ID(emp.emp_id), 이름(emp.emp_name), 급여(emp.salary), 소속부서이름(dept.dept_name), 부서위치(dept.loc)를 조회. 직원_ID의 내림차순으로 정렬.
select e.emp_id,
e.emp_name,
e.salary,
d.dept_name,
d.loc
from emp e join dept d on e.dept_id = d.dept_id
where e.emp_id between 200 and 299
order by e.emp_id desc;
-- TODO 업무(emp.job_id)가 'FI_ACCOUNT'인 직원의 ID(emp.emp_id), 이름(emp.emp_name),
-- 업무(emp.job_id), 소속부서이름(dept.dept_name), 부서위치(dept.loc)를 조회. 직원_ID의 내림차순으로 정렬.
select e.job_id,
e.emp_id,
e.emp_name,
d.dept_name,
d.loc
from emp e join dept d on e.dept_id = d.dept_id
where e.job_id = 'FI_ACCOUNT';
반응형
'데이터 분석일기 > sql' 카테고리의 다른 글
SQL: 함수 (0) | 2023.09.01 |
---|---|
SQL Basic (0) | 2023.08.31 |
SQL : Database (0) | 2023.08.30 |