article thumbnail image
Published 2021. 7. 5. 16:21
728x90


  • 데이터 베이스에서 가장 중요한 부분은 데이터를 가져오는데 걸리는 시간의 최소화이다.
  • 데이터 베이스는 저장된 데이터의 총량이 크면 클수록 데이터를 가져오는데 시간이 오래 걸리게 된다.
  • 이 때문에 데이터의 중복을 최소화 하여 데이터를 빠르게 가져올 수 있도록 테이블을 구성하게 된다.
  • 이 과정에서 테이블을 두 개 이상으로 분리될 수밖에 없다.

 

위와 같이 데이터의 중복을 최소화 하기 위해 테이블을 분리시킨 후 데이터를 가져올 때 여러 테이블을 하나의 결과로 가져와야 하는데 이럴 때 JOIN문을 사용한다.

 

JOIN문을 사용하면 여러 테이블의 데이터를 한번에 가져올 수 있다.

 


-- 조인
-- 사원들의 사원번호, 근무 부서 번호, 근무 부서 이름을 가져온다.
-- 사원 번호를 기준으로 오름차순 정렬

select a2.emp_no, a2.dept_no, a1.dept_name
from departments a1, dept_emp a2
order by a2.emp_no asc;

emp_no가 중복해서 나타난다.

위와 같이 코드를 작성하게 되면 한가지의 조건에 모든 로우가 붙게 되어 원하는 데이터를 가져오지 못하는 경우가 생길 수도 있다.

 

따라서 이럴 때는 조건문을 통해 원하는 데이터만 뽑아 올 수 있도록 한다.

 

select a2.emp_no, a2.dept_no, a1.dept_name
from departments a1, dept_emp a2
where a1.dept_no = a2.dept_no -- 조건문을 달아서 원하는 정보를 가져올 수 있다
order by a2.emp_no asc;

 

테이블을 3개를 조인해야 하는 경우가 생길 수도 있다.

이럴 때는 조건문에 and를 통해 3개의 테이블을 붙여준다.

 

-- 3개의 테이블 조인
-- 각 사원들의 사원번호, first_name, 근무 부서 이름을 가져온다

select a1.emp_no, a1.first_name, a3.dept_name
from employees a1, dept_emp a2, departments a3
where a1.emp_no = a2.emp_no and a2.dept_no = a3.dept_no;

'MySQL' 카테고리의 다른 글

MySQL 데이터 베이스 및 테이블 생성  (0) 2021.07.07
MySQL 서브쿼리(SUB QUERY)  (0) 2021.07.05
MySQL GROUP BY 과 HAVING  (0) 2021.07.04
MySQL SELECT문 및 연산자  (0) 2021.07.01
MySQL 시작 및 데이터베이스 조회  (0) 2021.06.30
복사했습니다!