• 티스토리 홈
  • 프로필사진
    chantleman
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
chantleman
  • 프로필사진
    chantleman
    • 분류 전체보기 (328)
      • 프로젝트 (1)
      • react (2)
      • 코딩테스트 (133)
        • lv0 (101)
        • lv1 (10)
        • lv2 (7)
        • lv3 (15)
      • 오류 (14)
      • 리눅스 (5)
      • 자바 (75)
        • spring (7)
      • js (35)
      • 오라클 (39)
        • PLSQL (3)
      • cs (5)
      • 도커 aws (3)
      • 단축키 (3)
      • 나만봐 (0)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 테이블 join
        2024년 07월 15일
        • chantleman
        • 작성자
        • 2024.07.15.:34
        조인 종류 설명
        cross join 모든 가능한 행들의 조합
        (R X S)
        inner join(equi join) 조건이 일치하는 컬럼 매칭(주로 pk와 fk)
        natural join 각 테이블에 동일한 이름의 컬럼이 존재할 때 자동으로 조건이 적용
        non-equi join 조건절에서 join 조건이 '='이 아닌 다른 연산기호로 주어지는 경우 ('<', between a and b)
        outer join 조건이 일치하지 않더라도 모든 행들을 검색하고자 할 때 사용. (+) 로 표시
        (left / right / full outer join)
        self join 한 테이블 내에서 join하는 경우

         

        cross join

        select * from lprod, prod;
        select * from lprod cross join prod;
        select count(*) from lprod, prod, buyer;
        select count(*) from lprod cross join prod cross join buyer;

         

         

         

        inner join

        select prod.prod_id 상품코드, prod.prod_name 상품명, lprod.lprod_nm 분류명
        from prod, lprod where prod.prod_lgu = lprod.lprod_gu;
        
        select prod.prod_id 상품코드, prod.prod_name 상품명, lprod.lprod_nm 분류명
        from prod inner join lprod on (prod.prod_lgu = lprod.lprod_gu);

         

         

        join 조건식은 ON 다음에 기술하고, 그 이외의 조건은 WHERE절에 기술

        select prod_id 상품코드,prod_name 상품명,buyer_name 거래처명
        from prod
        inner join buyer on(prod_buyer=buyer_id)
        where buyer_name like '삼성전자%';

         

         

        natural join

         

         

         

         

        non-equi join

         

         

         

         

        outer join

        select lprod_gu 분류코드,lprod_nm 분류명, count(prod_lgu) 상품자료수
        from lprod, prod
        where lprod_gu=prod_lgu(+)
        group by lprod_gu, lprod_nm;
        
        
        select lprod_gu 분류코드, lprod_nm 분류명, count(prod_lgu) 상품자료수
        from lprod
        left outer join prod on (lprod_gu = prod_lgu)
        group by lprod_gu, lprod_nm
        order by lprod_gu;

         

        상품테이블에 등록안된 것도(상품자료수가 0인 것도) 확인하고 싶어서 left(right) outer join 사용



         

        inner join은 교집합 개념으로 생각하면 됨

        inner join에서 일치하지 않는 레코드는 모두 버렸지만

        outer join에서는 일치하지 않더라도 버리지 않고 null로 채워서 결과를 응답

         

         

        self join

        728x90

        '오라클' 카테고리의 다른 글

        테이블 복사, 삭제  (0) 2024.07.19
        데이터 자동 생성  (0) 2024.07.19
        rownum  (0) 2024.07.12
        오라클 REGEXP 함수  (0) 2024.07.12
        오라클 조건문  (0) 2024.07.12
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바