Hyun's Wonderwall

[SQLD] 2024 개정 7시간 컷 합격 후기 (제55회) 본문

Subjects/데이터베이스

[SQLD] 2024 개정 7시간 컷 합격 후기 (제55회)

Hyun_! 2024. 11. 17. 07:48

제55회 SQL 개발자(SQLD) | 시험일 2024.11.17

배경 설명: 컴퓨터공학 전공자, 데이터베이스 과목 A+, 백엔드 개발자 (SQL 어느정도 익숙)

과제와 프로젝트 작업이 많아 미루고 미루다가 밤새서 7시간 컷을 달리게 되었는데요...

 

총점 66점으로 합격했습니다!

 

시험 후기

조인 관련 문제가 많았습니다. (natural join, left join, inner join, left outer join, full outer join 등등) 이중에 natural이 잘 기억이 안나서 찍었네요..

데이터 모델링, 스키마, 엔티티 같은 개념 문제들은 아래 홍쌤 영상 도움을 많이 받았습니다.

제1, 제2, 제3 정규화 관련한 문제도 있었습니다.

아래 18번의 뭐가 스칼라 서브쿼리, 중첩 서브쿼리다 하는 문제도 있었네요.

아래 12번의 문자열 관련한 문제가 정말 어렵게 나왔는데 워서 기억에 남습니다.

혹시 제 글을 읽으신 분이 계시다면, 벼락치기를 포기하지 마세요! 응원합니다!!


공부한 자료

