좋았을것들

나는 이번 3월 SQLD시험을 신청했다가 환불했다.

충분히 공부를 못해서 환불한 것도 맞지만, 예상과 다른 부분이 있어서 굳이 SQLD 자격증을 따지 않아도 되겠다는 생각을 했다.

오히려 이 내용을 신청 전에 알았다면 신청하지 않았을 텐데라는 생각으로, SQLD 자격증을 준비하고자 하는 모든 사람들을 위해 글을 쓴다.

 

응시료(비용)와 환불 💸

- 응시료 :  5만 원

- 신청 후 5일 이내 환불 : 전액 환불 (5만 원)

- 신청 후 5일 이후 환불 : 50% 환불 (2.5만 원)

 

DBMS종류

MS SQL, ORACLE 언어로 되어있음

SQL은 MS SQL, ORACLE, MYSQL 등 다양한 DBMS로 구성되어있고, SQLD 시험은 MS SQL과 ORACLE이 혼재되어 출제됨.

즉, 다른 DBMS를 써봤거나, 다른 DBMS만 쓰는 환경이라면 SQLD 자격 보유 여부는 실질적인 메리트가 적다.

 

인프런 등 국내 SQL강의에서 가장 많이 사용하는 DBMS는 MySQL로 위의 두 가지와 다르기 때문에 실질적으로 MySQL을 다뤄본 사람이 시험 준비를 한다고 해도 이점은 적으며, 오히려 기존에 사용하던 문법과 다르기 때문에 헷갈릴 수도 있다.

 

현업자에게 필요한가?

"자격요건이 없는" 대부분의 자격증이 그렇듯 SQL을 통한 프로젝트 경험이 있어 포트폴리오나 이력사항으로 증명 가능한 경우 본 자격증은 크게 의미가 없다고 볼 수 있다. 즉 현직자에게는 큰 의미가 없다. 

 

데이터 분석가를 제외하면 SQL 사용에 대해서 가장 많이 어필되는 직군은 마케팅, 기획자인듯하다. 실제로 주변의 마케터와 기획자분들을 보면 SQL을 사용하지 못하는 분은 드물다. 운영(사업개발) 직군 분들도 사용하시는 경우가 있을 정도로 대중적인 스킬.

 

하지만 반대로 그분들 중에서 SQLD를 보유한 분 역시 보지 못했다.

물론, 이 부분은 SQLD자격증이 생긴 지 얼마 안 되어서이기도 할 것이지만, 실질적인 매력도와 필요성이 낮은 자격증임을 의미한다.

 

데이터 분석가나 개발자가 아닌 이상, 현업에서는 데이터 구조가 어떻게 생기고 어떤 DMBS가 특성을 가지는지 알 필요가 없다. 그저 유의미한 데이터를, 정확하게 뽑고 잘 활용하는지가 중요하다.

 

정리하자면

즉, MySQL로 SQL을 사용하시는 저와 같은 현직자 분들께는 추천드리지 않습니다.

아직 사용하는 언어가 없는 취업준비생 분들께는 대체 가능한 자격증도 없고, 프로젝트도 어렵기때문에 추천드립니다.

차라리, Coursera와 같은 교육 프로그램을 통해서 SQL certificated를 받는 것을 추천드립니다.

_

스파르타 코딩클럽의 SQL 강의 수강 후, 조금 더 연습이 필요하다고 생각해 프로그래머스 SQL 고득점 kit를 풀어보게 됐다.

아래의 모든 답은 직접 풀어본 후 적은 답입니다. SQL 특성상 query가 다르더라도 같은 결과에 도출됐다면 모든 query는 정답이 될 수 있습니다.


문제 링크 👇

 

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

프로그래머스 문제 키트 👇

6개의 세트


SELECT

  • 모든 레코드 조회하기

동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.

SELECT * 
from animal_ins
order by animal_id

 

  • 역순 정렬하기

동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요. 

SELECT name, datetime
from animal_ins
order by animal_id desc

 

  • 아픈 동물 찾기

동물 보호소에 들어온 동물 중 아픈 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.

select animal_id, name
from animal_ins
where intake_condition = 'sick'
order by animal_id
  • 어린 동물 찾기

동물 보호소에 들어온 동물 중 젊은 동물 1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.

* INTAKE_CONDITION이 Sick 인 경우를 뜻함

select animal_id, name
from animal_ins
where intake_condition = 'sick'
order by animal_id

 

  • 동물의 아이디와 이름

동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요.

select animal_id, name
from animal_ins

 

  • 여러 기준으로 정렬하기

동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.

select animal_id, name, datetime
from animal_ins
order by name,datetime desc

 

  • 상위 n개 레코드

동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.

select name
from animal_ins
order by datetime
limit 1

SUM, MAX, MIN

  • 최댓값 구하기

가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

select datetime
from animal_ins
order by datetime desc
limit 1

 

  • 최솟값 구하기

