Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 스프링 시큐리티 구조
- 스프링 입문을 위한 자바 객체 지향의 원리와 이해
- JPA
- 백준 #N과 M(4) #백트래킹
- C++
- 타임리프
- 1시간 만에 끝내는 직장인 코딩 용어
- SQL
- 백준 2630번
- 백준 1992번
- 채팅서버 설계
- 객체지향의 사실과 오해
- 자바의 정석 기초편
- 가상 채팅서버
- 스프링 MVC 2편
- 누구나큰일낼수있어
- 스프링심화반
- 팀300
- 백준 1992번 풀이
- 전문가를 위한 스프링
- thymeleaf
- 백준
- 알고리즘
- 스파르타코딩클럽
- 스파르타코딩클럽 #spartacodingclub #누구나큰일낼수있어
- 전문가를 위한 스프링5
- 스프링
- spartacodingclub
- 스프링 핵심원리 기본편
- 김영한님
Archives
- Today
- Total
민우의 코딩노트
[SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리 3탄 : 테이블 생성, 삭제, JOIN 본문
Lecture/데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리
[SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리 3탄 : 테이블 생성, 삭제, JOIN
미미누 2023. 11. 9. 23:29https://www.youtube.com/watch?v=E-8kpSSLulU
본 글은 [SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리, 을 시청하고 정리한 글입니다.
LEFT JOIN
왼쪽 테이블의 키 값을 기준으로, 오른쪽 테이블을 붙이는 것
RIGHT JOIN
오른쪽 테이블의 키 값을 기준으로, 왼쪽 테이블을 붙이는 것
INNER JOIN
두 테이블을 키 값을 기준으로 조인하여, 교집합을 만드는 것
FULL OUTER JOIN
합집합(둘 중의 하나의 키값만 있어도 조인)
UNION
행을 기준으로 조인하기 때문에, 테이블 구성이 똑같아야 함
UNION ALL
중복 상관 없이, 행을 기준으로 조인하는 것
-- 테이블 생성 및 데이터 삽입
CREATE TABLE dasql.CUST_INFO
(
CUST_NAME VARCHAR(10) NOT NULL
, AGE INT(2)
, SEX VARCHAR(3)
);
INSERT INTO dasql.cust_info VALUES('김서연', 36, '여');
INSERT INTO dasql.cust_info VALUES('박수민', 27, '여');
INSERT INTO dasql.cust_info VALUES('최민준', 32, '남');
INSERT INTO dasql.cust_info VALUES('김지민', 41, '여');
INSERT INTO dasql.cust_info VALUES('이하은', 23, '여');
SELECT * FROM DASQL.cust_info;
CREATE TABLE DASQL.CUST_BUY_INFO
(
CUST_NAME VARCHAR(10) NOT NULL
, BUY_DATE DATE
, BUY_NM VARCHAR(30)
, PAY INT(10)
);
-- MYSQL의 경우, TO_DATE를 지원하지 않아, STR_TO_DATE를 사용
INSERT INTO DASQL.CUST_BUY_INFO VALUES('김서연', STR_TO_DATE('20220805', '%Y%m%d'), '삼푸, 린스', 23000);
INSERT INTO DASQL.CUST_BUY_INFO VALUES('이예준', STR_TO_DATE('2022.08.05', '%Y.%m.%d'), '삼푸, 린스', 23000);
INSERT INTO DASQL.CUST_BUY_INFO VALUES('김지민', STR_TO_DATE('2022.08.31', '%Y.%m.%d'), '오렌지주스', 23000);
INSERT INTO DASQL.CUST_BUY_INFO VALUES('신우진', STR_TO_DATE('2022.08.18', '%Y.%m.%d'), '아이스크림', 1500);
INSERT INTO DASQL.CUST_BUY_INFO VALUES('이하은', STR_TO_DATE('2022.08.26', '%Y.%m.%d'), '밑반찬', 23000);
SELECT * FROM DASQL.CUST_BUY_INFO;
-- LEFT JOIN
SELECT A.CUST_NAME
, A.AGE
, A.SEX
, B.BUY_DATE
, B.BUY_NM
, B.PAY
FROM DASQL.CUST_INFO A
LEFT JOIN DASQL.CUST_BUY_INFO B ON A.CUST_NAME = B.CUST_NAME;
-- RIGHT JOIN
SELECT A.CUST_NAME
, A.AGE
, A.SEX
, B.BUY_DATE
, B.BUY_NM
, B.PAY
FROM DASQL.CUST_INFO A
RIGHT JOIN DASQL.CUST_BUY_INFO B ON A.CUST_NAME = B.CUST_NAME;
-- INNER JOIN
SELECT A.CUST_NAME
, A.AGE
, A.SEX
, B.BUY_DATE
, B.BUY_NM
, B.PAY
FROM DASQL.CUST_INFO A
INNER JOIN DASQL.CUST_BUY_INFO B ON A.CUST_NAME = B.CUST_NAME;
-- FULL OUTER JOIN
SELECT *
FROM DASQL.CUST_INFO A
LEFT JOIN DASQL.CUST_INFO B ON A.CUST_NAME = B.CUST_NAME
UNION
SELECT *
FROM DASQL.CUST_INFO A
RIGHT JOIN DASQL.CUST_INFO B ON A.CUST_NAME = B.CUST_NAME;
-- 만들어진 테이블 틀은 남기고, 데이터만 삭제
TRUNCATE TABLE DASQL.CUST_INFO;
-- 테이블을 아예 삭제
DROP TABLE DASQL.CUST_INFO;
CREATE TABLE DASQL.BASIC_TEMP1
(
CUST_NAME VARCHAR(10) NOT NULL
, SEX VARCHAR(3)
, AGE INT(2)
);
INSERT INTO DASQL.BASIC_TEMP1 VALUES('앤', '여', 34);
INSERT INTO DASQL.BASIC_TEMP1 VALUES('해밀턴', '남', 42);
INSERT INTO DASQL.BASIC_TEMP1 VALUES('빌리', '남', 16);
CREATE TABLE DASQL.BASIC_TEMP2
(
CUST_NAME VARCHAR(10) NOT NULL
, SEX VARCHAR(3)
, AGE INT(2)
);
INSERT INTO DASQL.BASIC_TEMP2 VALUES('앤', '여', 34);
INSERT INTO DASQL.BASIC_TEMP2 VALUES('빌리', '남', 16);
INSERT INTO DASQL.BASIC_TEMP2 VALUES('제니', '여', 14);
INSERT INTO DASQL.BASIC_TEMP2 VALUES('윌리엄', '남', 5);
INSERT INTO DASQL.BASIC_TEMP2 VALUES('애슐린', '여', 23);
-- UNION 중복 허용 X
SELECT * FROM DASQL.BASIC_TEMP1
UNION
SELECT * FROM DASQL.BASIC_TEMP2;
-- UNION ALL 중복 허용 O
SELECT * FROM DASQL.BASIC_TEMP1
UNION ALL
SELECT * FROM DASQL.BASIC_TEMP2;
'Lecture > 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리' 카테고리의 다른 글
[SQL] 데이터분석가 많이 쓰는 완전 기초 쿼리 5탄 : 집계함수 count, min, max, sum, avg, decode, group by, having (0) | 2023.11.10 |
---|---|
[SQL] 데이터분석가 많이 쓰는 완전 기초 쿼리 4탄 : row number, (dense) rank, ntile (0) | 2023.11.10 |
[SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리 2탄 : 시간 함수 (1) | 2023.11.09 |
[SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리 1탄 (1) | 2023.11.09 |