1. SQL 이란?
MySQL, ORACLE 등 데이터베이스에서 데이터를 관리하기 위해 설계된 프로그래밍 언어
2. JOIN
2-1. JOIN 정의
- 둘 이상의 테이블을 연결해서 데이터를 검색하는 방법
- 연결하기 위해 테이블이 적어도 하나의 컬럼을 공유하고 있어야 한다.
- 이때, 공유하는 컬럼을 PK 또는 FK 값으로 사용한다.
2-2. PK(Primary Key), FK(Foreign Key)
- PK: 기본 키라고 하며, 엔티티를 식별하는 대표 키다. NULL일 수 없다.
- FK: 다른 테이블의 PK를 참조하는 키다. 어떠한 테이블에서 존재하는 다른 테이블의 정보이기 때문에 왜래 키이다. 참조하고자 하는 컬럼은 PK 또는 UK이여야 한다.
- PK와 FK는 테이블의 필수 요소로써, 모든 테이블은 이들 둘 중 하나 이상을 반드시 포함하고 있다.
2-3. 종류
- INNER JOIN: 내부 조인 → 교집합
-
LEFT/RIGHT JOIN → 부분집합
-
OUTER JOIN: 외부 조인 → 합집합
(MYSQL은 LEFT JOIN + RIGHT JOIN로 쓰인다. OUTER JOIN은 ORACLE에 쓰인다.)
2-4. LEFT JOIN 예시
SELECT <열 목록> FROM <첫 번째 테이블> LEFT JOIN <두 번째 테이블> ON <조인될 조건> WHERE <검색 조건> IS NULL
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid
* [topic] 테이블에 [author] 테이블을 조인(연결)하는데, 이때 조건은 author_id = author.aid 이다.
- FK(topic.author_id)가 참고하고자 하는 컬럼이 PK(author.aid)다.
- [topic] 테이블에 join할 [author] 테이블을 가져와서 author_id 와 aid 값이 같다고 알려준다.
- 여기서 author.aid가 PK가 되고, 그 컬럼을 참고하는 topic.author_id가 FK가 된다.
- LEFT/RIGHT JOIN은 자기한테 존재하는 것을 모두 가져온다. 자신과 링크가 걸려있지 않는 것은 NULL로 표현하여 가져온다. Oracle에 있는 NULL은 [author] 테이블에 해당되지 않지만, NULL로 표현해서 가져온다.
두 테이블을 LEFT JOIN으로 연결한 결과
- NULL 값이 존재한다면, '왼쪽 테이블에는 값이 있는데 그 값에 해당되는 오른쪽 테이블에는 행이 없구나 ~~' 라고 생각하면 된다.
'Web > Dev' 카테고리의 다른 글
[MySQL] UNION, JOIN 차이 (0) | 2022.03.03 |
---|---|
[MySQL] JOIN - OUTER JOIN (LEFT+RIGHT) (0) | 2022.03.03 |
[MySQL] JOIN - INNER JOIN (0) | 2022.03.02 |
[MySQL] SUM, MAX, MIN (0) | 2022.02.27 |
PHP Mysql 게시판 만들기 - 1 (1) | 2021.03.25 |
댓글