Notice
Recent Posts
Recent Comments
Link
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 주피터노트북
- 파이썬문법
- 파이썬
- 개념정리
- 하이퍼파라미터
- 1주차
- 함수활용
- 깃허브
- Jupyter Notebook
- 데싸4기
- data
- 2주차
- 딕셔너리
- 빅쿼리
- 모두의연구소
- 랜덤포레스트
- sql
- python
- 함수
- 데이터베이스
- XGBoost
- AI
- 변수
- github
- bigquery
- 데이터
- 환경세팅
- error
- 컴프리헨션
- 데이터사이언티스트
Archives
[SQL] 여러 개의 테이블 사용하기(기본키, 외래키, JOIN) 본문
반응형
학습 내용
- ✅ 기본키(PK), 외래키(FK)
- 기본키(PK : Primary Key)
- 외래키(FK : Foreign Key)
- ✅ 다중 테이블 사용하기(JOIN)
- JOIN
- JOIN의 종류
- 데이터 이어붙이기(UNION)
- 서브쿼리 원리와 방식(Subquery)
- Subquery
- WHERE절 서브쿼리
- 단일행 서브쿼리
- 다중행 서브쿼리
- FROM절 서브쿼리
🛠 기본키 PK: primary key
- PK는 하나의 컬럼이 지정되어 있으며, 해당 컬럼이 데이터는 테이블 내 유일성을 보장한다.
- 유일성을 보장해야 하니까 NULL값은 허용되지 않는다.
🛠 외래키 FK: foreign key
- 다른 테이블과 관계를 맺는 경우, 다른 테이블의 기본키를 참조하는 컬럼
- 기본키를 참조하기 때문에 외래키 값은 참조하는 기본키의 값과 동일하거나 null값이다.
- 🔥즉, 외래키는 기본키와 동일한 값의 종류와 범위를 가진다.
🛠 JOIN ⭐⭐⭐
- 관계형 데이터베이스의 핵심
- 조인 유형을 지정하지 않으면 기본적으로 내부 조인(INNER JOIN)을 실행한다.
- 두 테이블을 조인할 때, 사용한 열의 이름이 동일할 경우, ON대신 USING을 사용할 수 있다.
2개의 테이블 JOIN
mysql("""
SELECT *
FROM orders AS o
JOIN customers AS c
ON o.customerId = c.customerId
""")
ON 에 두 테이블을 합치는 기준을 작성한다.
SELECT orderId, customerId, orderDate, name
FROM orders
JOIN customers
USING (customerId);
🔍 USING을 사용한 이유?
- orders 테이블과 customers 테이블에 customerId 라는 동일한 열이 존재한다고 가정.
- ON orders.customerId = customers.customerId 대신 USING (customerId) 를 사용하면 중복된 열을 한 번만 표시할 수 있다.
- 🔥즉, customerId는 결과에서 한 번만 출력됨.
👉 USING은 동일한 열 이름을 기준으로 조인할 때 깔끔하게 사용할 수 있다.🚀
3개의 테이블 JOIN
mysql("""
SELECT *
FROM orders AS o
JOIN customers AS c
ON o.customerId = c.customerId
JOIN employees AS e
ON c.employeesId = e.employeesId
""")
먼저 2개의 테이블을 JOIN하고 그 결과를 확인한 후에
나머지 1개의 테이블을 JOIN해야 실수를 줄일 수 있다.
🔍JOIN문의 실행 순서는 어떻게 되지?❓
👉 SQL의 JOIN 문은 왼쪽에서 오른쪽으로 순차적으로 실행된다.
따라서 2개의 테이블 조인 결과에 나머지 1개 테이블을 조인한 결과가 출력된다.🚀
🛠 JOIN의 종류
- 🛠 INNER JOIN (INNER생략 가능) : 공통된 부분 기준
- OUTER JOIN
- LEFT JOIN: 왼쪽 테이블 기준, 현업에서 많이 쓰는 방식
- RIGHT JOIN: 오른쪽 테이블 기준, 현업에서 거의 쓰지 않음
- ON절의 조건을 만족하는 데이터만 가져온다.
- 테이블에 일치하는 행이 있으면 가져오고, 일치하는게 없으면 가져오지 않는다.
🛠 OUTER JOIN(LEFT JOIN, RIGHT JOIN)
- 조건을 만족하지 않은 행도 모두 출력하기 위한 조인 기법
- INNER JOIN 조건을 만족하지 못해서 누락되는 행을 출력하기 위해 사용
- 일치하지 않는 데이터를 출력하고자 할 때 유용
- LEFT (OUTER) JOIN으로 사용하며, OUTER는 생략
mysql("""
SELECT *
FROM orders AS o
LEFT JOIN customers AS c
ON o.customerId = c.customerId
ORDER BY o.customerId
""")
테이블 orders 의 모든 행을 기준으로, customerId가 같은 것이 테이블에 있으면 합치고, 없으면 customers쪽 컬럼들은 NULL로 채워서 출력한다.
👉 pandasql에서는 RIGHT JOIN을 사용하면 에러가 뜨므로, 개념 정리에서는 다루지 않을거다.
다음 포스팅에 UNION이랑 서브쿼리 다뤄야겠다.

반응형
'데이터베이스 > SQL' 카테고리의 다른 글
[Big Query] 빅쿼리 시작하기 (0) | 2025.04.07 |
---|---|
[SQL] 여러 개의 테이블 사용하기 (UNION, Subquery) (1) | 2025.04.04 |
[SQL] 데이터 집계하기(COUNT, SUM, AS(별칭), AVG, MAX, MIN), GROUP BY, HAVING (0) | 2025.04.04 |
[SQL] 데이터 활용법(LIKE연산자, Wildcard, 정렬, 중복제거, If, CASE WHEN ~ THEN, CAST) (0) | 2025.04.03 |
[SQL] 데이터 다루기(쿼리문, 비교연산자, 논리연산자, 산술연산자) (0) | 2025.04.03 |