동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

select datetime
from animal_ins
order by datetime
limit 1

 

  • 동물 수 구하기

동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성해주세요.

select count(*)
from animal_ins

 

  • 중복 제거하기

동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.

select count(distinct(name))
from animal_ins
where name is not null

 

  • 고양이와 개는 몇 마리 있을까

동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.

select animal_type, count(*)
from animal_ins
group by animal_type
order by animal_type

"고양이를 개보다 먼저 조회해주세요"때문에 order by 조건이 있어야만 정답으로 처리된다.

아래처럼 order by 조건이 없어도 결과상의 차이는 없다.

select animal_type, count(*)
from animal_ins
group by animal_type

 


 

4주차 강의 기록 (2) - [스파르타코딩클럽] 엑셀보다 쉬운 SQL - subquery, with, substring_index, substring, 문

스파르타코딩클럽 엑셀보다쉬운 SQL (4주) 33기 4주차 - 수강일자 211003 With subquery 를 각각 써주는 게 아니라 table로 명명시켜서 쿼리문 작성 편의 및 가시성을 높인다. 구조 예시 ( subquery )를 하나의

slowslow.tistory.com

 

.

스파르타코딩클럽 엑셀보다쉬운 SQL (4주) 33기

4주차 - 수강일자 211003

 

With

subquery 를 각각 써주는 게 아니라 table로 명명시켜서 쿼리문 작성 편의 및 가시성을 높인다.

 

구조 예시

( subquery )를 하나의 column처럼 사용

with table1 as ( subquery ) t1,
       table2 as ( subquery ) t2
select * from table

주의 점🔥

( subquery ) 마다 약어를 다 지정해줘야 한다.

 

적용 예시 - 4주 차 1번째 기록에 있는 예시

 

* 적용 전

select * from ( subquery ) s1
inner join ( subquery ) s2
on s1.column = s2.column

* 적용 후

with table1 as ( subquery ) s1,
	table2 as ( subquery ) s2
select * from s1
inner join s2
on s1.column = s2.column

서브 쿼리가 많아지고 복잡해질수록 with 구문을 쓰는 것이 훨씬 가독성이 좋아진다.

 

Substringindex

특정 기준으로 문자를 잘라서 원하는 부분만 출력하기

- python의 split과 동일

- SQL은 python과 달리 0,1,2,3으로 세는 게 아니라 1,2,3,4로 센다. 다만 -1이 마지막을 뜻하는 것은 동일하다.

 

구조 예시

SUBSTRING_INDEX( 자를 칼럼명, '기준 문자', 자른 후 출력할 위치)

 

적용 예시

email 칼럼에 들어있는 spartacodingclub@naver.com와 같은 이메일들을 @단위로 쪼개서 naver.com 만 보고 싶을 때

 

방법 1

SUBSTRING_INDEX(email, '@', 2) 

해석 : email을 @을 기준으로 잘라서 2번째에 있는 걸 출력해라

출력 값 : naver.com

 

방법 2

SUBSTRING_INDEX(email, '@', -1)

해석 : email을 @을 기준으로 잘라서 끝에 있는 걸 출력해라

출력 값 : naver.com

 

Substring

문자열을 특정 시점부터 특정 지점까지만 출력해라

 

구조 예시

SUBSTRING( 자를 칼럼명, 시점 위치 숫자로, 마지막 위치 숫자로)

 

적용 예시

created_at 칼럼에 들어있는 2020-07-07 15:00:22와 같은 일자-시간에서 날짜만 보고 싶을 때

 

SUBSTRING(created_at,1,10)

해석 : created_at에서 1번째 인 '2'부터 10번째에 위치한 '7'까지 출력해라

출력 값 : 2020-07-07

 

CASE

특정 조건에 따라 데이터를 구분할 때

- python의 if문과 비슷하다고 보면 편하다.

 

구조 예시 - case를 두 가지로 나눌 때

select column1, column2,
	case when column3 > ( 값 ) then '출력문구'
    	else '출력문구2' end
from table

 

구조 예시 - case를 세 가지 이상으로 나눌 때

select column1, column2,
	case when column3 > ( 값 ) then '출력문구'
    	when column3 > ( 값2 ) then '출력문구2'
    	else '출력문구3' end
from table

 

구조 예시 - 깔끔하게 정리할 때 / 실제 사용할 때

select column1, column2,
	(case when column3 > ( 값 ) then '출력문구'
    		when column3 > ( 값2 ) then '출력문구2'
    		else '출력문구3' end) as Partition
from table

case 구문을 하나로 () 묶어주고 as로 alias 별칭을 만들어준다.

 

주의 점🔥

조건을 걸 때마다 when을 써준다. when 절이 끝난다고 해서 콤마를 붙이거나 하지 않는다. (파이썬과 다름)


강의 기록

 

