티스토리 뷰
728x90
조인(Join)은 데이터베이스에서 여러 개의 테이블을 결합하여 하나의 결과 집합을 만드는 연산입니다. 일반적으로 테이블들은 서로 관련된 데이터를 갖고 있을 때, 해당 데이터를 효과적으로 조회하거나 분석하기 위해 조인을 사용합니다. 조인을 통해 테이블 간의 연관성을 기반으로 데이터를 통합하여 필요한 정보를 얻을 수 있습니다.
조인의 종류와 설명
1. 세타 조인 (Theta Join)
- 두 테이블의 속성을 비교하여 일반적인 조건(=, <, >, <=, >=, != 등)을 사용해 조건을 만족하는 튜플을 반환하는 조인 방식입니다.
- 가장 일반적인 조인으로, 다양한 비교 연산자를 사용할 수 있습니다.
예시:
SELECT *
FROM A, B
WHERE A.id != B.id;
2. 동등 조인 (Equi-Join)
- 두 테이블의 속성 값이 정확히 일치하는 경우에 해당하는 튜플을 반환하는 조인입니다.
- 동등 조인은 세타 조인의 특별한 형태로, = 연산자만 사용하는 조인입니다.
- 조인된 결과에는 두 테이블의 중복된 속성이 그대로 나타납니다.
예시:
SELECT *
FROM A
JOIN B ON A.id = B.id;
3. 자연 조인 (Natural Join)
- 동등 조인의 확장으로, 조인에 참여하는 두 테이블의 중복된 속성을 제거하는 조인 방식입니다.
- 두 테이블에서 이름이 같은 속성들을 자동으로 매칭하여 조인합니다. 결과에는 중복된 속성이 하나만 표시됩니다.
- 이 조인은 같은 이름을 가진 속성을 자동으로 찾기 때문에 조인 조건을 따로 지정하지 않습니다.
예시:
SELECT *
FROM A
NATURAL JOIN B;
4. 내부 조인 (Inner Join)
- 조인 조건을 만족하는 튜플만 반환하는 조인입니다. 즉, 두 테이블 간에 공통된 데이터가 있는 경우에만 결과를 보여줍니다.
- SQL에서 단순히 JOIN이나 INNER JOIN으로 표현됩니다.
예시:
SELECT *
FROM A
INNER JOIN B ON A.id = B.id;
5. 외부 조인 (Outer Join)
- 조인 조건을 만족하지 않는 튜플도 결과에 포함시킵니다. 외부 조인은 다시 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN으로 나뉩니다.
LEFT OUTER JOIN: 왼쪽 테이블의 모든 튜플과 오른쪽 테이블에서 조인 조건을 만족하는 튜플을 반환합니다. 왼쪽 테이블에 해당하는 값이 없는 경우, NULL로 채워서 반환합니다.
SELECT *
FROM A
LEFT JOIN B ON A.id = B.id;
RIGHT OUTER JOIN: 오른쪽 테이블의 모든 튜플과 왼쪽 테이블에서 조인 조건을 만족하는 튜플을 반환합니다. 오른쪽 테이블에 해당하는 값이 없는 경우, NULL로 채워서 반환합니다.
SELECT *
FROM A
RIGHT JOIN B ON A.id = B.id;
FULL OUTER JOIN: 두 테이블의 모든 튜플을 포함하며, 조인 조건을 만족하지 않는 경우에는 NULL로 채워서 반환합니다.
SELECT *
FROM A
FULL JOIN B ON A.id = B.id;
6. 교차 조인 (Cross Join)
- 두 테이블의 모든 가능한 조합을 반환합니다. 테이블의 각 행이 다른 테이블의 모든 행과 조합되어 반환됩니다. 이를 카티션 곱이라고도 합니다.
- 조인 조건을 지정하지 않은 경우 발생할 수 있으며, 결과 튜플의 개수는 두 테이블의 행 개수를 곱한 값이 됩니다.
예시:
SELECT *
FROM A
CROSS JOIN B;
요약
- 세타 조인: 두 테이블의 값을 다양한 조건(=, <, >, 등)으로 비교해 조건을 만족하는 튜플을 반환합니다.
- 동등 조인: 세타 조인의 일종으로, = 연산을 사용하여 속성 값이 같은 튜플을 반환합니다.
- 자연 조인: 동등 조인에서 중복된 속성을 하나로 통합해 반환합니다.
- 내부 조인: 조인 조건을 만족하는 튜플만 반환합니다.
- 외부 조인: 조인 조건을 만족하지 않는 튜플도 포함하며, NULL로 채워 반환합니다.
- 교차 조인: 두 테이블의 모든 행 조합을 반환합니다.
728x90
'Study > 정보처리기사' 카테고리의 다른 글
공격 기법 관련 문제 (0) | 2024.10.07 |
---|---|
악성 프로그램 관련 문제 (0) | 2024.10.07 |
정처기 네트워크 관련 용어와 개념 (1) | 2024.10.07 |
정규화란? (도부이결다조) (2) | 2024.10.07 |
서브넷 마스크로 네트워크 범위 계산하기 (0) | 2024.10.07 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- pwa(progressive web app)
- 중첩 함수(nested function)
- chrome extension 자동 배포
- Jest
- 원시값(primitive)
- x.y.z (메이저.마이너.패치)
- math.h
- named export vs default export
- public vs assets
- react
- 시맨틱 버전(semantic versioning
- javascript 필수 문법
- ajax (asynchronous javascript and xml)
- jackson 라이브러리
- styled-components
- structuredclone()
- 쉽게 풀어쓴 C언어 Express
- Collections
- 소프트웨어 버전 관리
- react router
- counter
- inp
- json.parse(json.stringify())
- defaultdict
- useEffect
- semver)
- core web vitals
- stdlib.h
- mermaid-cli
- 프로세스 강제 종료
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함