멀리 보는 연습

DATABASE_조인 본문

Study/DATABASE

DATABASE_조인

푸실리 2021. 5. 31. 18:01

1. 조인이란?

- 조인은 각 테이블 간에 공통된 칼럼(조건)으로 데이터를 합쳐 표현하는 것

- 조인시킬 테이블들의 data(행) 연결을 할 때 무결성이 보장되어야 함

 

1) n-1 규칙

n-1 = 조인 대상 테이블의 개수 = 조인 조건 개수, where 절에 명시

 

2) 조인 테이블에 똑같은 이름의 column 명시할 때 반드시 소유주인 테이블 이름을 접두어로 명시(ex. e.last_name)

 

 

*예시01

우리 회사에 근무하는 사원의 이름과 그 사원이 근무하는 부서 이름을 출력하시오.

select last_name, department_name
from employees, departments
where employees.department_id=departments.department_id

 

'employees e, departments d'로 알리야스 변형해서 쉽게 사용 가능

select e.last_name, d.department_name, e.department_id
from employees e, departments d
where e.department_id=d.department_id

 

 

2.  조인 유형

 

1) 등가 조인 ( 동등 조인, EQUI 조인,내부 조인, 단순 조인)

>> equi (같은 데이터 존재시, 실무의 99% 차지)

데이터 타입만 같으면 된다.

 

* 예시01

90번 부서에 근무하는 사원의 이름과 급여, 근무하는 부서 이름을 출력하시오.

select e.last_name, e.salary, d.department_name, l.city
from employees e, departments d, locations l
where e.department_id=d.department_id
and d.location_id = l.location_id

 

2)  non equi

between A and B 와 같은

 

 

 

3) 포괄조인  (아우터 조인)

>> 한쪽에 null 값이 존재할 경우 모두 표기하기 위해서 (+)를 삽입

1 select e.last_name, e.salary, d.department_name
2 from employees e, departments d
3* where e.department_id=d.department_id(+)

 

4) 셀프조인

테이블에 자기 자신을 조인 시키는 것

select F.empno, F.ename, S.empno, S.ename, S.job
from emp F inner join Emp S
on F.job = S.job
where F.empno < S.empno
order by F.empno, S.empno;

 

우리 회사에 근무하는 사원의 번호와 이름, 그 사원을 관리하는 관리자 번호와 관리자 이름을 출력하시오.

1 select e.employee_id, e.last_name, e.manager_id, m.last_name
2 from employees e, employees m
3* where e.manager_id=m.employee_id

 

 

 

3. AVG 및 SUM 함수 사용

SQL> select avg(salary), sum(salary)
2 from employees;

AVG와 SUM은 숫자 데이터에 대해서만 연산 가능

 

 

1 select min(hire_date), max(hire_date)
2* from employees

최초 입사일, 최후 입사일

 

1 select min(last_name), max(last_name)
2* from employees

알파벳 순으로 이름 처음과 끝

 

1 select count(*)
2* from employees

출력이 되는 행의 총 개수

 

1 select count(*)
2 from employees
3* where department_id=50

50번 부서에서 근무하는 사원 수

 

1 select count(distinct department_id)
2* from employees

count 함수 다음에는 all, distinct 두가지가 놓일 수 있음

 

'Study > DATABASE' 카테고리의 다른 글

DATABASE_서브쿼리  (0) 2021.05.31
DATABASE_group by, SQL 구문 실행 순서, having  (0) 2021.05.31
DATABASE_연산자, where, order by, 비교 조건 예제  (0) 2021.05.23
DATABASE_명령문  (0) 2021.05.23
DATABASE_용어  (0) 2021.05.23
Comments