4주차 강의 기록 (1) - [스파르타코딩클럽] 엑셀보다 쉬운 SQL - 서브쿼리 select, where, from, subquery, 구

스파르타코딩클럽 엑셀보다쉬운 SQL (4주) 33기 4주차 - 수강일자 211003 Subquery "쿼리안의 쿼리" 쿼리 여러 개가 포함관계로 구성되어 있다고 보면 편하다. subquery는 select, from, where 모두에 들어갈 수.

slowslow.tistory.com

 

3주차 강의 기록 - [스파르타코딩클럽] 엑셀보다 쉬운 SQL - union all, left join, inner join, 쿼리 실행 순

스파르타코딩클럽 엑셀보다쉬운 SQL (4주) 33기 3주차 - 수강일자 211002 join 두가지 테이블의 key 칼럼을 기준으로 테이블을 연결해서 하나의 테이블로 표기하는 것 - 두 테이블을 실제로 합치는 게

slowslow.tistory.com

 

2주차 강의 기록 - [스파르타코딩클럽] 엑셀보다 쉬운 SQL - 묶기 그루핑하기 group by, 정렬하기 order

스파르타코딩클럽 엑셀보다쉬운 SQL (4주) 33기 2주차 - 수강일자 210921 통계 최대 max () 최소 min () 평균 avg () 갯수세기 count () 묶기 기준 만들기 칼럼(필드) 내 항목으로 그루핑하기 group by 칼럼명 gr.

slowslow.tistory.com

 

1주차 강의 기록 - [스파르타코딩클럽] 엑셀보다 쉬운 SQL - 기본 문법, where, 같다 다르다, 중복 데

스파르타코딩클럽 엑셀보다쉬운 SQL (4주) 33기 1주차 - 수강일자 210920 기본 쿼리문 : 데이터베이스에 명령을 내리는것 CRUD 네가지 메인 액션이있지만 DB관련 직종이 아닌이상 R(read)만 제대로 하면

slowslow.tistory.com

 

.

스파르타코딩클럽 엑셀보다쉬운 SQL (4주) 33기

4주차 - 수강일자 211003

 

Subquery

"쿼리안의 쿼리" 쿼리 여러 개가 포함관계로 구성되어 있다고 보면 편하다.

subquery는 select, from, where 모두에 들어갈 수 있다.

 

 

Select subquery

구조 예시

( subquery )를 하나의 column 처럼 사용

select column1, column2, ( subquery ) 
from table

주의 점🔥

( subquery ) 내의 where 절을 통해서 바깥 query와 ( subquery ) 간의 연결지점을 꼭 명시해야 한다.

스파르타 코딩클럽 select subquery 문 예시 요약

 

From subquery

구조 예시

( subquery )를 하나의 table처럼 사용

select * from table t1
inner join ( subquery ) s1
on t1.column = s1.column
select * from ( subquery ) s1
inner join ( subquery ) s2
on s1.column = s2.column

주의 점🔥

( subquery ) 사용할 때마다, table 약어를 지정해줘야 한다!

스파르타 코딩클럽 from subquery 문 예시 요약

Where subquery

구조 예시

where 칼럼명 in (subquery)

select * from table
where column in ( subquery )

주의 점🔥

( subquery )의 select 된 column과, 바깥 query의 column명을 동일하게 잡아줘야 연결이 된다.

스파르타 코딩클럽 where subquery 문 예시 요약

 

 

강의 기록

 

3주차 강의 기록 - [스파르타코딩클럽] 엑셀보다 쉬운 SQL - union all, left join, inner join, 쿼리 실행 순

스파르타코딩클럽 엑셀보다쉬운 SQL (4주) 33기 3주차 - 수강일자 211002 join 두가지 테이블의 key 칼럼을 기준으로 테이블을 연결해서 하나의 테이블로 표기하는 것 - 두 테이블을 실제로 합치는 게

slowslow.tistory.com

 

2주차 강의 기록 - [스파르타코딩클럽] 엑셀보다 쉬운 SQL - 묶기 그루핑하기 group by, 정렬하기 order

스파르타코딩클럽 엑셀보다쉬운 SQL (4주) 33기 2주차 - 수강일자 210921 통계 최대 max () 최소 min () 평균 avg () 갯수세기 count () 묶기 기준 만들기 칼럼(필드) 내 항목으로 그루핑하기 group by 칼럼명 gr.

slowslow.tistory.com

 

1주차 강의 기록 - [스파르타코딩클럽] 엑셀보다 쉬운 SQL - 기본 문법, where, 같다 다르다, 중복 데

스파르타코딩클럽 엑셀보다쉬운 SQL (4주) 33기 1주차 - 수강일자 210920 기본 쿼리문 : 데이터베이스에 명령을 내리는것 CRUD 네가지 메인 액션이있지만 DB관련 직종이 아닌이상 R(read)만 제대로 하면

slowslow.tistory.com

 

+ Recent posts