TIL 데이터베이스(7장)

finelinefe·2020년 10월 23일
0

DATABASE

목록 보기
9/12
post-thumbnail

💡 UNION = 합집합

SELECT * FROM 테이블명1 UNION SELECT * FROM 테이블명2;

❗️UNION으로 두 개의 SELECT 명령을 하나로 합쳐 결과를 얻을 수 있다.

앞서 연산을 실행하기 위해 sample_A, sample_B 집합을 CREATE 하고 데이터를 INSERT했다.

샘플A의 데이터베이스에는 각 1,2,3을 넣고 샘플B의 데이터베이스에는 2,10,11을 넣었다.

연산 결과 샘플A와 샘플B의 모든 데이터가 출력됐다.

❗️UNION에서 ORDER BY 사용 = 맨 마지막에 지정한다

연산을 먼저 실행한 후 마지막에 정렬을 지정해야 결과값이 나온다.

❗️열 이름 불일치 = AS (새로운 열이름 생성) ORDER BY

하지만 sample_A, sample_B 모두 열의 이름이 a 로 동일하기 때문에 가능했지만 열 이름이 다른 테이블과 합 연산을 실행할 경우에는 AS 를 사용해서 새로운 이름으로 ORDER BY 할 수 있다.
우선 열이름이 a가 아닌 b라는 다른 이름을 갖는 sample_C라는 테이블을 생성했다.
그 다음 AS newname을 사용해서 이름 불일치 문제를 해결하고 마지막에 ORDER BY를 사용해서 UNION 연산을 실행했다.

❗️UNION = 중복 X  /  UNION ALL = 중복O


일반적으로 UNION 연산에서의 결과는 중복값이 제외된 결과만을 정제하여 보여준다. 그러나 경우에 따라 중복값을 허용하여 보여주고 싶을땐 UNION ALL 연산을 사용하면 된다.

💡CROSS JOIN = 교차결합

SELECT * FROM 테이블명1, 테이블명2

A,B,C 각각의 데이터를 갖는 집합 x와 1,2,3을 가진 y를 생성했다.각각의 요소를 교차결합한다면 아래와 같이 나온다.

❗️두 개 이상의 다수 테이블 결합 = 내부결합 사용

SELECT * FROM 테이블명1, 테이블명2

SELECT * FROM 테이블명1 INNER JOIN 테이블명2 ON 결합조건


❗️외부결합 = LEFT JOIN, RIGHT JOIN

뿐만 아니라 LEFT JOIN, RIGHT JOIN을 통해 외부결합을 할 수 있다.


💡관계형 모델

  • 합집합 = SELECT * FROM A UNION SELECT * FROM B
  • 차집합 = SELECT * FROM A EXCEPT SELECT * FROM B
  • 교집합 = SELECT * FROM A INTERSECT SELECT * FROM B
  • 곱집합 = SELECT * FROM A,B / SELECT * FROM A CROSS JOIN B

❗️정리

  • 내부결합은 곱집합에서 필요한 행만 검색하도록 조건을 지정해 결합하는것
  • 외부결합은 결합되지 않는 행을 강제적으로 결과에 포함하는 방법
  • 관계형 모델은 관계형 데이터베이스의 기반이 된다.
profile
Backend Developer

0개의 댓글