UNION으로 합집합 구하기
집합의 연산에는 '합집합' 이라는 것이 있다. 집합을 서로 더한 것을 말 한다.
SQL에서 집합을 계산할 경우 UNION 키워드를 사용한다.
'A UNION B' 라고 표현한다.
열 구성이 다른 테이블을 UNION으로 묶을 수는 없다.
전체 데이트를 반환하는 에스테리스크(*)를 쓰지 않고, 열을 따로 지정하여 사용하면 가능하다.
UNION ALL
중복을 제거하지 않고 모든 결과를 반환
중복값이 없는 경우에는 UNION ALL 을 사용하는 편이 좋은 성능을 보여준다.
테이블 결합(JOIN)
테이블 결합은 RDBMS에서 대단히 중요한 개념이다.
곱집합
두 개의 집합을 곱하는 연산 방법으로 '적집합' 또는 '카티전곱' 이라고도 불린다.
select*FROM sample72_x,sample72_y;
FROM 절에 테이블을 복수로 지정하면 곱집합이 된다.
테이블의 결합은 교차결합보다는 내부결합을 자주 사용한다.
내부결합
수학에서의 집합은 유일한 요소로 구성된다. 즉, 중복된 값이 존재하지 않는다는 뜻이다.
마찬가지로 관계형 데이터베이스에서도 테이블의 데이터가 유일한 값을 가지도록 권장한다.
간단히 말하면 기본키(PRIMARY KEY)를 가지도록 하는게 좋다는 것이다.
WHERE 구에는 두 개의 조건식이 지정되어 있다.
1 조건식은 교차결합으로 게산된 곱집합에서 원하는 조합을 검색.
2 조건식은 결합 조건이 아닌 검색 조건이다.
1 조건식의 조건을 '결합조건'이라 부른다.
INNER JOIN으로 내부결합
- FROM 구에 테이블을 복수 지정해 가로 방향으로 테이블을 결합할 수 있다.
- 교차결합을 하면 곱집합으로 게산된다.
- WHERE 조건을 지정해 곱집합에서 필요한 조합만 검색할 수 있다.
구식 방법에서는 쉼표로 구분하여 지정하였지만,
새로운 형식에서는 테이블과 테이블 사이에 INNER JOIN 이라는 키워드를 넣었다.
구식 방법에서는 WHERE 구에 결합조건을 지정하였지만 INNER JOIN 에서는 ON을 사용하여 결합조건을 지정한다.
외부결합
상품3에는 009라는 상품코드가 있지만 재고수 테이블에는 009 상품코드가 없다.
이런 경우 INNER JOIN을 하게되면 009인 추가상품은 내부결합 결과에서 제외가 된다.
3개 테이블 조인
테이블 2개 조인처럼 기준이 되는 테이블(상품3)을 정해준다.
그리고 똑같이 JOIN을 걸어주면 된다.
어렵게 생각할 필요가 없다.
INNER JOIN, LEFT, RIGHT 다 된다.
'DataBase > SQL' 카테고리의 다른 글
Sql 인덱스 (0) | 2020.06.29 |
---|---|
서브쿼리 (0) | 2020.06.24 |
CASE 문 (0) | 2020.06.22 |
mysql) time zone , window 버전 설치,변경 (0) | 2020.03.07 |
mysql 페이징 쿼리 & 자바 코드 (0) | 2020.02.21 |