Learn & Record
SQL MariaDB (조인(JOIN), 단순 조인, 테이블 별명, 내부 조인(INNER JOIN), 외부 조인(OUTER JOIN)) 본문
SQL MariaDB (조인(JOIN), 단순 조인, 테이블 별명, 내부 조인(INNER JOIN), 외부 조인(OUTER JOIN))
Walker_ 2024. 2. 20. 11:081. 조인(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]는 같다