초급의 끄적거림

[SQL] join 1 본문

DB/Oracle

[SQL] join 1

codingD 2019. 7. 24. 18:17

[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;

 

'DB > Oracle' 카테고리의 다른 글

[SQL] 학사관리프로그램 만들기  (0) 2019.07.26
[SQL] case when ~ then end 구문 / decode() 함수  (0) 2019.07.25
[SQL] Index  (0) 2019.07.24
[SQL] View  (0) 2019.07.23
[SQL] 서브쿼리 (Sub Query)  (0) 2019.07.23
Comments