/*
# ANSI JOIN
- ANSI (American National Standards Insititute)
미국에서 여러가지 IT표준을 재정하는 단체
- 모든 RDBMS들은 ANSI 표준을 따르는 쿼리문을 가지고 있다
*/
-- ANSI CROSS JOIN
SELECT * FROM employees CROSS JOIN departments;
--ANSI INNER JOIN : 조인 조건에 맞는 행만 등장하는 JOIN
SELECT
*
FROM
employees
INNER JOIN departments USING ( department_id );
-- ANSI OUTER JOIN : 조인 조건에 맞지 않는 행도 등장하는 JOIN
--LEFT OUTER JOIN: 왼쪽 테이블의 등장하지 못한 행이 등장한다.
-- RIGHT OUTER JOIN: 오른쪽 테이블의 등장하지 못한 행이 등장한다.
SELECT
*
FROM
employees
LEFT OUTER JOIN departments USING ( department_id );
SELECT
*
FROM
employees
RIGHT OUTER JOIN departments USING ( department_id );
-- FULL OUTER JOIN: 각 테이블에서 등장하지 못했던 행들이 등장한다.
SELECT
*
FROM
employees
FULL OUTER JOIN departments USING ( department_id );
-- ANSI JOIN을 사용하면 조인 조건과 행 조회 조건을 쉽게 구분할 수 있다
SELECT
*
FROM
employees
INNER JOIN departments USING ( department_id )
WHERE
department_id BETWEEN 100 AND 200;
/*
# ANSI JOIN을 이용하여 다음을 풀어보세요
1. first_name이 H로 시작하는 사원들의 사원번호/이름/부서명을 조회해보세요
2. 직장상사 이름이 Mattew인 사원들의 사번/이름/월급/부서명을 조회해보세요
3.Alberto와 동일한 직책을 가진 사원들의 모든 정보를 조회해보세요
*/
--1. first_name이 H로 시작하는 사원들의 사원번호/이름/부서명을 조회해보세요
SELECT
employee_id,first_name, department_name
FROM
employees
INNER JOIN departments USING (department_id)
WHERE
first_name LIKE 'H%' ORDER BY employee_id;
--2. 직장상사 이름이 Matthew인 사원들의 사번/이름/월급/부서명을 조회해보세요
SELECT
a.employee_id,a.first_name,b.first_name,a.salary,department_name
FROM
employees a
INNER JOIN departments USING (department_id)
INNER JOIN employees b ON a.manager_id = b.employee_id
WHERE
b.first_name = 'Matthew';
-- 3.Alberto와 동일한 직책을 가진 사원들의 모든 정보를 조회해보세요
SELECT
a.*
FROM
employees a
INNER JOIN employees b ON a.job_id = b.job_id
WHERE
b.first_name = 'Alberto';
'공부 > Database 복습' 카테고리의 다른 글
6.Database 조인 (0) | 2021.08.01 |
---|---|
5.Database 정렬 (0) | 2021.07.26 |
4.Database 그룹 함수 (0) | 2021.07.19 |
3.Database 함수 (0) | 2021.07.19 |
2.Database WHERE (0) | 2021.07.18 |