Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 상속
- Spinner
- 스타일보험
- Spring
- 시큐어코딩
- 쿠키
- git
- React
- 게시판
- SQL
- 코틀린
- java
- 답글
- 왕초보
- 스프링
- degit
- 미니게임
- Android
- FIle
- java#왕초보
- sub query
- 버전일치
- kotlin
- 함수
- 안드로이드
- parcel
- snowpack
- 숫자
- 오버라이드
- webpack
Archives
- Today
- Total
YSHUSH
join 본문
˙join 형식
Join
두개 이상의 테이블을 연결해서 데이터를 검색하는 방법이다.
보통 두 개 이상의 행(row)들의 공통된 값 기본키, 외래키를 사용해서 Join한다.
기본 키(Primary Key) : 테이블에서 중복이 되지않는 키
외래 키(Foreign Key) : 다른 테이블에서 Primary Key(PK), Unique Key(UK)인 경우가 많다.
JOIN 종류 중요도
inner join *****
full outer join *
cross join *
outer join
left *** left outer join
right *** right outer join
self join ****
기본 키(Primary Key) 와 외래 키(Foreign Key)의 사용법을 잘 알아두도록 하자!
˙inner join
-- ansi SQL
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e INNER JOIN departments d
ON e.department_id = d.department_id;
-- 생략가능
SELECT employee_id, first_name,
e.department_id, d.department_id, -- 양쪽 테이블에 관여하는 Alias는 생략할 수 없다.
department_name
FROM employees e INNER JOIN departments d
ON e.department_id = d.department_id;
-- oracle
SELECT e.department_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id;
SELECT e.employee_id, e.first_name,
e.job_id, j.job_id,
j.job_title
FROM employees e, jobs j
WHERE e.job_id = j.job_id;
˙cross join
-- ansi
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e CROSS JOIN departments d;
-- oracle
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e, departments d;
˙full outer join → 조인이 안된것들까지 나옴
-- ansi
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e FULL OUTER JOIN departments d
ON e.department_id = d.department_id;
-- 완전 차집합
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e FULL OUTER JOIN departments d
ON e.department_id = d.department_id
WHERE e.department_id IS NULL
OR d.department_id IS NULL;
-- oracle X -> 없는데 굳이 만들자면
SELECT e.department_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e, departments d
WHERE e.department_id(+) = d.department_id
UNION -- 집합 명령어
SELECT e.department_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id(+);
˙left outer join
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e LEFT OUTER JOIN departments d
ON e.department_id = d.department_id;
-- oracle
SELECT e.department_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id(+);
-- left outer join + 차집합
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id(+)
AND e.department_id IS NULL;
˙right outer join
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e RIGHT OUTER JOIN departments d
ON e.department_id = d.department_id;
-- oracle
SELECT e.department_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e, departments d
WHERE e.department_id(+) = d.department_id;
-- right outer join + 차집합
SELECT e.employee_id, e.first_name,
e.department_id, d.department_id,
d.department_name
FROM employees e, departments d
WHERE e.department_id(+) = d.department_id
AND e.department_id IS NULL;
˙self join → 동일한 테이블을 join (형식은 inner join과 비슷하나 alias를 다 붙여줘야 한다.)
동일 테이블이지만 다른 테이블로 생각하면 편하다!
SELECT a.employee_id, a.first_name,
a.manager_id, b.employee_id,
b.first_name
FROM employees a, employees b -- a : 사원 b : 상사
WHERE a.manager_id = b.employee_id
AND a.employee_id = 168;
'Coding > SQL' 카테고리의 다른 글
sub query 예제 (0) | 2022.01.22 |
---|---|
sub query (쿼리 안의 쿼리) (0) | 2022.01.22 |
order by, group by 예제 (0) | 2022.01.22 |
정렬(order by)과 통계(count, sum, avg, max, min) (0) | 2022.01.22 |
조건절 예제 (0) | 2022.01.22 |