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. INNER JOIN 예시
- 두 테이블을 연결할 때 가장 많이 사용된다.
- 두 테이블에서 공통되는 값만 뽑아오기 때문에 NULL 행이 존재하지 않는다.
SELECT <열 목록> FROM <첫 번째 테이블> INNER JOIN <두 번째 테이블> ON <조인될 조건>
# INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식한다.
SELECT * FROM topic INNER 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가 된다.
- 이때, [topic] 테이블에 있는 Oracle은 NULL값이기 때문에 가져오지 않고, [author] 테이블에 있는 blackdew는 [topic] 테이블에 존재하지 않으므로 데이터를 갖고 오지 않는다.
두 테이블을 INNER JOIN으로 연결한 결과
'Web > Dev' 카테고리의 다른 글
[MySQL] UNION, JOIN 차이 (0) | 2022.03.03 |
---|---|
[MySQL] JOIN - OUTER JOIN (LEFT+RIGHT) (0) | 2022.03.03 |
[MySQL] JOIN - LEFT/RIGHT JOIN (0) | 2022.03.02 |
[MySQL] SUM, MAX, MIN (0) | 2022.02.27 |
PHP Mysql 게시판 만들기 - 1 (1) | 2021.03.25 |
댓글