SQL 문법( Join – 1 )

1. join : 두 개 이상의 테이블을 결합하여 필요한 데이터를 조회하게 하는 기능 가. 조인의 종류 – 카티션 곱 : where 절에 조건을 기입하지 않을 경우, 테이블 row 수만큼(null 제외) * 연산하여 출력 – EQUI JOIN : where 절에 = 을 사용했을 경우 – NON-EQUI JOIN : where 절에 >=, <=, 등의 연산자 이용 – OUTER JOIN : null 이 포함된 행도 출력하고자 할 때(+), outer join의 경우 (+)의 반대쪽 테이블에 full scan 이 일어나 성능저하를 가져온다. – SELF JOIN : 1개의 테이블을 마치 2개의 테이블 조인 마냥, 같은 테이블내에서 조인을 맺는 것 나. 조인 시 주의사항 : 2개의 테이블 이상의 테이블 조인 시, 앞 테이블은 상대적으로 row 량이 적은 것을 사용한다. 2. 예제모음
SQL> select s.name, d.dname
  2  from student s, department d
  3  where s.deptno=d.deptno;

NAME       DNAME
---------- ----------------
전인하     컴퓨터공학과
이동훈     전자공학과
박미경     컴퓨터공학과
김영균     컴퓨터공학과
박동진     전자공학과
김진영     멀티미디어학과
지은경     컴퓨터공학과
오유석     멀티미디어학과
하나리     멀티미디어학과
임유진     컴퓨터공학과
서재진     컴퓨터공학과
윤진욱     멀티미디어학과
이광훈     컴퓨터공학과
김진경     전자공학과
조명훈     전자공학과
류민정     컴퓨터공학과

16 rows selected.


SQL> select s.name, d.dname, p.name
  2  from student s, department d, professor p
  3  where s.deptno=d.deptno and s.profno=p.profno;

NAME       DNAME            NAME
---------- ---------------- ----------
김진경     전자공학과       이재우
이광훈     컴퓨터공학과     성연희
전인하     컴퓨터공학과     성연희
윤진욱     멀티미디어학과   권혁일
오유석     멀티미디어학과   권혁일
김진영     멀티미디어학과   권혁일
김영균     컴퓨터공학과     이만식
류민정     컴퓨터공학과     전은지
임유진     컴퓨터공학과     전은지
지은경     컴퓨터공학과     전은지

10 rows selected.


SQL> select c.cust, g.gift
  2  from test14 c, test13 g
  3  where c.point between g.fpoint and g.tpoint;

CUST           GIFT
-------------- ----------------------------------------
771201-2233445 COMPUTER
620908-2121232 COMPUTER
500823-1132762 AUDIO
672102-2123452 의류교환권
650207-1765152 굴비세트
680801-1234455 갈비세트
701212-1143211 PCS무료가입권
710125-1144951 구두상품권
721109-2144952 녹차세트
721101-2144952 도서상품권

10 rows selected.


SQL> select g.gift, count(g.gift)
  2  from test14 c, test13 g
  3  where c.point between g.fpoint and g.tpoint
  4  group by g.gift;

GIFT                                     COUNT(G.GIFT)
---------------------------------------- -------------
COMPUTER                                             2
의류교환권                                           1
굴비세트                                             1
갈비세트                                             1
PCS무료가입권                                        1
구두상품권                                           1
AUDIO                                                1
녹차세트                                             1
도서상품권                                           1

9 rows selected.



SQL> select c.cust, c.point, p.gift
  2  from test14 c, test13 p
  3  where p.gift='갈비세트' and c.point > p.fpoint;

CUST                POINT GIFT
-------------- ---------- ----------------------------------------
650207-1765152   20239650 갈비세트
672102-2123452   40935040 갈비세트
500823-1132762   75636408 갈비세트
771201-2233445  129855120 갈비세트
680801-1234455   10059470 갈비세트
620908-2121232  123674200 갈비세트

