Challenges/정보처리기사

[정보처리기사]3.데이터베이스 구축/SQL응용/조인, 집합연산

뚱요 2022. 6. 14. 00:00
반응형

결합 : 조인, 집합연산

1.결합

결합 방법은 JOIN, 집합연산을 통해 가능하다.

 결합하는것이 공통점이지만 데이터 결합 방식이 상이하다. 좌측은 JOIN을 통해 테이블 간 수평 결합을 하고 우측은 집합 연산을 통해 쿼리 간 수직 결합을 한다.

JOIN과 집합연산

 

1.1 조인(JOIN)

- 결합을 의미하며, 관계형 데이터베이스에서의 조인은 교집합 결과를 가지는 결합 방법을 의미

- 두 릴레이션으로부터 연관된 튜플들을 결합해, 하나의 새로운 릴레이션을 반환

 

1.1) 논리적 조인

(1 )Inner Join 

  • EQUI JOIN(동등 조인 ) =으공통 존재 컬럼의 값이 같은 경우를 추출
  • NON-EQUI JOIN(비동등 조인 ) 비교 연산자로 컬럼의 값이 해당하는 경우를 추출(<,<=,>,>=,BETWEEN AND)
  • NATURAL JOIN(자연 조인) 두 테이블의 모든 컬럼을 비교해 같은 컬럼 명을 가진 값이 같은 경우 추출
  • CROSS JOIN(교차 조인) 조인 조건이 없는 모든 데이터 조합을 추출 

JOIN <Table2> ON <Table1>. <속성명> = <Table2> . <속성명>    21년 2회 실기

--SELECT 절 생략
FROM <table1> 
JOIN <Table2> USING <속성명>

--SELECT 절 생략
FROM <table1> 
JOIN <Table2> ON <Table1>. <속성명> = <Table2> . <속성명>

--SELECT 절 생략
FROM  <table1> ,<Table2>  
WHERE  <table1>. <속성명> = <Table2> . <속성명>
USING은 정확히 동일한 속성명을 갖는 속성 하나만을 갖고 결합한다.
ON은 1개이상의 컬럼과 조건을 주어 결합 가능하다.

(2) Outer Join

  • LEFT OUTER JOIN(왼쪽 외부 조인) 왼쪽 테이블의 모든 데이터, 오른쪽 테이블에서는 동일 데이터만 추출
  • RIGHT OUTER JOIN(오른쪽 외부 조인) 오른쪽 테이블의 모든 데이터, 왼쪽 테이블에서는 동일 데이터만 추출
  • FULL OUTER JOIN(완전 외부 조인) 양쪽의 모든 데이터를 추출
--SELECT 절 생략
FROM <Table1> 
LEFT OUTER JOIN <Table2> ON <Table1>. <속성명> = <Table2> . <속성명>

--SELECT 절 생략
FROM  <Table1> ,<Table2> 
WHERE  <Table1>. <속성명>(+) = <Table2> . <속성명>

 

1.2) 물리적 조인

  • NESTED-LOOP JOIN (중첩 반복 조인) 2개 이상의 테이블에서 하나의 집합을 기준으로 순차적으로 상대방 Row를 결합해 원하는 결과를 조합하는 방식
  • SORT-MERGE JOIN(정렬 합병 조인) 양쪽 테이블의 정렬한 결과를 차례로 검색하면서 연결고리 형태로 합병하는 방식
  • HASH JOIN(해시 조인) 해싱 함수 기법을 활용하여 조인을 수행하는 방법

 

2. 집합 연산자 

- 테이블을 집합 개념으로 보고, 두 쿼리 연산에 집합 연산자를 사용하는 방식

- 여러 질의 결과를 연결해 하나로 결합하는 방식을 사용

  • UNION 중복 행이 제거된 쿼리 결과 집합(합집합)
  • UNION ALL 중복 행이 제거되지 않은 쿼리 결과 집합
  • INTERSECTION 두 쿼리 결과에 공통적으로 존재하는 집합(교집합)
  • EXCEPT/MINUS 첫 쿼리에 있고 두 번째 쿼리에는 없는 집합(차집합)
SELECT <속성1>,<속성2> FROM <Table1>

UNION

SELECT <속성1>,<속성2> FROM <Table2>

3. 서브쿼리(Sub-Query)  

SQL문(Main 쿼리) 안에 포함된 또 다른 SQL문(하위 /중첩된 쿼리)

메인 쿼리 실행 전 서브쿼리가 먼저 실행되어 결과를 메인쿼리에 보냄

3.1 반황 행 수

  • 단일 행(Single Row) 서브쿼리 결과가 항상 1건 이하인 서브쿼리
    비교연산자
  • 다중 행(Multiple Row) 서브쿼리 실행 결과가 여러인 서브쿼리
    다중행 비교 연산자 IN, ANY, ALL, EXISTS 사용

3.2 종류

  • 스칼라 서브쿼리 SELECT문에 서브쿼리를 사용
  • 인라인뷰 FROM구에 SELECT문을 사용
  • 서브쿼리 WHERE구에 SELECT문을 사용

(1) 서브쿼리

- WHERE구에 SELECT문을 사용

-- 서브쿼리
SELECT * FROM 테이블 WHERE 칼럼 = 
    (SELECT 칼럼명 FROM 테이블명 WHERE 조건);

 

(2) 인라인 뷰

- FROM 구에 사용

- 가상의 테이블을 만들어 거기서 데이터를 조회하는 방식

-- 인라인 뷰

SELECT * FROM (SELECT 칼럼명 FROM 테이블명 WHERE 조건) WHERE 조건;

 

(3) 스칼라 서브쿼리

- SELECT문에 사용

- 반드시 한 행과 한 칼럼만 반환하며, 여러 행이 반환되면 오류가 발생

-- 스칼라 서브쿼리

SELECT *,(SELECT 칼럼명 FROM 테이블명) FROM 테이블 WHERE 조건;

 

 

4.기타

4.1 주석 처리 

--        ‘--‘이 시작하는 위치부터 해당 라인 끝까지 실행이 되지 않도록 함

/*   */    ‘/*’이 시작되는 부분부터 ‘*/’이 나타날 때까지의 여러 라인을 실행 되지 않도록 함

-- 한줄 주석
/* 여러
줄 
주석
*/

4.2 힌트의 사용 :- SQL 문에 사전 정보를 줘서, SQL문 실행에 빠른 결과를 가져오는 효과를 만드는 문법

  • --+ 힌트명(파라미터) ‘--+’이 시작되는 위치부터 힌트로 인식

/*+ 힌트명(파라미터) */ ‘/*+’이 시작되는 부분부터 ‘*/’ 사이를 힌트로 인식

 

[정보처리기사] 정보처리기사 필기 목차

 

[정보처리기사] 개정된 정보처리기사 필기 목차

 정처기 필기 100문제 중 각 챕터 당 20문제로 구성됩니다. 출판사 시나공의 정보처리기사 교재와 이전 기출문제들을 참고로 하여 간단히 키워드로요약하여 작성하였습니다. 각 중요도에 따라서

potato-potahto.tistory.com

반응형