Learn & Record

SQL MariaDB (조인(JOIN), 단순 조인, 테이블 별명, 내부 조인(INNER JOIN), 외부 조인(OUTER JOIN)) 본문

Dev/SQL

SQL MariaDB (조인(JOIN), 단순 조인, 테이블 별명, 내부 조인(INNER JOIN), 외부 조인(OUTER JOIN))

Walker_ 2024. 2. 20. 11:08

1. 조인(JOIN)

 - 하나에 쿼리로 여러 개의 테이블에서 조건에 맞는 데이터를 조회하는 방법

 - 여러 테이블에 존재하는 정보를 한 번에 조사하고 요약 정보를 뽑아냄

 

2. 단순 조인

 - 두 개 이상의 테이블을 특별한 조건없이 논리곱(AND)으로 조합

 - FROM 절에 조회할 테이블을 콤마(,) 나열하여 출력

 - 논리곱에 조건을 지정하면 이 중 원하는 조합만 표시

 - WHERE 조건 절에 tCar의 회사명과 tMaker의 회사명이 일치하는 것만 표시하도록 지정

SELECT * FROM tCar, tMaker WHERE tCar.maker = tMaker.maker;

 

 - 출력 중복을 없애려면 SELECT의 필드 목록에 원하는 필드명만 적는다

SELECT tcar.car, tcar.price, tmaker.maker, tmaker.factory FROM tcar, tmaker
WHERE tcar.maker = tmaker.maker;

 

- 중복되는 필드가 있을 시 명시적으로 작성해줘야 한다

SELECT car, price, maker, factory FROM tCar, tmaker
WHERE tcar.maker = tmaker.maker; -- x

SELECT car, price, factory FROM tCar, tmaker
WHERE tcar.maker = tmaker.maker; -- o

SELECT car, price, tCar.maker, factory FROM tCar, tmaker
WHERE tcar.maker = tmaker.maker; -- o

SELECT car, price, tmaker.maker , factory FROM tCar, tmaker
WHERE tcar.maker = tmaker.maker; -- o

 

3. 테이블 별명

 - 여러 테이블을 조인 할 때는 필드명 앞에 소속 테이블을 붙이는 것이 정석

 - 소속이 분명하다면, 테이블명 생략 가능

 - 아래와 같이 작성하여 칼럼명의 별명을 지정 가능

 - 테이블의 별명은 [가독성과 이후의 관리 효율성]으로 거의 필수적이며 반강제적 사항

SELECT C.car, C.price, M.maker, M.factory FROM tCar C, tMaker M
WHERE C.maker = M.maker;

 

4. 내부 조인 (INNER JOIN)

 - 각 테이블의 필드값을 비교하여 조건에 맞는 레코드만 선택저으로 가져오는 명령

-- 기본 형식
SELECT 필드 FROM A [INNER] JOIN B ON 조건;

 - 조인의 디폴트가 내부 조인이어서 INNER 키워는 생략하고 JOIN만 써도 상관없음

 - 조건문에는 주로 두 테이블의 필드를 비교하는 연산문이 옴

SELECT C.car, C.price, M.maker, M.factory
FROM tCar C INNER JOIN tmaker M ON C.maker = M.maker;
SELECT C.car, C.price, M.maker, M.factory FROM tmaker M
INNER JOIN tCar C ON M.maker = C.maker;

 - ON에서 주로 외래키를 비교하기 때문에 이름과 타입이 같은 경우 ON 절을  생략하고 USING 사용 가능

SELECT C.car, C.price, maker, M.factory FROM tCar C
INNER JOIN tMaker M USING (maker);

 

5. 외부 조인

 - 내부 조인은 ON 조건에 맞는 레코드만 출력하며 그 외의 레코드는 제외

 - 외부 조인은 내부 조인과는 달리 조건에 맞지 않는 레코드도 같이 출력

 

5-2. 왼쪽 조인

SELECT C.car, C.price, M.maker, M.factory FROM
tcar C LEFT OUTER JOIN tmaker M ON C.maker = M.maker;

- 조인 키워드가 INNER JOIN에서 LEFT OUTER JOIN으로 바뀜

- OUTER 키워드를 생략하고 짧게 LEFT JOIN이라고 써도 됨

- 외부 조인은 어떤 테이블이 주테이블이 되는가

- LEFT 일 땐, 왼쪽 테이블. RIGHT 일 땐, 오른쪽 테이블이 주테이블이 된다

 

5-3 오른쪽 조인

SELECT C.car, C.price, M.maker, M.factory
FROM tcar C RIGHT OUTER JOIN tmaker M ON C.maker = M.maker;

 - LEFT 키워드가 RIGHT로 바뀜

 - [ A LEFT JOIN B] 와 [B RIGHT JOIN A]는 같다