관리 메뉴

플랫폼공작소 IT Blog

[SQLD강의] INNER JOIN, INTERSECT 연산이란? 본문

2. 강의실/[5분 SQLD]

[SQLD강의] INNER JOIN, INTERSECT 연산이란?

솜픽(Sompic) 플랫폼공작소 2020. 3. 26. 13:14

안녕하세요. 플랫폼공작소입니다. 오늘은 INNER Join그리고 교집합을 구하는 INTERSECT연산에 대해서 설명드리겠습니다


먼저 INNER JOIN이란, 앞 시간에 설명드렸던 EQUI 조인과 마찬가지로 ANSI 표준 SQL 중 하나입니다. ANSI 표준에 맞춰서 SQL을 작성하면 ORACLE이든 MYSQL이든 MSSQL이든 어떤 DBMS에서도 실행이 가능한 공통 문법이 됩니다. 바로 INNER JOIN에 대한 예시를 보여드리겠습니다.

쿼리문장은 이렇게 됩니다. EMP테이블이랑 DEPT테이블이랑 결합해서 정보를 가져오는 문장입니다. INNER JOIN 구문 앞 뒤로 연결하실 테이블명을 기술하시고 ON절에는 각 테이블에서 공통적으로 가지고 있는 컬럼을 작성하시면 됩니다.


INNER JOIN의 장점은 가독성입니다. WHERE절에 검색 조건과 조인정보가 함께 기술되었던 EQUI JOIN과 달리 INNER JOIN은 조인정보가 ON절에 명확히 기술되있습니다. 그래서 쿼리문이 몹시 길어졌을 때, 눈에 비교적 잘 들어온다는 장점이 있는 것입니다. 표로 표현하면 이렇게 됩니다.

조인의 대상이 되는 두 테이블에서 / 공통적으로 존재하는 / 컬럼deptno ON절에 기술하여 두 테이블을 연결합니다. 연결하면

이와 같은 결과를 얻을 수 있습니다. 두 테이블이 이렇게 붙은 것이죠.


쿼리 마지막에 자세히 보면 검색조건인 WHERE 하나가 띡하고 붙어있습니다.


ENAME 칼럼의 값이 HAN인 행을 찾으라는 의미입니다. 적용하면


다음 같은 최종결과를 얻을 수 있습니다.


다음으로는 INTERSECT연산에 대해서 알아보겠습니다. INTERSECT는 테이블 간에 교집합을 구하고 싶을 때 사용하는 연산입니다.


쿼리로 쓰면 이렇게 됩니다. SELECT 문장 두 개 사이에 INTERSECT를 기술하면 됩니다.


참고로 INTERSECT 연산을 할 경우 SELECT 항목의 데이터 타입 그리고 순서도 똑같아야 합니다. 제가 보라색으로 글씨를 칠한 부분이고요, 지금 저 쿼리처럼 DEPTNO가 아니라 DANME, DLOCATION처럼 뭐 이런 것들 맘대로 들어오면 에러가 나게 됩니다. 사용할 때 이거만 주의하시면 됩니다.


그림으로 표현하면 이렇게 되고요두 테이블에서 공통적으로 존재하는 값만 조회하실 수 있습니다오늘 간단하게 INNER JOININTERSECT연산에 대해서 알아보았습니다. 질문사항이 있으면 댓글에 남겨주시면 되고요, 다음 시간에는 OUTER JOIN에 대해서 다뤄보도록 하겠습니다제 포스팅 읽어주셔서 감사 드리고 좋은 하루 보내시길 바랍니다.



reference : 오라클 11g + PL/SQL 입문

reference : SQL 개발자 이론서 + 문제집

광고 링크 : 플랫폼공작소플랫폼공작소TV쇼핑몰



0 Comments
댓글쓰기 폼