+ 한두시간 남았을 땐 검색해서 SQLD 해설 기출도 보았습니다 (https://yunamom.tistory.com/388)

홍쌤의 데이터랩 [개정판] SQLD 1과목 완벽 정리 (2024년 신유형 반영)

https://www.youtube.com/watch?v=rdfHFnqVoRw

이것을 보다가... 다 못보고 시간이 없어서 아래 것을 봤습니다 (시간 여유 되시면 다 보시는 것 추천)

 

한종구 선생님의 제55회 시험대비 쪽집게 특강

https://cafe.naver.com/joymarketing?iframe_url_utf8=%2FArticleRead.nhn%253Fclubid%3D29315056%2526articleid%3D2269%2526referrerAllArticles%3Dtrue

 

마케팅 & 데이터분석 전문가되기 : 네이버 카페

마케팅 자격증 PCM / 데이터분석 자격증 ADsP, 빅데이터분석기사관련 다양한 정보와 볼거리를 제공합니다!!

cafe.naver.com

 

 

SQLD 출제포인트

 

1. SQL 연산순서 (작성 순서 말고 계산되는 순서)

  • From
  • Where
  • Group by
  • Having (Group by가 나올 때만 나옴)
  • Select (출력)
  • Order by (정렬 제일 마지막!!)

1-1. 언어 종류들

  • DML(Data Manipulation Language) : select, insert, update, delete (CRUD 위한 거)
  • DDL(Data Definition Language) : alter, create, modify, drop (테이블 및 컬럼 조작, 수정, 삭제)
  • TCL (Transaction Control Language) : rollback, commit (트랜잭션 관리. 롤백, 커밋)
  • DCL(Data Control Language) : grant 권한 부여, revoke 권한 해제

 

2. Distinct

어떤 컬럼값들의 중복을 제거한 결과를 출력함

- select distinct col from tatble;

- select distinct col1, col2 from table; (distinct는 select 절 전체에 (한 줄 즉 col1, col2) 먹음)

 

3. Alias

- select 절에서 사용 가능 (as 생략 가능), from은 오라클에서 as 사용불가, where 절에서 사용 불가!!

- select col as name from table; select col name from table;

 

4. concat (문자열 합치기)

SQL Server: + ( select col1+col2+col3 from table )

Oracle : ||

Oracle은 concat(a, b)이 파라미터 2개만 가능. 여러개를 합치려면 concat(concat(a, b)) 겹쳐서 써야 함.

 

5. 논리연산자

NOT, AND, OR 

연산 순위: NOR 먼저 -> AND -> OR

 

6. SQL 연산자

A between 1 and 2 : 1 <= A <= 2

A in (1,2,3) : A=1 OR A=2 OR A=3

A like '_ble*' : 언더바는 1글자, *는 아무거나 (와일드카드)

 

7. escape

언더바같은 와일드카드를 문자로 인식하기 위해, 아무 안쓰는 특수기호를 써서 표시

and email like ‘@_%’ escape ‘@’

 

8. rownum, top : n줄 출력하기

Oracle : ~ where rownum <= 3

SQL Server : select top 3 ~

 

9. null의 정의

모르는 값, 정의되지 않은 값 (공백이나 0과는 다름)

산술연산에서 null이 들어가게 되면 null이 출력됨

null+2, null*4, null+null 모두 결과는 null

null 비교연산 결과는 false (ex. null=2)

집계에서 null은 모두 제외됨 (평균을 낼 때도 뺌)

order by 정렬 할 때,

Oracle: null이 가장 큰 값이 됨

SQL Server: null이 가장 작은 값이 됨

 

널 관련 함수 Oracle에 NVL, SQL Server에 ISNULL

https://moonpiechoi.tistory.com/107

-- 오라클: NVL (NULL 판단 대상, 'NULL일 때 대체값')

-- 오라클: NVL2 ('판단 대상', 'NULL 아닐 때 값', 'NULL일 때 값')

-- SQL server : ISNULL (NULL 판단 대상, 'NULL일 때 대체값')

 

NULLIF (표현식1, 표현식2) : 표현식1과 2이 같으면 NULL, 다르면 표현식 1 

COALESCE (표현식1, 표현식2) : 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타내고, 모든 표현식이 NULL이라면 NULL을 리턴

 

10. 정렬

- 느려질 수 있다

- 가장 마지막에 실행

- NULL 위치 중요

- 컬럼명으로 정렬, 앞의 기준이 같을 때 그 다음 컬럼으로 정렬 (order by col1, col2 desc) // 오름차순/내림차순 적용범위는 컴마 기준으로 나뉨

- 기본값은 오름차순인 asc (내림차순: desc)

- select 절의 출력순서(컬럼 순서) 번호로 적을 수도 있음 (order by 2, 1 desc)

 

11. 숫자함수

round(222.45, 1) : 소수점 둘째자리에서 반올림하여 첫째자리까지 출력

round(225.67, 0) : 소수점 첫째자리에서 반올림하여 정수만 출력

-1 파라미터는 1의 자리에서 반올림 (십의자리 단위)

ceil (오라클) / ceiling (SQL Server) : 올림함수

floor : 버림함수

 

12. 문자함수

lower, upper : 소문자로, 대문자로

trim: 양쪽공백제거 (ltrim 왼쪽, rtrim 오른쪽)

lpad, rpad : 특정 자리를 정하고 왼/오 공백 채워주는 함수 (select lpad ('A', 5, '*') from dual')

substr : 두번째 자리에서 2개를 자름 (select substr('korea', 2, 2) from dual; -> or) 

instr : select instr('corporate floor', 'po') as idx from dual;  // 4가 출력 어디부터 나오냐

 

13. 날짜함수

to_char(sysdate, 'YYYY-MM-DD') : 날짜형 데이터를 문자형으로 출력

to_date('2022-09-22') : 문자형 데이터를 날짜형으로 출력

sysdate(Oracle), getdate() (SQL Server)

 

14. 조건문

decode : decode(col1, 'A', 1, 'B', 2, 3) // col1에서 A면 1 B면 2 아니면 3을 출력 

case : (두 가지 형태)

// 컬럼 및 조건 여러개 사용 가능

case when col = 'A' then 1

         when col = 'B' then 2

         else 3 end;

// col 한 조건 컬럼으로만 (좀 더 간단)

case col when 'A' then 1

        when 'B' then 2

        else 3 end;

 

15. 집계함수

count, min, sum, max

null은 포함되지 않는다. +와 sum은 다르다.

null은 더하면 무조건 null인데, sum(col1+col2+col3) 이렇게 할 때는 각 컬럼 값들을 가로로 더함. null+null+1 = null.

문제에서 답은 null과 7과 null을 sum 한 것이므로 7이 답이 됨

sum(col1)+sum(col2)+sum(col3) 할 경우 각 컬럼의 null이 무시됨. 3 + 3 + 3 = 9.

 

16. group by 집약기능.

group by 절에 온 컬럼만 select 절에 올 수 있음

다른 거 올려면 집계 함수랑 같이 와야 함.

 

17. join

natural join : 반드시 두 테이블 간의 동일한 이름, 타입을 가진 컬럼이 필요하다.

using : 조인에 사용될 컬럼을 지정한다. 조인 컬럼은 괄호로 묶어서 기술해야 한다.

left outer join : 

- from a left outer join b on a.col=b.col

- 이것과 같은 오라클 sql 문법은 -from table a, table b where a.col=b.col(+)

join 순서 : from a, b, c

(필요한 최소 조인 조건 갯수 -1)

 

18. 서브쿼리

select, order by: 스칼라 서브쿼리

from: 인라인 뷰 (메인쿼리의 컬럼 사용 가능)

where, having: 중첩 서브 쿼리

 

in

any, some

all

exists

 

19. 집합연산자

• Union:정렬 O, 중복제거 O, 느리다

• Intersect:정렬 O, 교집합, 느리다

• Minus(except):정렬 O, 차집합, 느리다

• Union all:정렬 X, 중복제거 X, 빠르다

 

20. DDL

• Truncate-drop & create, 테이블 내부구조는 남아있으나 데이터가 모두 삭제됨 • Drop-테이블 자체가 없어짐(당연히 데이터도 없음) • Delete-데이터만 삭제 • Rollback, commit와 항상 같이 나옴

 

21. 제약조건

PK - not null, unique

(복합키 가능)

 

22. DCL

- grant, revoke 문법

GRANT 시스템권한명/롤명 TO 유저명/롤명; // WITH ADMIN OPTION 붙일수도
GRANT 객체권한명 ON 객체명 TO 유저명/롤명; // WITH ADMIN OPTION 붙일수도
REVOKE 시스템권한명/롤명 FROM 유저명/롤명; // CASCADE CONSTRAINTS 붙일수도
REVOKE 객체권한명 ON 객체명 FROM 유저명/롤명; // ㄴ [restrict | cascade]

- ROLE은 객체

 

23 View 사용 이유

- 독립성, 편의성, 보안성

 

24. 그룹 함수

- roll up

- cube

- groupingsets

- grouping

어떤 결과가 나오고, 어떤 함수를 사용했는지에 대한 문제 기출 • ROLLUP (GROUP BY에 있는 컬럼들을 오른쪽에서 왼쪽순으로 그룹 생성) a, b로 묶이는 그룹의 값 a로 묶이는 그룹의 소계 전체합계 • CUBE (나올 수 있는 모든 경우의 수로 그룹 생성) a, b로 묶이는 그룹의 값 a로 묶이는 그룹의 소계 b로 묶이는 그룹의 소계 전체합계