| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- pandas filter
- 조합
- 순열
- 통계학
- 리스트
- plt
- 기계학습
- Machine Learning
- 재귀함수
- pandas 메소드
- SQL
- MacOS
- 파이썬
- matplotlib
- 머신러닝
- tree.fit
- 문제풀이
- numpy
- maplotlib
- python
- barh
- 자료구조
- 등비수열
- DataFrame
- pandas
- 등차수열
- Folium
- Slicing
- 스터디노트
- INSERT
Archives
- Today
- Total
코딩하는 타코야끼
[스터디 노트] Week8_3일차 [basic_8 ~ 11] - SQL 본문
728x90
반응형
1. UNION
- 여러 개의 SQL문을 합쳐서 하나의 SQL 문으로 만들어주는 방법 (주의. 칼럼의 개수가 같아야함)
- UNION : 중복된 값을 제거하여 알려준다.
- UNION ALL : 중복된 값도 모두 보여준다.
환경 설정 (test db)


📍 UNION ALL
- test1 의 모든 데이터와 test2 의 모든 데이터를 중복된 값을 포함하여 검색

📍 UNION
- test1 의 모든 데이터와 test2 의 모든 데이터를 중복된 값을 제거하여 검색

📍 NULL AS
- 가수가 직업인 연예인의 이름, 직업을 검색하는 쿼리와,
- 1980년대에 태어난 연예인의 이름, 생년월일, 나이를 검색하는 쿼리를 UNION으로 실행
SELECT NAME, JOB_TITLE, NULL AS BIRTHDAY, NULL AS AGE
FROM celeb
WHERE JOB_TITLE LIKE '%가수%'
UNION
SELECT NAME, NULL AS JOB_TITLE, BIRTHDAY, AGE
FROM celeb
WHERE BIRTHDAY BETWEEN '1980-01-01' AND '1989-12-31';

❗️주의
- UNION을 할때 두개의 SELECT문 열을 맞춰야합니다
- 열의 순서도 맞춰야 합니다
- 순으로 이름, 직업, 생일, 나이 순서가 일치해야합니다
- SELECT NAME, JOB_TITLE, NULL AS BIRTHDAY, NULL AS AGESELECT NAME, NULL AS JOB_TITLE, BIRTHDAY, AGE
- 열의 순서가 일치하지 않으면 정확한 쿼리가 나오지 않습니다.
- SELECT NAME, JOB_TITLE, NULL AS BIRTHDAY, NULL AS AGESELECT NAME, BIRTHDAY, AGE, NULL AS JOB_TITLE
# 직업이 가수인 (가수를 포함하는) 데이터를 검색하는 쿼리와
# 직업이 텔런트인 (텔런트를 포함하는) 데이터를 검색하는 쿼리를
# 중복을 제거하여 합쳐서 실행하세요.
SELECT * FROM celeb WHERE JOB_TITLE LIKE '%가수%'
UNION
SELECT * FROM celeb WHERE JOB_TITLE LIKE '%텔런트%';

# 성이 이씨인 데이터를 검색하는 쿼리와 1970년대생을 검색하는 쿼리를
# 중복을 포함하여 합쳐서 실행하세요.
SELECT * FROM celeb WHERE NAME LIKE '이%'
UNION ALL
SELECT * FROM celeb WHERE BIRTHDAY BETWEEN '1970-01-01' AND '1979-12-31';

2. JOIN
- 두 개 이상의 테이블을 결합하는 것

🔌 Table ( celeb )

🔌 Table ( snl_show )

3. INNER JOIN
SELECT celeb.ID, celeb.NAME, snl_show.ID, snl_show.HOST
FROM celeb INNER JOIN snl_show
ON celeb.NAME = snl_show.HOST;

4. LEFT JOIN
SELECT celeb.ID, celeb.NAME, snl_show.ID, snl_show.HOST
FROM celeb LEFT JOIN snl_show
ON celeb.NAME = snl_show.HOST;

5. RIGHT JOIN
SELECT celeb.ID, celeb.NAME, snl_show.ID, snl_show.HOST
FROM celeb RIGHT JOIN snl_show
ON celeb.NAME = snl_show.HOST;

6. FULL OUTER JOIN
- MySQL 에서는 FULL JOIN 을 지원하지 않으므로 다음의 쿼리로 같은 결과를 만들 수 있다.
- LEFT JOIN 과 RIGHT JOIN 쿼리를 UNION 시킨다.
SELECT celeb.ID, celeb.NAME, snl_show.ID, snl_show.HOST
FROM celeb LEFT JOIN snl_show
ON celeb.NAME = snl_show.HOST
UNION
SELECT celeb.ID, celeb.NAME, snl_show.ID, snl_show.HOST
FROM celeb RIGHT JOIN snl_show
ON celeb.NAME = snl_show.HOST;

반응형
'zero-base 데이터 취업 스쿨 > 스터디 노트' 카테고리의 다른 글
| [스터디 노트] Week9_1일차 [심화_1 ~ 2] - SQL (0) | 2023.09.04 |
|---|---|
| [스터디 노트] Week8_4일차 [basic_12 ~ 14] - SQL (0) | 2023.08.25 |
| [스터디 노트] Week8_2일차 [basic_5 ~ 7] - SQL (0) | 2023.08.23 |
| [스터디 노트] Week8_1일차 [basic_1 ~ 4] - SQL (0) | 2023.08.23 |
| [스터디 노트] Week7_3일차 [unit_1 ~ 12] - EDA(인구 분석) (0) | 2023.08.18 |