혼자공부하는 SQL 10강

랄라콥스·2025년 2월 20일

혼자공부하는SQL

목록 보기
2/12

JOIN

두개의 테이블을 묶는 것

내부 조인_INNER JOIN

대부분 이것을 의미함

1:M

ex. 회원과 구매 테이블
한명의 회원은 여러번 구매할 수 있다-> 회원 테이블의 PK인 아이디는, 구매 테이블에서는 FK로 설정해야함

SELECT < 목록>
FROM <1번째 테이블>
	INNER JOIN <2번째 테이블>
    ON <조인될 조건>
[WHERE 검색 조건]
SELECT * 
   FROM buy
     INNER JOIN member
     ON buy.mem_id = member.mem_id
   WHERE buy.mem_id = 'GRL';

=> 결과


=> 위에는 오류
이유: 회원 테이블, 구매 테이블 모두 mem_id라는 속성을 가지고 있기 때문

구매를 안한 회원은 출력이 안되는데, 구매를 안한 회원은 구매 안했다고 나오게 할 수 없나?
= 한쪽에만 있는 정보도 출력하고 싶다!
그럴땐!

외부 조인_OUTER JOIN

을 사용하자

SELECT < 목록>
FROM < 번째 테이블(LEFT 테이블)>
	<LEFT | RIGHT | FULL> OUTER JOIN < 번째 테이블(RIGHT 테이블)>
    ON <조인될 조건>
[WHERE 검색 조건]

<LEFT | RIGHT | FULL>

  • LEFT: 왼쪽 기준으로
  • RIGHT: 오른쪽 기준으로
  • FULL: 전체 다
SELECT M.mem_id, M.mem_name, B.prod_name, M.addr
   FROM member M
     LEFT OUTER JOIN buy B
     ON M.mem_id = B.mem_id
   ORDER BY M.mem_id;

LEFT OUTER JOIN
왼쪽에 있는 애들은 다 나옴


기타 조인_CROSS JOIN

카티션 곱과 같음

SELECT *
FROM
CROSS JOIN

내용상 의미는 없음
근데 왜 씀?
-> 대용량 데이터를 만들 수 있음

자체 조인_SELF JOIN

원하는 정보가 같은 테이블에 있을 때~

SELECT < 목록>
FROM <테이블> 별칭 A
	INNER JOIN <테이블> 별칭 B
    ON<조인될 조건>
[WHERE 검색 조건]

별칭을 다르게 해서 다른 테이블인 것마냥~

profile
일단 책을 피자

0개의 댓글