반응형

MySQL, MariaDB 이너 조인

실습을 위한 부서(dept)와 사원(emp) 테이블을 생성한다.

create table dept(
	id int(20) unsigned primary key auto_increment,
	regDate datetime not null default now(),
	deptName char(30) unique
);


create table emp(
	id int(20) unsigned primary key auto_increment,
	regDate datetime not null default now(),
	name char(30) not null,
    deptId int(20) not null
);

키워드 설명

1) unsinged : 표현할 숫자의 범위에서 음수를 제외하고 음수를 제외한 만큼 양수에서 더 표현

2) primary key(개체 무결성 제약조건) : 기본키

3) auto_increment : 자동 증가

4) defalut : 해당 컬럼 기본값 설정

5) now() : 현재 시스템 시간을 가져오는 함수

 

좌 : 부서(dept) 테이블 / 우 : 사원(emp) 테이블

 

다음으로 실습을 위해 각 테이블에 데이터를 추가한다.

-- dept 테이블에 '홍보부서'와 '기획부서' 추가

insert into dept(deptName) values('홍보');
insert into dept(deptName) values('기획');


-- emp 테이블에 사원 추가

insert into emp(name, deptId) value('루니', 1);
insert into emp(name, deptId) value('램파드', 2);

 

좌 : 부서(dept) 테이블 / 우 : 사원(emp) 테이블

 

Inner Join을 통한 사원의 소속 부서 출력

사원 테이블에는 사원이 속한 부서의 이름이 아닌 부서의 번호가 입력되어 있다.

우선 부서 테이블과 사원 테이블에 있는 모든 데이터를 가져오는 다음 쿼리문을 실행하여 본다.

select * from dept, emp;

 

select * from dept, emp를 실행 결과

실행하면 사원의 이름도 중복되고 사원의 부서도 알 수 없게 출력된다.

따라서 Inner Join을 이용하여 사원의 소속 부서를 알아내야 한다.

select * from [테이블명] inner join [조인할 테이블명] on [조인 조건]

select * from emp inner join dept on emp.deptId = dept.id;

 

select * from emp inner join dept on emp.deptId = dept.id의 실행 결과

해당 쿼리문은 사원 테이블과 부서 테이블을 Innter Join한 결과이고 조건은 사원 테이블의 부서 번호와 부서 테이블의 부서 번호가 일치하는 데이터만 출력하였다.

 

select emp.id, emp.regDate, emp.name, dept.deptName from emp inner join dept on emp.deptId = dept.id;

필요한 컬럼만 조회

필요한 데이터는 사원 정보와 사원의 소속 부서이기 때문에 나머지 필요하지 않은 정보를 제외하였다.

반응형

+ Recent posts