6 rows selected.



SQL> select e.emp_id, e.emp_name, e.birth_date,
  2         trunc(months_between(sysdate, e.birth_date)/12) age, e.lev
  3  from temp e, emp_level l
  4  where trunc(months_between(sysdate, e.birth_date)/12) between l.from_age and l.to_age
  5       and l.lev='부장';

    EMP_ID EMP_NAME   BIRTH_DATE          AGE LEV
---------- ---------- ------------ ---------- ----
  19970101 김길동     25-JAN-74            37 부장
  19960101 홍길동     22-MAR-73            38 과장
  19970201 박문수     15-APR-75            36 과장
  19930331 정도령     25-MAY-76            35 차장
  19950303 이순신     15-JUN-73            38 대리
  19966102 지문덕     05-JUL-72            39 과장
  19930402 강감찬     15-AUG-72            39 차장
  19960303 설까치     25-SEP-71            40 사원
  19970112 연흥부     05-NOV-76            35 대리
  19960212 배뱅이     15-DEC-72            39 과장
  20000101 이태백     25-JAN-80            31 수습
  20000102 김설악     22-MAR-80            31 수습
  20000203 최오대     15-APR-80            31 수습
  20000334 박지리     25-MAY-80            31 수습
  20000305 정북악     15-JUN-80            31 수습
  20006106 유도봉     05-JUL-80            31 수습
  20000407 윤주왕     15-AUG-80            31 수습
  20000308 강월악     25-SEP-80            31 수습
  20000119 장금강     05-NOV-80            31 수습
  20000210 나한라     15-DEC-80            31 수습

20 rows selected.



SQL> select s.name s_name, s.grade, p.name p_name, p.position
  2  from professor p, student s
  3  where p.profno=s.profno(+);

S_NAME     G P_NAME     POSITION
---------- - ---------- --------------------
전인하     4 성연희     조교수
김영균     3 이만식     부교수
김진영     2 권혁일     교수
지은경     2 전은지     전임강사
오유석     4 권혁일     교수
임유진     2 전은지     전임강사
윤진욱     3 권혁일     교수
이광훈     4 성연희     조교수
김진경     2 이재우     조교수
류민정     2 전은지     전임강사
             김도훈     교수
             염일웅     전임강사
             남은혁     부교수

13 rows selected.



SQL> select e.emp_id, e.emp_name, e.lev,e.salary, l.from_sal, l.to_sal
  2  from temp e, emp_level l
  3  where e.lev=l.lev(+);

    EMP_ID EMP_NAME   LEV      SALARY   FROM_SAL     TO_SAL
---------- ---------- ---- ---------- ---------- ----------
  19960303 설까치     사원   35000000   30000000   40000000
  19970112 연흥부     대리   45000000   35000000   60000000
  19950303 이순신     대리   56000000   35000000   60000000
  19960212 배뱅이     과장   39000000   37000000   75000000
  19966102 지문덕     과장   45000000   37000000   75000000
  19970201 박문수     과장   50000000   37000000   75000000
  19960101 홍길동     과장   72000000   37000000   75000000
  19930402 강감찬     차장   64000000   40000000   80000000
  19930331 정도령     차장   70000000   40000000   80000000
  19970101 김길동     부장  100000000   60000000  100000000
  20000210 나한라     수습   30000000
  20000119 장금강     수습   30000000
  20000308 강월악     수습   30000000
  20000407 윤주왕     수습   30000000
  20006106 유도봉     수습   30000000
  20000305 정북악     수습   30000000
  20000334 박지리     수습   30000000
  20000203 최오대     수습   30000000
  20000102 김설악     수습   30000000
  20000101 이태백     수습   30000000

20 rows selected.


You may also like...

1 Response

  1. 딩구르 댓글:

    쥔장 고마워~
    참고할께. 즐거운 주말 되거라!

딩구르에 답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다