-
2022.08.28
[SQLD] SQL개발자 단원별 내용 정리 & 실전 문제
SQL개발자(SQLD) 단원별 내용 정리 & 실전 문제 SQL개발자(SQLD) 자격증을 준비하면서 블로그에 올렸었던 글들을 한 페이지에 정리해본다. 개념 정리 인터넷 블로그, 교재 등을 보면서 정리했던 내용들 과목명 장 링크 시험 개요 https://starrykss.tistory.com/1606 SQLD 소개 https://starrykss.tistory.com/1607 SQLD 주관식(단답형) 시험 대비 https://dev-astra.tistory.com/362 데이터 모델링의 이해 데이터의 모델링 https://starrykss.tistory.com/1612 데이터 모델과 성능 https://starrykss.tistory.com/1617 SQL 기본 및 활용 SQL 기본 https://starr..
-
2022.07.06
[SQLD] 실전 문제 : 고급 SQL 튜닝
SQLD 실전 문제 : 고급 SQL 튜닝 문제 1 Q. 아래 SQL은 v_주식선물구분 바인드 변수 입력에 따라 선택적으로 주식월별시세 또는 선물월별시세 테이블에 데이터를 입력한다. 실행 정보와 같이 바인드 변수를 입력하고 쿼리를 100번(SID=100)과 200번(SID=200) 세션에서 순차적으로 수행하였을 때 200번 세션의 상태로 올바른 것은? [SQL] INSERT /*+ APPEND */ ALL WHEN :v_주식선물구분 = '주식' THEN INTO 주식월별시세(종목코드, 거래일자, 종가) WHEN :v_주식선물구분 = '선물' THEN INTO 선물월별시세(종목코드, 거래일자, 종가) SELECT a.종목코드, :v_기준일자 AS 거래일자, AVG(a.종가) AS 종가 FROM 주식일별시세 ..
-
2022.07.06
[SQLD] 실전 문제 : 인덱스와 조인
SQLD 실전 문제 : 인덱스와 조인 문제 1 Q. 아래 SQL과 트레이스 결과를 보고, 최적의 튜닝 방안을 선택하시오. select o.주문번호, o.주문일시, o.고객번호, o.주문금액 from 주문 o inner join 고객 c on c.고객번호 = o.고객번호 where o.주문일시 = :ord_dt Call Count CPU Time Elapsed Time Disk Query Current Rows --------- --------- --------- ------------- ----- --------- --------- --------- Parse 1 0.000 0.028 0 0 0 0 Execute 1 0.000 0.000 0 0 0 0 Fetch 45939 9.234 12.642 1356..
-
2022.07.05
[SQLD] 실전 문제 : 옵티마이저 원리
SQLD 실전 문제 : 옵티마이저 원리 문제 1 Q. CBO(비용 기반 옵티마이저)는 쿼리 최적화 과정에 비용(Cost)를 계산한다. 다음 중 비용(Cost)과 가장 거리가 먼 것은? ① 비용이란 기본적으로, SQL 수행 과정에 수반될 것으로 예상되는 I/O 일량을 계산한 것이다. ② 데이터베이스 Call 발생량도 옵티마이저의 중요한 비용 요소이다. ③ 옵티마이저가 비용을 계산할 때, CPU 속도, 디스크 I/O 속도 등도 고려할 수 있다. ④ 최신 옵티마이저는 I/O에 CPU 연산 비용을 더해서 비용을 계산한다. 더보기 정답 : ② 해설 : 데이터베이스 Call은 옵티마이저가 수립한 실행 계획에 따라 SQL을 수행하는 과정에, 또는 옵티마이저에게 실행 계획을 수립해 달라고 요청하는 과정에 발생한다. 문..
-
2022.07.05
[SQLD] 실전 문제 : Lock과 트랜잭션 동시성 제어
SQLD 실전 문제 : Lock과 트랜잭션 동시성 제어 문제 1 Q. 공통 기술팀에서 개발표준 업무를 담당하는 고성능 씨가 Lock 경합에 의한 성능 저하를 최소화하기 위해 개발팀에 제시한 가이드 라인으로 가장 부적절한 것은? ① 트랜잭션의 원자성을 훼손하지 않는 선에서 트랜잭션올 가능한 짧게 정의할 것 ② 같은 데이터를 갱신하는 프로그램이 가급적 동시에 수행되지 않도록 트랜잭션을 설계할 것 ③ select 문장에 for update 문장을 사용하지 말 것 ④ 온라인 트랜잭션을 처리하는 DML 문장을 1순위로 튜닝함으로써 조건절에 맞는 최적의 인덱스를 제공할 것 더보기 정답 : ③ 해설 : for update 구문을 반드시 사용해야 할 경우가 있는데, 성능을 이유로 사용을 못하게 하면 데이터 정합성을 해..
-
2022.07.02
[SQLD] 실전 문제 : 아키텍처 기반 튜닝 원리
SQLD 실전 문제 : 아키텍처 기반 튜닝 원리 문제 1 Q. 다음 중 데이터베이스 연결(Conneection)과 관련된 설명으로 가장 부적절한 것은? ① 데이터베이스 서버와 클라이언트 간 연결 상태를 유지하면 서버 자원을 낭비하게 되므로 동시 사용자가 많은 OLTP 환경에서는 SQL 수행을 마치자마자 곧바로 연결(Connection)을 닫아주는 것이 바람직하다. ② 연결(Connection) 요청에 대한 부하는 쓰레드(Thread) 기반 아키텍처 보다 프로세스 기반 아키텍처에서 더 심하게 발생한다. ③ 전용 서버(Dedicated Server) 방식으로 오라클 데이터베이스에 접속하면 사용자가 데이터베이스 서버에 연결 요청을 할 때마다 서버 프로세스(또는 쓰레드)가 생성된다. ④ 공유 서버(Shared ..
-
2022.07.02
[SQLD] 실전 문제 : SQL 최적화 기본 원리
SQLD 실전 문제 : SQL 최적화 기본 원리 문제 1 Q. 아래 ( ㄱ )에 해당하는 내용을 작성하시오. 테이블 및 인덱스 등의 통계 정보를 활용하여 SQL문을 실행하는데 소요될 처리시간 및 CPU, I/O 자원량 등을 계산하여 가장 효율적일 것으로 예상되는 실행 계획을 선택하는 옵티마이저를 ( ㄱ ) 라 한다. 더보기 정답 : CBO / 비용기반 옵티마이저 / Cost Based Optimizer 문제 2 Q. 다음 중 실행 계획을 통해서 알 수 있는 정보로 가장 부적절한 것은? ① 액세스 기법 ② 질의 처리 예상 비용(Cost) ③ 조인 순서 ④ 실제 처리 건수 더보기 정답 : ④ 해설 : 실행 계획은 예상 정보이다. 실제 처리 건수는 트레이스 정보를 통해서 알 수 있다. ※ 실행 계획 정보의 구..
-
2022.07.02
[SQLD] 실전 문제 : SQL 활용 ②
SQLD 실전 문제 : SQL 활용 ② 문제 41 Q. 다음 중 아래의 테이블에서 SQL을 실행할 때 결과로 가장 적절한 것은? [SQL] SELECT CASE WHEN GROUPING(A.서비스ID) = 0 THEN A.서비스ID ELSE '합계' END AS 서비스ID, CASE WHEN GROUPING(B.가입일자) = 0 THEN NVL(B.가입일자, '-') ELSE '소계' END AS 가입일자, COUNT(B.회원번호) AS 가입건수 FROM 서비스 A LEFT OUTER JOIN 서비스가입 B ON (A.서비스ID = B.서비스ID AND B.가입일자 BETWEEN '2013-01-01' AND '2013-01-31') GROUP BY ROLLUP(A.서비스ID, B.가입일자); ① ② ③..
-
2022.06.30
[SQLD] 실전 문제 : SQL 활용 ①
SQLD 실전 문제 : SQL 활용 ① 문제 1 Q. 다음 중 순수 관계 연산자에 해당하지 않는 것은? ① SELECT ② UPDATE ③ JOIN ④ DIVIDE 더보기 정답 : ② 해설 : 순수 관계 연산자에는 SELECT, PROJECT, JOIN, DIVIDE 가 있다. ※ 순수 관계 연산자와 SQL 문장 비교 - SELECT 연산은 WHERE 절로 구현 - PROJECT 연산은 SELECT 절로 구현 - (NATURAL) JOIN 연산은 다양한 JOIN 기능으로 구현 - DIVIDE 연산은 현재 사용되지 않음. 문제 2 Q. 다음 중 아래 데이터 모델을 참고하여 설명에 맞게 올바르게 작성한 SQL 문장을 2개 고르시오. [설명] 우리는 매일 배치작업을 통하여 고객에게 추천할 컨텐츠를 생성하고 고..
-
2022.06.25
[SQLD] 실전 문제 : SQL 기본 ②
SQLD 실전 문제 : SQL 기본 ② 문제 41 Q. 다음 중, 아래와 같은 2건의 데이터 상황에서 SQL의 수행 결과로 가장 적합한 것은? (단, 이해를 돕기 위해 ↓는 줄바꿈을 의미 → 실제 저장값이 아님, CHR(10) : ASCII 값 → 줄바꿈을 의미) SELECT SUM(CC) FROM ( SELECT(LENGTH(C1) - LENGTH(REPLACE9C1, CHR(10))) + 1) CC FROM TAB 1 ) ① 2 ② 3 ③ 5 ④ 6 더보기 정답 : ③ 해설 : 라인수를 구하기 위해서 함수를 이용해서 작성한 SQL이다. - LENGTH : 문자열의 길이 반환하는 함수 - CHR : 주어진 ASCII 코드에 대한 문자를 반환하는 함수 (CHR(10) : 줄바꿈) - REPLACE : 문..
-
2022.06.25
[SQLD] 실전 문제 : SQL 기본 ①
1
SQLD 실전 문제 : SQL 기본 ① 문제 1 Q. 다음 중 데이터 제어어(DCL)에 해당하는 명령어는? ① INSERT ② RENAME ③ COMMIT ④ REVOKE 더보기 정답 : ④ 해설 : 데이터 제어어(DCL: Data Control Language)에는 GRANT, REVOKE가 있다. ※ SQL 문장들의 종류 - 데이터 조작어(DML: Data Manipulation Language) : SELECT, INSERT, UPDATE, DELETE - 데이터 정의어(DDL : Data Definition Language) : CREATE, ALTER, DROP, RENAME - 데이터 제어어(DCL : Data Control Language) : GRANT, REVOKE - 트랜잭션 제어어(T..
-
2022.06.23
[SQLD] 실전 문제 : 데이터 모델과 성능
SQLD 실전 문제 : 데이터 모델과 성능 문제 1 Q. 다음 중 성능 데이터 모델링에 대한 설명으로 가장 부적절한 것은? ① 성능이 저하된 결과를 대상으로 데이터 모델 보다는 문제 발생 시점의 SQL을 중심으로 집중하여 튜닝을 한다. ② 데이터의 증가가 빠를수록 성능 저하에 따른 성능 개선 비용은 증가한다. ③ 데이터 모델은 성능을 튜닝하면서 변경이 될 수 있는 특징이 있다. ④ 분석/설계 단계에서 성능을 고려한 데이터 모델링을 수행할 경우, 성능 저하에 따른 Rework 비용을 최소화 할 수 있는 기회를 가지게 된다. 더보기 정답 : ① 해설 : 문제 발생 시점의 SQL을 중심으로 집중 튜닝하는 것은 성능 데이터 모델링과 무관한 내용이다. ※ 성능 데이터 모델링이란? 데이터베이스 성능 향상을 목적으로..
-
2022.06.21
[SQLD] 실전 문제 : 데이터 모델링의 이해
SQLD 실전 문제 : 데이터 모델링의 이해 문제 1 Q. 모델링은 현실세계에 대해서 표현하는 것으로 이해할 수 있다. 다음 중 모델링의 특징으로 가장 부적절한 것은? ① 현실세계를 일정한 형식에 맞추어 표현하는 추상화의 의미를 가질 수 있음. ② 시스템 구현만을 위해 진행하는 사전단계의 작업으로서 데이터베이스 구축을 위한 사전작업의 의미가 있음. ③ 복잡한 현실을 제한된 언어나 표기법을 통해 이해하기 쉽게 하는 단순화의 의미를 가지고 있음. ④ 애매모호함을 배제하고 누구나 이해가 가능하도록 정확하게 현상을 기술하는 정확화의 의미를 가짐. 더보기 정답 : ② 해설 : 모델링은 단지 시스템 구현만을 위해 수행하는 작업(Task)이 아니며, 시스템 구현을 포함한 업무 분석 및 업무 형상화를 하는 목적도 있다..
-
2022.01.20
[SQLD] SQL 최적화의 원리
[SQLD] SQL 최적화의 원리 ① 옵티마이저(Optimizer)의 실행 계획 옵티마이저(Optimizer) SQL의 실행 계획을 수립하고 SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어 동일한 결과가 나오는 SQL도 어떻게 실행하느냐에 따라서 성능이 달라진다. 옵티마이저의 실행 계획은 SQL 성능에 아주 중요한 역할을 한다. 옵티마이저 특징 옵티마이저는 데이터 딕셔너리(Data Dictionary)에 있는 오브젝트 통계, 시스템 통계 등의 정보를 사용해서 예상되는 비용을 산정한다. 옵티마이저는 여러 개의 실행 계획 중에서 최저비용을 가지고 있는 계획을 선택해서 SQL을 실행한다. 옵티마이저의 필요성 SQL 개발자가 작성한 SQL문을 어떻게 실행하느냐에 따라 성능이 달라진다. 예 먼저 테이블을 ..
-
2022.01.19
[SQLD] SQL 활용
[SQLD] SQL 활용 ① 조인(Join) EQUI(등가) 조인 (교집합) (1) EQUI(등가) 조인 조인 : 여러 개의 릴레이션을 사용해서 새로운 릴레이션을 만드는 과정 조인의 가장 기본은 교집합을 만드는 것이다. 2개의 테이블 간에 일치하는 것을 조인한다. EQUI 조인은 테이블과 테이블에서 DEPTNO 칼럼을 사용하여 같은 것을 조인한다. 사용 예 SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; EQUI 조인은 '='을 사용해서 2개의 테이블을 연결한다. SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.ENAME LIKE '임%' /* 조인문에 추가 조건 및 정렬을 할 수 있음. ..
-
2022.01.18
[SQLD] SQL 기본
[SQLD] SQL 기본 ① 관계형 데이터베이스(Relation Database) 관계형 데이터베이스(Relation Database) (1) 관계형 데이터베이스의 등장 관계형 데이터베이스는 1970년대 E. F. Codd 박사의 논문에서 처음으로 소개된 데이터베이스이다. 관계형 데이터베이스는 릴레이션(Relation)과 릴레이션의 조인 연산을 통해서 합집합, 교집합, 차집합 등을 만들 수 있다. 현재 기업에서 가장 많이 사용하는 데이터베이스 관리 시스템 Oracle, MS-SQL, MySQL, Sybase 등 (2) 데이터베이스와 데이터베이스 관리 시스템의 차이점 데이터베이스는 데이터를 어떠한 형태의 자료 구조(Data Structure)로 사용하느냐에 따라 나누어진다. 데이터베이스의 종류 계층형 트리..
-
2022.01.17
[SQLD] 데이터 모델과 성능
[SQLD] 데이터 모델과 성능 ① 정규화 정규화(Normalization) 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며, 데이터를 분해하는 과정 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법 정규화를 수행하면 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소화할 수 있다. 정규화는 제1정규화부터 제5정규화까지 있지만, 실질적으로는 제3정규화까지만 수행한다. 예) 정규화를 하지 않아 이상현상이 존재하는 모델 위의 테이블은 정규화를 수행하지 않은 것으로, 테이블과 테이블을 하나로 합쳐둔 것이다. 새로운 직원이 추가 되는 경우 정보가 없으면 부서코드를 임의의 값으로 넣어야 한다. 불필요한 정보가 함께 추가됨. 새로운 '총무부'가 추가 되어야 할 경..
-
2022.01.14
[SQLD] 데이터 모델링(Data Modeling)
[SQLD] 데이터 모델링(Data Modeling) ① 데이터 모델링의 이해 데이터 모델링 현실세계를 데이터베이스로 표현하기 위해서 추상화 한다. 데이터 모델링을 하기 위해서는 고객과의 의사소통을 통해 고객의 업무 프로세스를 이해해야 한다. 고객의 업무 프로세스를 이해한 후, 데이터 모델링 표기법을 사용해서 모델링을 한다. 고객이 쉽게 이해할 수 있도록 복잡하지 않게 모델링해야 한다. 고객의 업무 프로세스를 추상화하고, 소프트웨어를 분석/설계하면서 점점 더 상세해진다. 고객의 비즈니스 프로세스를 이해하고 비즈니스 프로세스의 규칙을 정의한다. 정의된 비지니스 규칙을 데이터 모델로 표현한다. 데이터 모델링의 특징 데이터 모델링은 추상화해야 한다. 추상화는 공통적인 특징을 찾고 간략하게 표현한다. 데이터 모..
-
2022.01.13
[SQLD] SQLD 소개
SQLD 소개 SQLD 자격증 SQL(Structured Query Language) 데이터베이스에 질의(Query)를 실행해서 원하는 데이터를 조회하거나 입력, 수정, 삭제 등을 할 수 있는 절차형 언어 기업의 정보 시스템에서는 SQL이 다양한 분야에서 사용되고, SQL을 모르면 일을 할 수 없을 정도로 사용 분야가 광범위 함. 기업 내 SQL 사용 분야 금융권 고객의 계좌정보, 입출금, 예금현황 등의 정보를 데이터베이스에 저장하고 SQL을 사용하여 데이터를 관리한다. SQL의 길이가 길고 복잡하다. 즉, 대부분의 업무처리에 SQL을 사용하고 응용 프로그램은 SQL을 호출하는 방법으로 이루어진다. SQL을 모르면 금융권에서는 업무를 하기 어렵다. 모바일 App 안드로이드 앱에서는 모바일 단말기에서 사용..
-
2022.01.13
국가공인 SQL 개발자(SQLD) 자격증 시험 개요
국가공인 SQL 개발자(SQLD) 자격증 시험 개요 과목 및 내용 SQL 개발자 자격시험의 과목은 총 2과목으로 구성되어 있으며, 데이터 모델링의 이해 과목을 바탕으로 SQL 기본 및 활용을 수행하는 능력을 검정한다. 필기 과목명 장 절 데이터 모델링의 이해 데이터 모델링의 이해 데이터모델의 이해 엔터티 속성 관계 식별자 데이터 모델과 성능 정규화와 성능 반정규화와 성능 대용량 데이터에 따른 성능 DB 구조와 성능 분산DB 데이터에 따른 성능 SQL 기본 및 활용 SQL 기본 정보 요구 사항 DDL DML TCL WHERE 절 FUNCTION GROUP BY, HAVING 절 ORDER BY 절 조인 SQL 활용 표준조인 집합연산자 계층형 질의 서브쿼리 그룹 함수 윈도우 함수 DCL 절차형 SQL SQL..