반응형
데이터 베이스에서 가장 중요한 부분은 데이터를 가져오는 데 걸리는 시간을 최소화하는 것입니다. 데이터 베이스는 저장된 데이터의 총량이 크면 클 수록 데이터를 가져오는데 시간이 오래 걸리게 됩니다. 이 떄문에, 데이터의 중복을 최소화하여 데이터를 빠르게 가져올 수 있도록 테이블을 구성하게 됩니다. 이 과정에서, 테이블을 두 개 이상으로 분리될 수 밖에 없습니다.
데이터 중복의 최소화
고객의 구매 정보를 저장하는 테이블이 있고, 이 테이블은 고객 이름, 고객 전화번호, 상품 이름, 상품 가격으로 구성되어 있따고 가정합니다. 고객이 여러 상품을 구매할 수 있고, 같은 상품을 여러 사람이 구매할 수 있습니다. 따라서 데이터가 상당히 중복될 수 있습니다. 따라서 테이블을 나누면, 데이터의 중복을 최소화할 수 있습니다.
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 |
반응형
'SW > MySQL' 카테고리의 다른 글
MySQL : IN 연산자 : 순서 유지 : 방법, 예제, 사용법 (0) | 2020.03.06 |
---|---|
MySQL : 제약조건 : 개념, 예제, 종류 (0) | 2020.02.04 |
MySQL : group by, having : 개념, 예제, 사용법 (0) | 2020.02.01 |
MySQL : view : 사용법, 개념, 예제 (0) | 2020.01.31 |
MySQL : 트랜잭션, rollback, commit, save point, truncate : 개념, 사용 방법 (0) | 2020.01.30 |