728x90
JOIN
- JOIN은 두 개의 테이블을 서로 묶어서 데이터를 검색하는 방법을 말한다.
- 연결하기 위해서는 테이블이 적어도 하나의 컬럼을 공유해야한다
INNER JOIN(내부 조인)
두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다.
- 교집합
SELECT <열 목록>
FROM <첫 번째 테이블>
JOIN <두 번째 테이블>
ON <조인될 조건>
[WHERE 검색 조건]
* INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식합니다.
-------------------------------------------------------------
SELECT <열 목록>
FROM <첫 번째 테이블> , <두 번째 테이블>
WHERE
조인될 조건 AND
검색 조건
# "," = JOIN / ON에 쓸 조인 조건을 WHERE 에 써서 더짧게 작성 가능
OUTER JOIN(외부 조인)
두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.
- 합집합(MYSQL에서는 LEFT JOIN + RIGHT JOIN)
SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
<LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
ON <조인될 조건>
[WHERE 검색 조건]
- LEFT OUTER JOIN - 왼쪽 테이블 모든 값 출력
- RIGTH OUTER JOIN - 오른쪽 테이블 모든 값 출력
- FULL OUTER JOIN - 왼쪽 또는 오른쪽 테이블의 모든값이 출력
CROSS JOIN(상호 조인)
- 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능이다.
- 상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수만큼 됩니다.
- 카티션 곱(CARTESIAN PRODUCT)라고도 합니다.
SELECT *
FROM <첫 번째 테이블>
CROSS JOIN <두 번째 테이블>
SELF JOIN(자체 조인)
자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용한다.
SELECT <열 목록>
FROM <테이블> 별칭A
INNER JOIN <테이블> 별칭B
ON <조인될 조건>
[WHERE 검색 조건]
UNION
여러 개의 SELECT 문의 결과를 단일 결과 세트로 연결 표현할떄 사용
(합친 결과에서 중복되는 행은 하나만 표시합니다.
=> DISTINCT 키워드를 따로 명시하지 않아도 기본적으로 중복되는 레코드를 제거)
- UNION 내의 각 SELECT 문은 같은 수의 열을 가져야 한다.
- 각각 SELECT 문의 열은 또한 동일한 순서로 있어야 한다.
- 열은 호환되는 데이터 형식을 가져야 한다.
SELECT * FROM A
UNION (ALL)
SELECT * FROM B
UNION ALL
UNION ALL도 두 SQL 문의 결과를 결합하는데 사용되는 명령이다.
UNION ALL가 UNION과 다른 점은 UNION ALL은 데이터 값이 중복되더라도 조건에 일치하는 데이터를 모두 표시한다.
(= UNION ALL 은 중복을 제거하지 않습니다. => 중복되는 여러 레코드 출력을 원하면 사용)
SELECT ID, NAME FROM TABLE1 ;
UNION ALL
SELECT ID, NAME FROM TABLE2 ;
JOIN 과 UNION 의 차이
- UNION: 하나의 결과 세트만 나타난다.
- JOIN: 적어도 하나의 속성이 공통인 두 테이블 속성을 결합하고자 할 때 사용된다.
JOIN | UNION |
적어도 하나의 속성이 공통인 두 테이블 속성을 결합하고자 할 때 사용된다. | 하나의 결과 세트만 나타난다. |
새로운 열로 결합 (수평결합) | 새로운 행으로 결합(수직결합) |
두 개의 테이블 결합 시, 첫 번째 테이블의 데이터는 동일한 행의 두 번째 테이블 열과 함께 한 열 세트에 표시 |
두 개의 테이블 결합 된 경우, 첫번째 테이블의 데이터는 한 행 세트에 있고 두 번째 테이블 데이터는 다른 세트에 |
참고 한곳
728x90
'SQL' 카테고리의 다른 글
sqld rollup,cube ~윈도우함수 (108~127) (1) | 2023.05.30 |
---|---|
sql 의 쿼리 실행 순서 (1) | 2023.02.21 |
WHERE,HAVING 의 차이 (0) | 2023.02.14 |
DDL, DML, DCL,TCL (0) | 2023.02.05 |
SQL 조건문 (0) | 2022.10.01 |
댓글