본문 바로가기

Mysql/Mysql 기초

mysql join

반응형

 데이터 베이스에서 가장 중요한 부분은 데이터를 가져오는데 걸리는 시간의 최소화 이다


 데이터 베이스는 저장된데이터의 총량이 크면 클 수록 데이터를 가져오는데 시간이 오래걸리게 되는데


 이때문에 데이터의 중복을 최소화 하여 데이터를 빠르게 가져올 수 있도록 테이블을 구성하게 된다


 이 과정에서 테이블을 두 개 이상으로 분리 될 수 밖에 없다


 여러 테이블을 join 할 때 에는 테이블의 이름을 로 구분하여 작성하여주고 각 테이블의 컬럼명을 기술하여 주면 
 원하는 데이터를 가져올 수 있다
 select 컬럼명1, 컬럼명2 컬럼명
 from 테이블1, 테이블2

-- 데이터 베이스에서 가장 중요한 부분은 데이터를 가져오는데 걸리는 시간의 최소화 이다 

-- 데이터 베이스는 저장된데이터의 총량이 크면 클 수록 데이터를 가져오는데 시간이 오래걸리게 된다

-- 이때문에 데이터의 중복을 최소화 하여 데이터를 빠르게 가져올 수 있도록 테이블을 구성하게 된다.

-- 이 과정에서 테이블을 두 개 이상으로 분리 될 수 밖에 없다

-- 여러 테이블을 join 할 때 에는 테이블의 이름을 로 구분하여 작성하여주고 각 테이블의 컬럼명을 기술하여 주면 
-- 원하는 데이터를 가져올 수 있다
-- select 컬럼명1, 컬럼명2 컬럼명
-- from 테이블1, 테이블2

-- 각 사원들의 사원번호, 근무 부서 번호, 근무 부서 이름을 가져온다. 사원번호를 기준으로 오름 차순 정렬한다 
select dept_emp.emp_no, dept_emp.dept_no, departments.dept_name  from dept_emp, departments order by emp_no;

-- 해당 조건은 다 대 다의 관계로 가져오기 떄문에 잘못된 데이터가 구성이 되기 떄문에 join 조건문을 작성해야한다. 
select a2.emp_no, a2.dept_no, a1.dept_no, a1.dept_name
from departments a1, dept_emp a2
order by a2.emp_no;

-- 공통인 부분이 같은경우에서만 가져오는 조건을 작성해 주어야 한다. 
select a2.emp_no, a2.dept_no, a1.dept_no, a1.dept_name
from departments a1, dept_emp a2 where a1.dept_no = a2.dept_no
order by a2.emp_no;

-- 각 사원들의 사원번호, first_name, 근무 부서 번호를 가져온다
select a.emp_no, dept_no, first_name from employees a, dept_emp b where a.emp_no = b.emp_no;

-- 각 사원들의 사원번호, first_name, 현재 받고 있는 급여액을 가져온다 
select a.emp_no, first_name, salary from employees a, salaries b where a.emp_no = b.emp_no and b.to_date = '9999-01-01';

-- 각 사원들의 사원번호, first_name, 근무 부서 이름을 가져온다
select a.emp_no, first_name, b.dept_no, dept_name from employees a, dept_emp b, departments c 
where a.emp_no = b.emp_no and b.dept_no = c.dept_no;

반응형

'Mysql > Mysql 기초' 카테고리의 다른 글

mysql 기초 set(합집합, 교집합, 차집합)  (0) 2020.07.09
mysql 서브쿼리  (0) 2020.07.09
mysql 그룹함수  (0) 2020.07.09
mysql 기초 날짜 함수  (0) 2020.07.09
mysql 문자열함수  (0) 2020.07.09