솜이의 데브로그

31-32 강 ) 집합, 테이블 결합 본문

CS/Database

31-32 강 ) 집합, 테이블 결합

somsoming 2021. 12. 21. 02:16

Reference : SQL 첫걸음

 

31강 ) 집합 연산

 

1. SQL과 집합

  • 데이터베이스에서는 테이블의 행이 요소에 해당한다.
  • SELECT 명령을 실행하면 데이터베이스에 질의하며 그 결과 몇 개의 행이 반환된다. 이 때 반환된 결과 전체를 하나의 집합이라고 본다.

 

2. UNION으로 합집합 구하기

  • UNION 함수를 사용해 합집합을 구할 수 있다.
  • SELECT * FROM sample71_a UNION SELECT * FROM sample71_b;
  • UNION으로 두 개의 SELECT 명령을 하나로 연계해 질의 결과를 얻을 수 있다.
  • 여러개의 SELECT 명령을 하나로 묶을 수 있다.

 

UNION을 사용할 때의 ORDER BY

  • UNION으로 SELECT 명령을 결합해 합집합을 구하는 경우, 각 SELECT 명령에 ORDER BY를 지정해 정렬할 수는 없다.
  • 마지막 SELECT 명령에만 지정 가능하다.
  • ORDER BY 구에 지정하는 열은 별명을 붙여 이름을 일치시킨다.

 

UNION ALL

  • UNION하는 경우, 중복값은 제거된다. 
  • 중복을 제거하지 않고 2개의 SELECT 명령을 그대로 합치고 싶은 경우, UNION ALL을 사용한다.
  • SELECT * FROM sample71_a
    UNION ALL
    SELECT * FROM sample71_b;
  • 증복값이 없는 경우에는 UNION ALL을 사용하는 편이 좋은 성능을 보인다.

 

 

3. 교집합과 차집합

  • 교집합은 INTERSECT를, 차집합은 EXCEPT 를 사용한다.

 

 

32강 ) 테이블 결합

 

1.곱집합과 교차결합

  • 곱집합은 두개의 집합을 곱하는 연산 방법으로 '적집합' 또는 '카티전곱'이라고 한다.

 

교차결합(Cross Join)

SELECT * FROM sample72_x, sample72_y;
  • FROM구에 복수의 테이블을 지정하면 교차결합을 한다.

 

UNION 연결과 결합 연결의 차이

  • 결합은 열(가로)방향으로 확대된다.

 

2. 내부 결합

  • 다른 테이블의 데이터를 참조해야하는 경우, 참조할 테이블의 기본키와 동일한 이름과 자료형으로 열을 만들어서 행을 연결하는 경우가 많다.
  • FROM 구에서 테이블을 서로 결합한다.
  • 교차결합으로 계산된 곱집합에서 원하는 조합을 검색하는 것을 '내부결합(Inner Join)'이라 한다.
    • ex)
      SELECT * FROM 상품, 재고수
      WHERE 상품.상품코드 = 재고수.상품코드;​
    • 첫 번째 조건식의 조건을 결합 조건이라 부른다.

 

 

3. INNER JOIN으로 내부결합하기

  • FROM 구에 테이블을 복수 지정해 가로 방향으로 테이블을 결합할 수 있다.
  • 교차결합을 하면 곱집합으로 계산된다.
  • WHERE 조건을 지정해 곱집합에서 필요한 조합만 검색할 수 있다.
  • INNER JOIN으로 두개의 테이블을 가로로 결합할 수 있다.
  • INNER JOIN으로 두개의 테이블을 가로로 결합할 수 있다.
SELECT * FROM 테이블명1 INNER JOIN 테이블명2 ON 결합조건

 

 

 

4. 내부결합을 활용한 데이터 관리

  • 외부키 : 다른 테이블의 기본키를 참조하는 열
  • 자기결합(Self Join) : 테이블에 별명을 붙일 수 있는 기능을 이용해 같은 테이블끼리 결합하는 것.
  • 자기 자신의 기본키를 참조하는 열을 자기 자신이 가지는 데이터 구조로 되어있을 경우 자주 사용된다.

 

 

5. 외부결합

  • 어느 한 쪽에만 존재하는 데이터행을 어떻게 다룰지를 변경한다.
  • LEFT JOIN, RIGHT JOIN으로 외부결합을 할 수 있다

'CS > Database' 카테고리의 다른 글

33-34강 ) 관계형 모델, DB 설계  (0) 2021.12.21
10장 ) 성능 향상(1)  (0) 2021.12.21
9장 ) 백업과 복구  (0) 2021.12.21
28-30강 ) 인덱스, 뷰  (0) 2021.12.05
8장 ) 테이블 설계(2)  (0) 2021.12.05