본문 바로가기

데이터 다루기

스파르타 코딩클럽 SQL 4주차까지 완강 / 문법 정리

 

 

스파르타 코딩클럽 SQL 1주차

사용프로그램 : DBeaver SQL이란? Structured Query Language의 약자로, 데이터베이스에 요청(Query)을 날려서 원하는 데이터를 가져오는 것을 도와주는 언어 DB(데이터베이스)와 SQL은 왜 필요할까? 많은 양의

je-brille.tistory.com

 

 

스파르타 코딩클럽 엑셀보다 쉬운 SQL 2주차

2주차 복습을 시작한다. group by 범주별로 통계를 낼 수 있음 (아래에서 title은 필드명임) select count(*) from table명 group by title 각 제목별 카운트를 세어준다. 옆에 제목을 같이 보고 싶다면 카운트 앞

je-brille.tistory.com

 

 

스파르타코딩클럽 SQL 3주차 - join 개발일지

3주차 복습 시작 join의 등장join이란?각 테이블의 공통된 정보(key값이라 한다)를 기준으로 테이블을 연결해서 하나의 테이블로 구성할 수 있음 보통 테이블마다 필요한 정보만을 가지고 있기 때

je-brille.tistory.com

 

 

마지막 4주차

 

 

서브쿼리(Subquery)란? 

'쿼리 속 쿼리'라고 생각하면 된다.

서브쿼리를 사용하면 SQL쿼리를 간단하게 쓸 수 있다.

필수는 아니지만 효율적이라는 말씀

 

 

예시) kakaopay로 결제한 유저 정보(id, name, email) 보기

 

1. 서브쿼리 안쓴 version

2. 서브쿼리 version

 

서브쿼리를 만들기 위해 차근차근

1) 먼저 kakaopay로 결제한 user_id 구하기

 

 

2) 위에서 구한 user_id에 해당하는 유저들만 골라보기

(위에서 만들어놓은 쿼리를 서브쿼리로 쏙 넣어준다)

 

 

 


서브쿼리는 where, select, from 절에서 자주 사용된다.


 

1. where

 

where 필드명 in (subquery)

위에 예시에서 나왔었다.

 

 

2. select

select 필드명1, 필드명2, (subquery) from 테이블명

 

 

3. from

(가장 많이 사용된다고 함)

 

내가 만든 select와 이미 존재하는 테이블을 조인하고 싶을 때 사용해보자

 

예시) 코스 아이디별 유저의 체크인수와 코스 인원 구해보기

1) 코스 id별 유저의 체크인 개수

 

 

2) course_id별 인원 구하기

 

3) 1)과2)를 붙이기

 

1)의 쿼리를 a  2)의 쿼리를 b로 놓고

inner join을 해서 만들어진 테이블을 from뒤에 가져다놓은 형태

 

 


with 절 

with절로 깔끔하게 쿼리문을 정리할 수 있다.


 

정리 전

 

 

정리 후

 

이게 뭐가 정리가 된 것이뇨 반문할 수 있지만

inner join기준으로 간단해짐을 볼 수 있다.

즉, select c.title 이후를 보면 된다.

 

 

정리 전은 table1과 table2를 있는 그대로 줄줄이 나열.

vs.

정리 후는 윗쪽에서 'table1'과 'table2' 를 with를 사용해서 정의를 해주고

필요한 것을 불러오는 주제(?) 쿼리문에서는 정의해놓은 table1과 table2로 치환.

 

주요 쿼리문을 봤을 때 간단해진 것을 알 수 있다.

 

 

 


 

유용한 SQL 문법

 

1. substring_index

특정 문자 기준으로 앞의 내용 가져오기

해석: email 필드에서 @를 기준으로 앞의 문자 가져오기

 

 

특정 문자 기준으로 뒤의 내용 가져오기

해석: email 필드에서 @를 기준으로 뒤의 문자 가져오기

 

 

2. substring

해석: email 필드문 몇번째 문자부터 몇개를 가져와라.

오잉. 여기선 첫번째가 0이 아닌듯

 

 

이로써 엑셀보다 쉬운 SQL 완강!!

근데 데이터를 자유자재로 다루려면 연습을 많이 해야할듯

4주차는 1~3주차에 비해 아직 좀 헷갈린다.

 


loading