티스토리 뷰

SQL/SQLD 이론

[SQLD] SQL 활용 : 1절 표준조인

개발자 김챠챠 2025. 3. 7. 17:31

1절 표준 조인


표준 조인(standard join)

SQL에서 여러 테이블을 결합하여 데이터를 조회하는 방법

ANSI/ISO 표준

  • INNER JOIN
  • NATURAL JOIN
  • CROSS JOIN
  • OUTER JOIN

INNER JOIN

-- 기본 INNER JOIN
SELECT 컬럼[, 컬럼...] FROM 테이블1 A, 테이블2 B
	WHERE A.컬럼 = B.컬럼;

-- ANSI/ISO 표준
SELECT 컬럼[, 컬럼...] FROM 테이블1 A
	[INNER] JOIN 테이블2 B ON (A.컬럼 = B.컬럼);
    
-- USING
SELECT 컬럼[, 컬럼...] FROM 테이블1 A JOIN 테이블2 B USING(컬럼명);

두 테이블에서 조건에 일치하는 데이터를 반환하는 방식으로, 등가 조인 / 비등가 조인 모두 가능

JOIN은 디폴트값이 INNER JOIN이므로, INNER 생략 가능

INNER JOIN 내부에서 OUTER JOIN, CROSS JOIN을 사용할 수 없음(개별적 사용)

USING 또는 ON 조건절 필수

USING 조건절

같은 같은 이름을 가진 컬럼 중 등가 조인할 컬럼을 선택하는 방식

USING 조건절엔 컬럼명이 들어가며, 앨리어스나 테이블 사용이 불가

SQL SERVER에서는 USING 지원 X

ON 조건절

다른 이름을 가진 컬럼간 조인이 가능하며, 앨리어스나 테이블명 필수

조건절에 괄호를 사용해야 하지만, 필수는 아님


NATURAL JOIN

SELECT 컬럼[,컬럼 ...] FROM 테이블1 NATURAL JOIN 테이블2;

같은 이름을 가진 컬럼 전체에 대한 등가 조인으로, USING 조건절이나 ON 조건절 사용 불가

같은 데이터 유형 컬럼만 조인 가능

SELECT 절에 테이블 명이나 테이블의 앨리어스 사용 불가


CROSS JOIN

SELECT 컬럼[, 컬럼...] FROM 테이블1,테이블2;

가능한 모든 조합(카테시안 곱)을 생성하며, 조인조건이 없을 경우 발생


OUTER JOIN

-- ANSI/ISO 표준
SELECT 컬럼[, 컬럼...] FROM 테이블1 A 
	LEFT OUTER JOIN 테이블2 B ON A.칼럼=B.칼럼;

-- Oracle
SELECT 컬럼[, 컬럼...] FROM 테이블1 A, 테이블2 B
WHERE A.칼럼 = B.칼럼(+);

조인 조건에 해당되지 않는 데이터를 포함하며, USING 또는 ON 조건절 필수

  • LEFT OUTER JOIN : 좌측 테이블의 모든 데이터를 포함하며, 우측에 없는 데이터는 NULL로 출력
  • RIGHT OUTER JOIN : 우측 테이블의 모든 데이터를 포함하며, 좌측에 없는 데이터는 NULL로 출력
    • Oracle은 모든 데이터를 포함하지 않는 쪽에 (+) 연산자 사용
  • FULL OUTER JOIN : LEFT + RIGHT. ANSI 표준 문법만 지원

 

최종 수정일 : 2025/03/07

틀린 사항이 있다면 댓글로 알려주시면 감사하겠습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
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 31
글 보관함