SW/MySQL

MySQL : join : 개념, 예제, 사용방법, 장점

얇은생각 2020. 2. 3. 07:30
반응형

join

 

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

 

 

데이터 중복의 최소화

고객의 구매 정보를 저장하는 테이블이 있고, 이 테이블은 고객 이름,  고객 전화번호, 상품 이름, 상품 가격으로 구성되어 있따고 가정합니다. 고객이 여러 상품을 구매할 수 있고, 같은 상품을 여러 사람이 구매할 수 있습니다. 따라서 데이터가 상당히 중복될 수 있습니다. 따라서 테이블을 나누면, 데이터의 중복을 최소화할 수 있습니다.

 

 

Join

데이터의 중복을 최소화하기 위해 테이블을 분리 시킵니다. 그 후, 데이터를 가져올 떄, 여러 테이블을 하나의 결과로 가져와야 합니다. 이럴 떄 Join문을 사용합니다. Join 문을 사용하면, 여러 테이블의 데이터를 한번에 가져올 수 있습니다. 여러 테이블을 join 할 떄는, 테이블의 이름으로 구분하여 작성합니다. 그리고 각 테이블의 컬럼명을 기술하면, 원하는 데이터를 가져올 수 있습니다. 

 

select 컬럼명1, 컬러명2, 컬럼명3 from 테이블1, 테이블2

 

join문을 사용하게 되면 다 대 다의 관계로 가져오게 됩니다. 이 때문에 잘못된 데이터가 구성될 수 있습니다. 이를 위해 join 조건문을 작성해주어야 합니다. 

 

# 사원들의 사원 번호, 근무 부서 번호, 근무 부서 이름을 가져옵니다.
# 사원 번호를 기준으로 오름차순 정렬합니다.

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;
10001 Georgi 60117
10001 Georgi 62102
10001 Georgi 66074
10001 Georgi 66596
10001 Georgi 66961
10001 Georgi 71046

 

 

# 각 사원들의 사원번호, first_name, 근무 부서 번호를 가져옵니다.

select a1.emp_no, a1.first_name, a2.dept_no
from employees a1, dept_emp a2
where a1.emp_no = a2.emp_no;
10001 Georgi d005
10002 Bezalel d007
10003 Parto d004
10004 Chirstian d004
10005 Kyoichi d003
10006 Anneke d005

 

 

# 각 사원들의 사원번호, first_name, 현재 받고 있는 급여액을 가져옵니다.

select a1.emp_no, a1.first_name, a2.salary
from employees a1, salaries a2
where a1.emp_no = a2.emp_no;
10001 Georgi 60117
10001 Georgi 62102
10001 Georgi 66074
10001 Georgi 66596
10001 Georgi 66961

 

 

# 각 사원들의 사원번호, frist_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
10011 Mary Customer Service
10038 Huan Customer Service
10049 Basil Customer Service
10060 Breannda Customer Service
10088 Jungsoon Customer Service
반응형