[SQL] join 1
[join (조인)]
⊙ 두 개 이상의 테이블을 결합하여 데이터를 추출하는 기법
⊙ 두 테이블의 공통값을 이용하여 칼럼을 조합하는 수단
⊙ 형식
ANSI SQL문 | Oracle SQL문 |
select 칼럼명 from 테이블명 join 테이블 2 on 조건절; |
select 칼럼명 from 테이블1, 테이블2 where 조건절; |
⊙ 기존에 있던 dept 와 emp 테이블 삭제 후 다시 만들기
drop table dept; drop table emp; |
1) dept 테이블 만들기
create table dept ( deptno number(7) primary key ,dname varchar(20) ,loc varchar(10) ); |
2) emp 테이블 만들기
⊙ 직원테이블
create table emp(
empno number(4) primary key
,ename varchar2(10)
,job varchar2(9)
,mgr number(4)
,hiredate date
,sal number(7,2)
,comm number(7,2)
,deptno number(7) references dept(deptno) --참조하려는 부모의 자료형과 칼럼명(deptno number(7))이 자식의 자료형과 칼럼명(deptno number(2))이 동일한게 좋음, 특히 자료형은 동일하게
);
⊙ 직원테이블 행추가
insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7369, '개나리', '사원', 7902, '2000-12-17', 200, 20);
insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7499, '진달래', '주임', 7698, '2001-12-15', 360, 20);
insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7521, '라일락', '주임', 7698, '2001-02-17', 355, 30);
insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7654, '손흥민', '과장', 7839, '2002-01-11', 400, 30);
insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7698, '박지성', '주임', 7698, '2000-07-12', 325, 20);
insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7782, '김연아', '사원', 7698, '2001-12-17', 225, 10);
insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7778, '무궁화', '사원', 7839, '2005-11-14', 200, 10);
insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7839, '홍길동', '부장', 7566, '2006-06-17', 450, 20);
insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7844, '송강호', '과장', 7566, '2018-09-17', 400, 30);
insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7876, '정우성', '대표', 7839, '2004-09-09', 500, 30);
insert into emp(empno, ename, job, mgr, hiredate, sal, deptno)
values(7900, '김혜수', '사원', 7902, '2001-12-03', 200, 20);
select * from emp; - 전체 조회
3) ANSI SQL문과 Oracle SQL문을 활용하여 조인하기
⊙ 두 개의 테이블(emp, dept)이지만 부서코드(deptno)를 기준으로 하나의 테이블로 보이게 함
⊙ ANSI SQL문과 Oracle SQL문의 결과가 동일
ANSI SQL문 | Oracle SQL문 |
select * from emp join dept on emp.deptno=dept.deptno; |
select * from emp, dept where emp.deptno=dept.deptno; |