- 테이블 join2024년 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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)