SQLD 자격이란?
한국데이터산업진흥원에서 주관하는 국가공인 민간자격이다. SQLD는 SQL Developer 를 뜻한다.
SQLD의 상위 자격증으로 SQLP(SQL Professional) 가 있다.
SQLD/SQLP와 비슷한 자격증으로는, 빅데이터분석기사, ADsP/ADP 등이 있으며 모두 마찬가지로 한국데이터산업진흥원이 주관한다.
아래 링크 (공식 홈페이지) 참조.
https://www.dataq.or.kr/www/sub/a_04.do
데이터자격시험
SQL(Structured Query Language)은 데이터베이스를 직접적으로 액세스할 수 있는 언어로, 데이터를 정의하고(Data Definition), 조작하며(Data Manipulation), 조작한 결과를 적용하거나 취소할 수 있고(Transaction Con
www.dataq.or.kr
SQLD 자격의 시험 과목은 1. 데이터 모델링의 이해, 2. SQL 기본 및 활용으로 세부 내용은 다음과 같다.
참고로, SQLP는 위의 과목에서 한 과목이 더 추가된다. 난이도도 더 높다.
왜 SQLD ?
최근에 맡았던 업무에서 통계 데이터를 뽑아내야하는 일이 많았는데, 여러 테이블로부터 여러 조건을 걸어서 원하는 통계 데이터를 조회하는 쿼리가 상당히 까다롭고 복잡했다. 그리고 조건에 따라 성능의 문제도 있었다. 이 과정에서 이해하기 쉬우면서도 효율적이고 정확한 쿼리를 짜는 능력의 필요성을 느꼈다.
SQLD 말고도 위에 언급한 빅데이터분석기사, ADP(ADsP)는 이름 그대로 데이터 처리, 분석 등에 초점이 맞춰져 있었기 때문에 목적에 맞지 않는다고 생각했다. 그래서 결론적으로 SQLD 시험을 준비하게 되었다.
공부법
평일에는 일하느라 시간이 여유롭지 못했고, 그런 상황에서 약 2주 (제대로 집중한 건 1주) 동안 공부했다.
sqld 책으로 가장 유명한 '노랭이' 책을 구매해서 시험에서 비중이 가장 높은 2과목부터 시작했다.
2과목은 주로 sql 을 다루고 있었고, 이미 일할 때 사용을 하고 있었기 때문에 익숙한 부분이 많았다.
그리고 정보처리기사에서 공부했던 부분들도 조금씩 보였다. (트랜잭션, 분산데이터베이스, 정규화 등)
어려웠던 건, 오라클과 SQL Server 문법을 자꾸 비교해서 알아야 해서 헷갈렸다.
노랭이 교재는 문제집이고, 당연히 이론 공부도 필요했는데 이론 정리는 네이버 데이터전문가포럼 카페에서 구했다. 아래 링크들 참조.
https://cafe.naver.com/sqlpd?iframe_url_utf8=%2FArticleRead.nhn%3Fclubid%3D21771779%26articleid%3D10530
데이터 전문가 포럼 (빅데이터분석기사... : 네이버 카페
빅데이터분석기사, ADP, ADsP, SQLP, SQLD, DAP, DAsP, 자격증 취득 등 데이터 전문가 커뮤니티입니다.
cafe.naver.com
http://www.yes24.com/Product/goods/33524934
SQL 자격검정 실전문제 - YES24
SQL 자격검정 실전문제는 국가공인 SQL 전문가 및 국가공인 SQL 개발자 자격시험 대비 수험서로 SQL 전문가 가이드에서 다루고 있는 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등
www.yes24.com
문제를 풀다가 문제지 해설에서도 제대로 알려주지 않아서 이해 안가는 부분이 생기면 카페에 'nn번' 이라고 검색했다. 질문들과 댓글들이 이미 많이 있어서 굉장히 유용했다!
시험 후기
문항 수는 총 50문항이고 시험시간은 1시간30분이다. 나는 한시간만에 나왔다. 조금 헷갈리고 답을 모르겠는 문제들도 있었지만 합격컷 안에는 들겠다는 예상을 했다. 참고로 시험지는 가지고 나올 수 없어서 헷갈리는 문제는 답을 기억해서 나오는 것이 좋다.
시험이 끝나면 위에서 언급한 카페(데이터 전문가 포럼)에서 사람들끼리 답을 서로 맞춰보는데, 그 사람들도 같은 응시생들이라 그런지 오답을 정답처럼 말하기도 하고 서로 정답을 두고 의견이 갈리기도 한다. 그래서 너무 믿을 건 못 되는 것 같다. 참고만 하는걸로...
확실하게 틀린 문제가 있는데 단답 1번이다. 집계함수 SUM에서 null은 제외하고 계산된다. 여기까진 알고 있었는데, 연산대상이 모두 null 인 경우 연산 결과가 null 이라고 한다. 나는 null 을 제외하고 연산하니까 0이라고 생각해서 오답을 적어 냈다. 아쉽지만 어쩔 수 없지!
그래도 시험을 치면서 그냥 단순히 사용하기만 하던, 혹은 잘 사용하지 않던 sql에 대해서 더 잘 알게 되었다. 예를들면 select 문의 처리순서라든가, null 이 어떻게 취급되는지, 그룹함수나 윈도우함수 등등.. 그리고 확실히 문제를 계속 풀다보니 내가 원하는 결과를 도출하기 위해서 sql을 어떻게 짜면 좋을지 그 생각의 범위가 확장된 것 같다. 어쩌면 간과할 수 있는 함정같은 부분들도 더 알게되어서 앞으로 실수를 줄일 수 있을 것 같다.
시험 결과는 4월 7일 사전발표하는 날 알게된다. 그때 결과를 추가하겠다! 합격이기를...! 🙏🏻
+ 4/7 추가
오늘 오후 4시에 사전발표가 났다. 60점 이상이면 합격인데, 82점으로 아주 여유있게 합격했다 🥳
최종 요약정리
시험보러 가기 직전에 마지막 암기 목적으로 간단하게 요약 정리를 했었다. 정리한 파일을 아래에 첨부하겠다.
(요약이 아닌 자세한 이론은 위에 있는 '공부법'의 링크 참조)
추가
1. LTRIM, RTRIM, TRIM, REPLACE
문자 제거: LTRIM('문자열', '지울 문자'), RTRIM('문자열', '지울 문자'), TRIM('지울 문자' FROM '문자열')
공백 제거: LTRIM('문자열'), RTRIM('문자열'), TRIM('문자열')
REPLACE('문자열', 'A', 'B'): 문자열에서 A를 B로 바꿈
REPLACE('문자열', 'A'), REPLACE('문자열', 'A', ''): 문자열에서 A를 제거
REPLACE('문자열', ' '), REPLACE('문자열', ' ', ''): 문자열에서 공백 제거
따라서 1)LTRIM('XSQL', 'X') 2)RTRIM('SQLX', 'X') 3)TRIM('XSQLX', 'X') 4)REPLACE('XSQLX', 'X', '')
에서 1, 2, 4번은 모두 결과가 'SQL'로 동일하지만, 3번은 틀렸다. 3의 결과를 'SQL'로 만들기 위해서는
TRIM('X' FROM 'XSQLX') 로 작성해야 한다.
2. NULL
사칙연산에서 null 과 연산한 결과는 모두 null 이다 (ex. 4+null = null)
집계함수 COUNT, SUM, MIN, MAX, AVG 에서는 null 을 제외하고 연산한다.
- 단, COUNT(*) 는 null 을 포함한다.
- COUNT 에서 대상이 모두 null 이면 결과는 0
- SUM 에서 대상이 모두 null 이면 결과는 null (MIN, MAX, AVG 도 마찬가지)
- 오라클에서 null은 가장 큰 값이지만 이것은 정렬 시 (ORDER BY) 정렬 위치에서 고려되는 것이고,
MIN, MAX 에서 null 은 제외된다.
이 내용을 이해하면 NVL 을 사용하여 null 값을 처리할 때 도움이 된다.