5. 여러 개의 테이블을 로우로 연결하기
1) 명령어의 전제 조건
-서로 다른 테이블을 세로 방향으로 합치기 위해서는 2개의 쿼리문 사이에 연결하는 명령어 추가
-2개의 쿼리문으로 하나의 테이블을 만드는 것인 만큼 전제조건이 성립되어야 한다
(1) 두 SQL은 서로 컬럼의 개수가 동일해야 한다
(2) 같은 위치에 동일한 형식과 의미의 정보가 담겨야 한다
2) UNION / UNION ALL
(1)두 명령어의 차이점
-UNION 명령어는 중복되는 로우는 하나의 로우로만 표현한다
-UNION ALL 명령어는 중복여부를 확인하지 않고 그냥 두 테이블을 결합해서 출력한다
(2) UNION 명령어의 중복 제거
-UNION명령어는 두 테이블을 결합할 때 두 테이블에 중복되는 로우만 제거해서출력하는 것이 아니라
두 테이블을 먼저 합치고 합친 로우들을 모두 검사하여 중복이 있으면 제거한다
3) INTERSECT / INTERSECT ALL
-INTERSECT 명령어는 두 테이블에 공통되는 로우만을 남기는 명령어
-INTERSECT 명령어는 중복되는 결과를 한 번만 출력하고,
INTERSECT ALL 명령어는 중복을 제거하지 않는다
4) EXCEPT / EXCEPT ALL
-EXCEPT 명령어는 두 테이블의 로우 정보 중 중복되지 않는 부분만을 출력하는 명령어
-차집합과 동일한 결과이다 즉, A-B : A집합에서 B집합과 중복되는 데이터를 제거하고 A집합을 출력
-EXCEPT은 중복을 제거한 명령어, EXCEPT ALL은 중복을 제거하지 않은 명령어 이다
6. 여러 개의 테이블을 컬럼으로 연결하기
-연결된 관계를 읽기 편하게 만드는 방법은 두가지가 있다
-첫번째는 두 테이블을 합친 후 WHERE절을 이용하는 방법
-두번째는 JOIN문을 사용하는 것
1) FROM과 WHERE절을 이용한 데이터 결합
(1) 두 테이블을 모두 FROM 절에 불러오는 의미
-두 테이블의 각각의 로우에 대한 모든 조합이다
-두 테이블을 FROM절에 놓는 것은 테이블을 교차조인(CROSS JOIN)한다는 의미이다
-두 테이블의 각각의 로우가 서로 한번씩 결합시키는 것을 교차조인이라고 한다
-FROM 컬럼명 , 컬렴명 또는 FROM 컬러명 CROSS JOIN 컬럼명
(2) WHERE절로 결합된 데이터 고르기
-FROM절에 2개의 테이블을 올린후 원하는 정보만 걸러내는 것
-FROM과 WHERE절을 이용하여 여러 테이블의 컬럼 정보를 결합하기 위해서는
1.FROM절에 두 테이블을 모두 적어서 두 테이블 로우의 모든 조합을 먼저 구한다
2.각 테이블의 로우의 모든 조합에서 우리가 생각하기에 컬럼사이의 관계가 의미있는
정보만 남도록 WHERE절에 조건을 걸면 두 테이블의 관계가 연결된 조합만 남게된다
2) JOIN을 이용한 데이터 결합
-FROM절에 단순히 나열해서 놓는 것이 아닌 JOIN문을 활용해서 두 테이블을 서로 연결할 것임을 명시적으로 표현한다
(1) 다양한 JOIN의 종류
-JOIN문은 여러 테이블의 컬럼정보를 결합하는 결합 구문이다
-외부조인과 내부조인 구문으로 구분할 수 있다 (INNER JOIN / OUTER JOIN)
-내부조인문은 두 테이블 값이 서로 연결되는 부분만 결과로 출력
-외부조인문은 서로 연결되지 않고 한쪽에만 데이터가 있는 로우도 출력
-INNER JOIN = JOIN (축약)
-LEFT OUTER JOIN = LEFT JOIN (축약)
>LEFT JOIN 명령어는 명령어 앞에 쓰인 테이블을 기준으로 뒤에 쓰인 테이블과 연결되는 정보만 불러온다
>연결된 정보가 없다면 NULL값으로 출력한다
-RIGHT OUTER JOIN = RIGHT JOIN(축약)
>LEFT JOIN 명령어와는 반대로 뒤에 적힌 테이블을 기준으로 정보를 출력한다
-FULL OUTER JOIN = FULL JOIN
>연결된 로우는 서로 연결하여 출력하고,
서로 연결되지 않은 로우는 연결되지 않은 부분의 정보를 NULL값으로 비워둔 채 출력
(2) JOIN문이 사용되는 위치
-FROM절 뒤에 위치해 있다
-FROM절 안에 JOIN문이 들어있고 WHERE절은 그 다음에 위치해 있다
(3) JOIN문 뒤에 오는 명령어
테이블 JOIN 테이블 ON 연결할 조건
테이블 JOIN 테이블 USING (연결할 컬럼 목록)
-ON 명령어 뒤에는 테이블을 연결하는 조건을 적는다
-USING 명령어 뒤에는 두 테이블을 연결할 공통된 컬럼 이름을 적는다
(만약 두 테이블을 연결하는 컬럼의 이름이 서로 다르다면 USING절을 사용할 수 없다)
(3) JOIN과 함께 쓰이는 함수
1) COALESCE
-COALESCE(인자1, 인자2,..,인자N)
-COALESCE함수는 첫번째 인자부터 순서대로 NULL값이 아니면 그 값을 반환하고,
만약 NULL 값이라면 다음 인자를 확인한다
즉, 인자를 순서대로 확인해서 NULL값이 아닌 값이 나오면 그 값을 반환하는 함수이다
-EX) SELECT div, COALESCE(div, 0)
FROM table_a;
= > div컬럼의 값중 null이 있다며 출력할때 0으로 출력해라
'SQL > 모두를 위한 postgreSQL' 카테고리의 다른 글
[PostgreSQL] 7. 데이터 인덱싱_(1) (0) | 2023.03.21 |
---|---|
[PostgreSQL] 6. 데이터 모델링 (0) | 2023.03.20 |
[PostgreSQL] 5. 데이터의 집계_2 (0) | 2023.03.17 |
[PostgreSQL] 5. 데이터의 집계 및 결합_1 (0) | 2023.03.16 |
[PostgreSQL] 4.쿼리에사용되는연산자와함수 (0) | 2023.03.14 |