[제로베이스 데이터 분석 취업 스쿨]Day12 SQL

join

UNION(수직 결합)과 다르게 수평결합을 한다.

INNER JOIN 문법

두 개의 테이블에서 공통된 요소들을 통해 결합하는 조인방식(교집합)

SELECT COLUMN1, COLUMN2...

FROM TABLEA

INNER JOIN TABLEB

ON TABLEA.COLUMN = TABLEB.COLUMN

WHERE CONDITIONS;

 

실습환경 구축

예제1) SNL_SHOW에 호스트 출연한 CELAB을 기준으로 CELAB 테이블과 SNL_SHOW 테이블을 INNER JOIN 해주세요.

 

LEFT JOIN

두 개의 테이블에서 공통 영역을 포함해 왼쪽 테이블의 다른 데이터를 포함하는 조인 방식

SELECT COLUMN1, COLUMN2...
FROM TableA
LEFT JOIN TableB
ON TableA.COLUMN = TableB.column
WHERE CONDITION;

 

RIGHT JOIN

두 개의 테이블에서 공통 영역을 포함해 오른쪽 테이블의 다른 데이터를 포함하는 조인 방식

SELECT COLUMN1, COLUMN2...
FROM TableA
LEFT JOIN TableB
ON TableA.COLUMN = TableB.column
WHERE CONDITION;

 

FULL OUTER JOIN

두 개의 테이블에서 공통 영역을 포함하여 양쪽 테이블의 다른 영역을 모두 포함하는 조인 방식 

SELECT COLUMN1, COLUMN2...
FROM TableA
FULL OUTER JOIN TableB
ON TableA.COLUMN = TableB.column
WHERE CONDITION;

MySQL에서는 아래와 같은 문법을 사용한다.

SELECT COLUMN1, COLUMN2...
FROM TableA
LEFT JOIN TableB
ON TableA.COLUMN = TableB.column

UNION

SELECT COLUMN1, COLUMN2...
FROM TableA
RIGHT JOIN TableB
ON TableA.COLUMN = TableB.column

 

Self Join

where절을 사용해 조인하는 방식이다.

테이블마다 동일한 칼럼명이 존재하는 경우에만 테이블명을 명시한다. 

예제 1

snl_show에 호스트로 출연한 celab을 기준으로 celab 테이블과 snl_show 테이블을 self join 하시오

예제 2

celab 테이블의 연예인 중, snl_show에 host로 출연했고, 소속사가 안테나인 사람의 이름과 직업을 검색하시오.

예제 3

celab 테이블의 연예인 중, snl_show에 host로 출연했고, 영화배우는 아니면서 YG엔터테인먼트 소속이거나, 40세 이상이면서 YG엔터테인먼트 소속이 아닌 연예인의 이름과 나이, 직업, 소속사, 시즌, 에피소드 정보를 검색하시오.

예제 4

SNL_SHOW 시즌 8에 출연한 CELAB 중, 에피소드 7, 9, 10 중에 출연했거나, 소속사가 YG로 시작하고 뒤에 6글자로 끝나는 사람 중 작년 9월 15일 이후에 출연했던 사람을 검색해주세요.

 

Concat

여러 문자열을 하나로 합치거나 연결

SELECT CONCAT('STR1', 'STR2', ...);

예제 1

이름과 NAME을 하나의 문자열로 합쳐서 겁색 

예제 2

name과 job_title을 합쳐서 profile이라는 별칭을 만들어 검색 

 

Alies

칼럼이나 테이블에 이름 별칭 생성

SELECT COLUMN AS ALIAS
FROM TABLENAME AS ALIAS*

AS는 생략 가능하다. 

 

예제 2) SNL_SHOW에 출연한 CELAB을 기준으로 두 테이블을 조인하여 다음과 같이 각 데이터의 별칭을 사용하여 검색한다.

- 시즌, 에피소드, 방송일을 합쳐서 '방송정보'

- 이름, 직업을 합쳐서 '출연자정보'

예시)방송정보

8-7(2020-09-5)

출연자정보

강동원(영화배우, 탤런트)

 

Distinct

검색한 결과의 중복 제거 

SELECT DISTINCT COLUMN1...,COLUMN2...
FROM TABLENAME;

CELAB 테이블에서 AGENCY 칼럼을 중복 제거하고 검색

가수 중에서, 성별과 직엽별 종류를 중복 제거하여 검색

 

LIMIT 

검색결과를 정렬된 순으로 주어진 숫자만큼만 조회한다. 

SELECT COLUMN1, COLUMN2
FROM TABLENAME
WHERE CONDITION
LIMIT NUMBER;

예시1) CELAB 데이터 3개만 가져오기 

예시2) 나이가 가장 적은 연예인 4명 검색

 

aws RDS

Cloud 상에 Database를 구축해 보자.

외부 접속

아래 엔드포인트를 복사해서 터미널을 통해서 외부 접속할 수 있다.

터미널은 접속 전에 환경변수를 편집해야 작동이 된다.

 

cmd에서 mysql -h <엔드포인트> -P <포트> -u <마스터 사용자 이름> -p 입력

참고 문서 : https://velog.io/@parkevelyn95/524-%EC%8A%A4%ED%84%B0%EB%94%94-%EB%85%B8%ED%8A%B8

접속해서 DB를 만들고 확인한 과정을 보여주고 있다.

UTF8MB4는 이모티콘까지 지원하는 인코딩 타입이다.

 

사용자 만들기(외부 접속 가능)

외부에서 접속할 떄 USER로 접속 가능해 진다.