데이터 연결하기 | 집합 연산자 테이블이 밑으로 붙음↕️
● UNION : 중복 제거 후 테이블을 밑으로 붙임
● UNION ALL : 중복 포함 하여 테이블을 밑으로 붙임
● INTERSECT : 중복 제거 후 교집합만 출력
● MINUS / EXCEPT : 중복 제거 후 차집합만 출력
데이터 연결하기 | 𝙅𝙊𝙄𝙉 테이블이 옆으로 붙음↔️
- 두 개 이상의 테이블을 연결하여 데이터를 한번에 출력해주는 구문
- JOIN 되는 두 테이블에 모두 존재하는 컬럼(명)의 경우, 컬럼명 앞에 반드시 테이블명이나 ALIAS를 명시해주어야 함
➊ 𝙀𝙌𝙐𝙄 𝙅𝙊𝙄𝙉
- EQUAL (=) 조건으로 JOIN 하는 테이블들의 칼럼 값에 ' =' 조건이 성립하는 경우 가능
- 가장 흔한 조인방식
- 테이블 간에 PK, FK의 연관관계가 없어도 JOIN이 가능
➋ 𝙉𝙊𝙉 𝙀𝙌𝙐𝙄 𝙅𝙊𝙄𝙉
EQUAL (=) 조건이 아닌 다른 조건 :' BETWEEN , > , >= ,< , <=' 조건이 성립하는 경우 가능
➌ 𝙊𝙐𝙏𝙀𝙍 𝙅𝙊𝙄𝙉
JOIN 조건에 만족하지 않는 행들도 출력되는 형태
➌ -① 𝙇𝙀𝙁𝙏 𝙅𝙊𝙄𝙉
- SQL에서 왼쪽에 표기된 테이블의 데이터는 무조건 출력되는 JOIN
- 오른쪽 테이블에 JOIN되는 데이터가 있든지 말든지 일단 나는 출력
- 대신, 오른쪽 테이블에 JOIN되는 데이터가 없는 ROW들은 오른쪽 테이블 컬럼의 값이 NULL로 출력됨
➌ -② 𝙍𝙄𝙂𝙃𝙏 𝙅𝙊𝙄𝙉
- SQL에서 오른쪽에 표기된 테이블의 데이터는 무조건 출려되는 방식
- 왼쪽 테이블에 JOIN되는 데이터가 있든 말든, 일단 나는 출력
- 대신, 왼쪽 테이블에 JOIN되는 데이터가 없는 ROW들은 왼쪽 테이블 칼럼의 값이 NULL로 출력
➌ -③ 𝙁𝙐𝙇𝙇 𝙊𝙐𝙏𝙀𝙍 𝙅𝙊𝙄𝙉
- 왼쪽, 오른쪽 테이블의 데이터가 모두 출력되는 방식
- 단, 중복값은 제거!
- My SQL에서는 문법적으로 지원이 되지 않으므로, RIGHT JOIN한 테이블과 LEFT JOIN한 테이블을 UNION 하는 방식으로 쿼리를 작성하면 됨
EX)
SELECT *
FROM A
LEFT JOIN B ON A.ID=B.ID
UNION
SELECT *
FROM A
RIGHT JOIN B ON A.ID=B.ID
➍ 𝙄𝙉𝙉𝙀𝙍 𝙅𝙊𝙄𝙉
- JOIN 조건에 만족하는 데이터만 출력되는 것
- JOIN 조건은 ON 절을 사용하여 작성
➎ 𝙉𝘼𝙏𝙐𝙍𝘼𝙇 𝙅𝙊𝙄𝙉
- A테이블과 B테이블에서 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우 JOIN이 되는 방식
- 공통 컬럼 앞에 테이블 명이나 ALIAS를 붙이면 에러가 발생 .'
- NATURAL JOIN에는 ON절을 쓸 수 없음
- USING 조건절을 이용하여 같은 이름을 가진 컬럼 중 원하는 컬럼만 JOIN에 이용할 수 있음
- 단, SELECT 절에서 USING 절로 정의된 컬럼 앞에는 별도의 ALIAS나 테이블명을 붙이지 않아야 함
➏ 𝘾𝙍𝙊𝙎𝙎 𝙅𝙊𝙄𝙉
- A 테이블과 B테이블 사이에 JOIN되는 조건이 없는 경우, 조합할 수 있는 모든 경우를 출력하는 방식
- 별도의 ON절이 없는게 특징
- JOIN에서 WHERE절을 안쓰면 CROSS JOIN이 됨 / Cartesian product (카터션 곱)이 됨
- CROSS JOIN은 ON절이 없는 INNER JOIN과 같은 결과를 출력함
1) SELECT BOY_NAME
,GIRL_NAME
FROM GIRL, BOY B ;
2) SELECT BOY_NAME
,GIRL_NAME
FROM GIRL CROSS JOIN BOY B ;
1)과 2)는 같은 결과를 출력
'💾 나만 몰랐던 > SQL' 카테고리의 다른 글
🎱 나만 몰랐던 SQL | 문자열 연산 (0) | 2024.11.15 |
---|---|
🎱 나만 몰랐던 SQL | 수치 연산 (0) | 2024.11.15 |
🎧 나만 몰랐던 SQL | 𝙉𝙐𝙇𝙇 (0) | 2024.11.15 |
👩🏻💻 나만 몰랐던 SQL | 기본 구문 (2) | 2024.11.15 |
👩🏻💻 나만 몰랐던 SQL 용어 (1) | 2024.11.15 |