Uploaded by iris00son

SQLD 마스터북

advertisement
저자직감 동영상 감의
「>
이패스비즈
www.epassbiz.com
1i4개출제포힌트로 끝내는
#슈퍼SQL 한종구 저
passz)iz
e』
WA▲
▼
SQLD
MASHRBOOK
머리말
7요1년차 DA 떼,.,냘,뉴,
.
SQL
온라인은 물론 오프라인으로 진행되는 모든 활동들이 다양한 형태의 데이터로 수
집되고, 이렇게 수집된 방대한 양의 데이터 분석을 통해 인사이트를 창출해내는
시대로 빠르게 변해가고 있습니다.
그러다보니 데이터분석능력은 분야를 망라한 모든 실무자가 갖춰야할 역량이 되어
가고 있고, SQL 또한 활용범위가 점점 넓어지고 있습니다. 이러한 상황하에서 다
양한 분야의 현업 종사자들과 자신만의 분야에서 전문성을 쌓기위해 준비하는 모
든 취업준비생들을 위해 본서를 집필하게 되었습니다.
SQL 활용능력을 테스트하는 SQLD(SQL개발자)자격증은 SQL을 처음 접하는 분
들이 꼭 알아야할 내용들로 구성되어있습니다. 하지만 이론으로 진행되는 시험의
특성상 SQLD를 합격했다고해서 실무에서 사용될 SQL 활용능력까지 인정받을 수
있는 것은 아닙니다.
이런 한계를 극복하고자 11년간 현장에서 DA와 DBA로 활동했던 경험을 기반으
로 SQL 초보자도 SQLD 합격은 물론 SQL 활용까지 한권의 책으로 마스터할 수
있도록 다양한 실습을 수록했습니다. 암기해서 문제를 푸는 이론식 학습이 아닌,
직접 SQL 프로그램을 사용해보면서 자연스럽게 SQL를 이해할 수 있도록 다양한
SQL 코드를 삽입했으니 코드를 직접 입력해보면서 학습하시기를 권합니다.
아무쪼록 본서가 SQL은 물론 데이터분석을 직접 해보고 싶은 많은 분들에게 도움
이 될 수 있었으면 하는 바람입니다. 공부에 왕도는 없습니다. 다만 날마다 조금씩
이라도 꾸준히 읽고, 실습을 해본다면 합격은 물론 SQL을 능숙하게 활용할 수 있
는 날이 분명히 올 것입니다.
끝으로 이 책이 나오기까지 도움을 주신 이패스비즈 이재남 대표님을 비롯한 임직
원 여러분들께 감사드립니다.
저자 大r속孑
출제겸향분석
과목
세부항목
출제키중
데이터 모델링의 이해
8%
데이터 모델과 성능
12%
SQL 기본
40%
SQL- 활용
37%
SQL 최적화 기본원리
3%
데이터 모델링의 이해
SQL 기본 및 활용
[1과목 출제경향]
[데이터 모델링의 이해]
와[데이터 모델과 성능]
에서 고르게 출제되는 경향을 보이고
있습니다.최근 기출문제들을 살펴보면 속성과 엔터티의 이해를 묻는 문제들이 많이
출제되고 있으며, 단순한 질의보다는 상황을 설명한 뒤 문제를 푸는 형태로 출제경향
이 달라지고 있음을 알 수 있습니다.
[2과목 출제경향]
최근 SQㄴ 활용에 대한 출제빈도가 늘어나고 있으며,문제가 점점 길어지고 있습니다.
문제의 지문이 길어진다는 것은 실질적인 SQL 활용능력을 묻는 문제들이 많아 진다는
것을 의미합니다. 따라서 시험 전 SQL을 직접 수행해보는 실습의 유무가 합격여부에
미치는 영향이 점점 커지고 있습니다.
학습전략
"SQLD는 여러분들이 생각하시는 것 보다 쉽게 합격할 수 있습니다.
"
단, 실습을 한다면요.
[1과목 학습전략]
(44개의 출제포
교재와 동영상 강의를 2 '3번 정도 돌려보시고, 마지막 최종 요약강의
인트)
까지 수강하신다면 어렵지 않게 80% 이상을 득점 할 수 있을 겁니다. 시험에 나
올만한 형태들이 어느정도 정형화되어있고, 문항수도 많지 않기 때문입니다. 엔터티나
속성, 각종 정의들을 잘 이해하시면 됩니다.
[2과목 학습전략]
실습을 하신다면 무조건 합격 할 수 있습니다.
교재에 나오는 모든 SQL들을 한번씩이라도 실행하시고 그 결과와 파라미터 사이의
관계를 유추하시면서 학습하신다면 그게 가장 빠른 합격을 위한 학습방법이 될 것 입
니다. 처음엔 교재와 동영상 강의를 봐도 잘 이해가 안가시겠지만 직접 실습을 하면서
실행하신다면 금방 이해 할 수 있을 것입니다. 그리고 SQL의 경우 작은 따옴표나 명령
어 하나의 변경으로 인해 결과가 많이 바뀔수 있습니다.지문이나 문제를 읽으실때 주
의해서 잘 읽어주시길 바랍니다.
/멱\
SOLD 안내
[SQLD(SQL개발자)소개〕
i . SQL
SQL(Structured Query Language)
은 데이터베이스를 직접적으로 액세스할 수 있
는 언어로, 데이터를 정의하고
(Data Definition), 조작하며
(Data Manipulation), 조
작한 결과를 적용하거나 취소할 수 있고
(Transaction Cont「이)
, 접근권한을 제어
하는
(Data Contr히)처리들로 구성되어있습니다.
∥. SQLD(SQL개발자)정의
SQL 개발자
(SQLD*, SQL Developer)
란 데이터베이스와 데이터 모델링에 대한 지
식을 바탕으로 응용 소프트웨어를 개발하면서 데이터를 조작하고 추출하는데 있
어서 정확하고 최적의 성능을 발휘하는 SQL을 작성할 수 있는 개발자를 말합니다.
iL SQLD(SQL개발자)
의 직무
직무
세부내용
데이터베이스 구성과 처리0ㅔ 있어서 가장 핵심적인 요소가 바로 데이터모델입니
다. 데이터모델은 건물의 설계도와 같이 전체 데이터베이스가 구성되는 요소를
데이터모델의
이해 및 분석
결정합니다.데이터구조의 근간이 되기 때문에 어플리케이션이 데이터를 이용할
〔대 효율적으로 제공이 될 것인지 아니면 비효율적으로 제공이 될 것인지에 대한
결정은 설계단계의 데이터모델에서 할 수 밖에 없습니다. 본 직무는 데이터모델
과 SQL구문의 연관성을 위해 엔터티, 속성,관계, 식별자, 정규화 등 데이터 모델
의 기본 지식을 바탕으로 데이터모델을 이해하고 분석하는 작업을 수행합니다.
SQL(Structured Query Language)
는 데이터베이스를 유일하게 액세스 할 수
있는 언어입니다.본 직무는 SQL 문법, 옵티마이저, 인덱스의 기초 원리의 이해
SQL 이해 및 합니다.이를 바탕으로 데이터 정의의
(DDL)
를 통해 테이블의 구조를 생성 / 변경
호요
/삭제
/재명명하고,
데이터
조작어
(DML)
을 통해 데이터를 입력/조회 /수정 /
ㅌ크 O
삭제합니다.집합과 집합의 관계를 다양한 」OIN 방법을 사용하여 표현하고, 주
종 관계의 경우 서브쿼리를 사용하는 작업 등을 수행합니다.
〔응시자격]
《거으
ㅂㅅ ㅁ
〔시험과목]
i . 출제문항수
과목명
필기
문항수
검정시험시간
배점
데이터 모델링의 이해
10
20
(문항당 2점)
SQL 기본 및 활용
40
80
(문항당 2점)
계
50
90분
(1시간 30분)
100
" . 세부내용별 문항수
시험과목
데이터 모델링의 이해
과목별 세부 항목
문항수
데이터 모델링의 이해
10문항
데이터 모델과 성능
SQL 기본
SQL 기본 및 활용
SQL 활용
40문항
SQL 최적화 기본 원리
〔합격결정기준]
합격기준
과락기준
총점 60점 이상
과목벌 40% 미만 취득
[검정수수료] 50,000원
#슈퍼SQL
한종구 마스터
11년차 DBA / DA
· 조달청 데이터품질진단
' 삼성전자 이기종 DB 전환 및 이관 프로젝트
· 하나투어 차세대 프로젝트
' 온라인 법률 서비스 개발 연구원
· 이패스비즈 SQL 전임교수
〔이패스비즈 SQLD 온라인 교육과정 안내]
SQLD(SQL개발자)정규과정
〔시험주요내용]
과목명
장
데이터모델의 이해
엔터티
데이터 모델링의 이해
속성
관계
식별자
정규화와 성능
반정규화와 성능
데이터 모델과 성능
대용량 데이터에 따른 성능
DB 구조와 성능
분산DB 데이터에 따른 성능
데이터 모델링의 이해
정보 요구 사항
DDL
DML
TCL
SQL 기본
WHERE절
FUNCTION
GROUP BY, HAVING절
ORDER BY 절
조인
표준조인
집합연산자
계층형 질의
SQL 활용
서브쿼리
그룹함수
윈도우 함수
SQL 기본 및 활용
DCL
절차형 SQL
옵티마이저와 실행계획
SQL 최적화 기본원리
인덱스 기본
조인 수행 원리
(의 특징
SOLD Masterbo아
I-q.,,,ㅐ의출,
ㅔ포인,
,:
,轍44개의 출제포인트만 딸딸
SQLD 44개 출제포인트
.`
SQL 연산순서 "
외워도 SQLD 합격!!
'
·From
·Where
쨍Group by
.Having
뀁 5비ect
홑Order by
*DML Select, insert, update, delete
믈 IDOL : 시ter. create. mm鉗y, dr아큐
·TCL hodbaclc commit
를DCL Grant rev아橙
2 . 꼭 필요한 내용만! 서브노트 형식의 구성
> 여러분의 시간은 중요합니
데이터 모델링의 이해
다. 군더더기 없이 필요한
내용만 공부하세도제
E·
데이터 모델의 이해
1. 데이터 모델링의 정의
* 고객과 함꼐 고객의 업무 프로세스륩 이해해야 뎨‘》]터 모델링을 졔대로 할 수 있다.
* 현실 세계블 데이터베이스에서 표현하기 위한 추상화 과정이다닙
' 데이터 모델링 표기법을 사용해서 모델링 한다』
' 고객의 업무 프로세스내 비즈니스 프로세스 규칙을 정의하쪄 뎨이터 모뗄로 표현 함 = 있
야야 한다.
· 고객이 이해하기 쉽게 간결하게 모델링 해야 한다.
2. 데이터 모델링의 톡징
추상화
^bstrac차에
단순화
Sinspilficati에
며슬'허
현실 세계를 일정한 양식
(표기법)
에 맞거l 간弓
(하게 표현한다
누구나 이해하기 쉽도톡 약속된 규약에 의한 제한된 표기법 또는 언어를 이
용하여 표현힌따
며효노ㅊ`그쬔L끄lm그ㅗ ㅎ.가T』
ㄹ 줅싶^t됴』n시긔Ljㅗ.ㄹ 』페끄L다ㅎ^노」급‘처`71W乳 珊쇠翩
3. 과목별 실전문제 수록
卜 이론학습하고 바로 문제를
연습문제
풀어야 문제에 대한 적응력
과 응용력이 척척!!
1 모멤림온 현실세계에 대해서 표헌히논 것으
닌2 다욤 죵 ANSI-SPARC메시 정의헌 3단계
로 이헤힐 수 있다.다욤 죵 모텔밍의 륵징으
구Iltree-level architecture〕
에서 이
로 가장 부적철한 것온?
래 내용이 설명하뇬 스키마구玖 가창 적철
① 현실세계를 일정한 형식에 맞추어 표현하
힌 것온?
는 추상화의 의미묩 가질 수 있옴
. 모돈 사용자 뫈점을 뿡합한 조직 천쟤 관
② 시스뺌 구섬반융 위레 진헹하는 사전단계
점외 륭합척 표현
외 작업으로서 매이터배이스 구측을 위한
· 모든 꿈 ㅅ]스멩듈끼나 ㅅ珊지돌끼 훨요
사쳔작헙외 의미가 있옹
로 하는 뎨이터튤 롱합한 조칙 건체의
⑤ 복잡한 현실올 재한된 안어나 표기법욜
Dㅐ톨 기슐 한 첫으로 DO예 저장되는 뎨
뿡히l 이해하기 쉼게하는 단순화의 의미콜
이터와 그돌간외 관체를 표혐하는 스키마
가지고 있옹
④ 얘매오호힘* 배체하고 누구나 이해가 가
① 외부스카힉(Eatercal Scheme)
눙하도륵 정확하게 현상을 기술하는 정확
② 개남스키아
(Conceptuci Scheme)
③ 내부스키마
《tutcrcci Scheme)
화의 의미를 가침
饉》논리스키마
《Logicai Scheme)
밴 '
모멩림온 단지 사스탬 구텬안을 위에 수헴하논
톄스크가 아님 사스헴 구텬욜 포함한 업무분석 '
및 업무형상회를 하논 목적도 있용
밴-
데이터배아스 스키마 구조논 3단계로 구분되고
각각온 삼호 독굅적인 외미를 가지고 고유한 기
늉옳 가자괵 름·관점의 스카먀춈 표헌한 것욜
개냄스키미IConcep뗀ue s乙h."떱)
라고 힌다;
4. 최종 모의고사 2회분 100문제 추가 수록
卜 시험 전 내실력 최종점검이
부록
제1회 최종모의고차
부록
"`
가능한 2회 모의고사 수
록!!
제2회 최종모의고사
데이터 모옐밍의 咐·
3 다묩퓽아레 시나리오에서엔터티료가장적
젱한 갓묜?
1 다응 죵 아래 뎨이터모멜밈 계냄에 대한 설뎡
에서 ( 0 》‘ hi
s방원온 여러 명의 환자가 존체하고 각 환
쟈쎄 뎨한 이름.주소 둥솥 굉리톄야 한디』
〔단.업무범위와 대이터외 톡청온 상기 시
나궉오예 기슬되어 았뇬 사항뗀珊 근거하
》헤 즐어칼 딘어로 가장
척젤힌 갓온?
건사적 뎨이터 모맬링을 수쨍할 때 많이 하
며 추상화 수츈이 늪고 업무 증씸적이고
여 흰단헤야 항》
포팔쟉인 수준의 모뱁링욤 짐뺑하는 젓휼
` ⑧ ) 뎨이터 모벨밍아라고 한다‘ 이와
① 병원
③ 이흥
당리 실체로 데이터베이스에 야식할 수 있
도륵 상농 쟈장 둥의 묠리적인 성각을 고
려한 톄이터모맬링욘 ( c) ) 매이터모밸
링이라고'脾干
하‘
蠶鞏二
다홑 죵 데미터· 조회혐 때 빠른 섬뇽욜 낼
수 있도륵 하갸위에 웝래 속섬의 값묠 계스뱌I
여 저징흼 수 있도륵 만든 속성으로 가장 적
廷)^
걔념적,B = 묠리적
⑨ ^ 一 논리척.끄 - 개닢적
垣》^
논리적,B
용리척
섬》^
걔념척.B
논리적
촬한 것온?
① 따생속성IDer,eed Attcibut비
② 기본속성〔B.8`e ^七엄ribu七8〕
③ 섬계속상)Deeigced ASteibet비
④ "(속상(SerieS &ttrlbute)
SOLE〕합격 4주 학습플랜
\
1일차
2일차
〔데이터베이스 모델링〕
1주
· 데이터모델링의
3일차
4일차
[데이터 모델과
성능]
·정규화와
5일차
6일차
[5QL.
복습
기본 및 활용]
[데이터베이스
룔 RDBMS
·DMLselect
모델링〕
관계와 식별자
.3-IevelSchema
· 분산데이터 [데이터모델과
베기스
· 엔터티와 속성
성능]
* Ta비e과
·연산자
이해
8일차
반정규화
9일차
10일차
11일차
SQL 설치
Column
·SQL
12일차
13일차
'DCLgrant
·문자함수
·DCLrevoke
·숫자함수
(내장함수)
·분기문
·groupby
·집계함수
·rownum,
rowid
· with문
·날짜함수
·DDLcreate
·DMLinsert
·DDLalter
'DMLupdate ·TCLrollback
.DDLdrop
·DMLdelete ·TCLsavepoint
.TCLcommit
· 카티시안곱
·이너조인
(등가조인)
· 아우터조인
(등가조인)
22일차
16일차
17일차
18일차
19일차
20일차
·Subquery
·Exists
·unionall,
뱌기《기ㄱ
·실행계획
복습
·rollup
계충형 쿼리 ·cube
룔intersection
' Grouping
윈도우 함수
(ove
「 함수)
[SQL활용]
27일차
28일차
·Minus
23일차
24일차
25일차
26일차
과목별 연습문제
원리〕
· 옵티마이저
·인덱스
21일차
· 비등가조인
[SQL최적화의
4주
활용]
트랜잭션문제
[SQㄴ활용]
3주
[SQL 기본 및
·TCL과 연계된
(내장함수)
15일차
14일차
복습
·null
(내장함수)
·dual
활용방법
[SQL 기본 및 활용]
2주
7일차
최종모의고사풀0I
핵심 요약
1과목
2과목
1.
회차
2회차
차례
요약
과목 -
과목 "
SQLD 44개 출제포인트
016
데이터 모델링의 이해
제짬 데이터 모델링의 이해
038
제2장 데이터 모델과 성능
047
연습문제
055
SQL 기본 및 활용
제1장 SQL 기본
○62
제2장 SQL 활용
086
제3장 SQL 최적화 기본 원리
103
연습문제
107
\→/
뻐\
최종모의고사
제1회 최종모의고사
118
제2회 최종모의고사
136
제1회 정답 및 해설
153
제2회 정답 및 해설
157
SQLD44개 출제포인트
」r乫‘J泌묘긴익’f
‘…="=논쟈성섯騙令/:軟ㅋ終,
SQLD 44개 출제포인트
01
SQL 연산순서 ★★★
·From
·Where
·Group by
' Having
·Select
·Order by
·DML : Select, insert, update, delete
·DDL : Alter, create, modify, drop
(, comn기t
· TCL : R에ba아
·DCL : Grant, revoke
02
Distinct
어떤 컬럼값들의 중복을 제거한 결과를 출력한다.
·Select distinct col from table;
·Select distinct c이1, co12 from table; 의 경우엔 coil과 c이2의 값이 모두 같지 않
은 것만 출력한다,<주의>
03
Alias **
Select절에서 사용가능, where절에서는 사용불개
Select col as name from table; = select col name from table;
16 SOLD 44개 출제포인트
04
댜」
。k
2。
23 SOLD Masterb。
concat
Select coil + co12 + col3 from table; (SQL Server)
Select coil II co12 II co13 from table; (oracle)
Select concat(coll, col2) from table; *연산자가 2개!! 기억!!
靄鋼
A between B and C : B < = A < = C
柳∼刪m欒慟驃
SQL 연산자★
域湘 ㅂ
06
m무 늰彼 咫暳楹
3) OR: A 또는 B
(둘 중 하나만 만족해도 OKH)
驪湘 ∼
2) AND : A 그리고 B
(둘다 만족)
묫
ㅇ 芬 蹈隧嫂燦 ㅁ囊
1) NOT: ∼가 아니다
ㅇ
。
논리연산자
밈 曰 粒∼= 刪겯띠卍떼
05
A in (1,2,3) : A = 1 or A = 2 or A = 3
A like ' ble*' : A의 값 중 2, 3, 4번째 값이 비e인 모든 데이터 출력
07
escape
and email like '@_%' escape '@)'
* 아무 문자나 가능
08
rownum, top
·oracle에선 where절 옆011 rownum
·SQL server의 경우 select 옆에 top
SOLD 44개 출제포인트 17
니,
[11。
lE1:
1:,,,』,;,,:,
e。
assbiz
09
n애의 정의 ★★★
모르는 값, 정의되지 않은 값
(공백이나 0과는 다르다)
산술연산에서 null이 들어가게 되면 null이 출력된다.
*n얘 + 2, n에 * 4, null + ni개 모두 결과는 n메
조건절에 n몌이 들어가게되면 false를 반환 함
*null = null, null = 2
(sum, count, mmn, max…)에서 null은 데이터 대상에서 제외된다.
집계함수
「에서는 가장 작은 값이 된다.
정렬시에는 오라클에서는 가장 큰 값이 되고, SQL Serve
Nvl(col,0) : cot이 null이면 0 반환, 아니면 col 반환
Nvl2(col,1,0) '. col이 null이면 0 반환, 아니면 1 반환
lsnull(c히, 0) '. C뎨이 n매이면 0 반환, 아니면 c이 반환
Nullif(col,0) : cot이 0이면 null 반환,아니면 col 반환
Coalesce(coll, c이2, c이3..) : n애 아닌 첫번째 값 반환
10
정렬 ★★
· 느려질 수 있다
· 가장 마지막에 실행
·null이 어디에 오는지.
..
컬럼명으로 정럴, 앞의 기준이 같을 때 그 다음 컬럼으로 정렬
기본값은 asc
(오름차순)
, des(=는 내림차순
Order by coil, co12 desc
(번호)
로 정렬,select 절의 출력순서로 정렬순서를 지정
출력순서
Order by 2, 1 desc
18 SOLD 44개 출제포인트
。k禪」
2。
23 SOLD Masterb。
결^숫자함수
Round(222'45, 1) 소수점 둘째자리에서 반올림하여 첫째자리까지 출력
Round(225.67, 0) 소수점 첫째자리에서 반을림하여 정수만 출력
1 파라미터는 1의 자리에서 반올림하여 정수를 출력
綢
灘
∼
^ 8뻑→ 鷺
輾輞
·Trim, Itrim, rtrim : 양쪽공백제거 왼쪽, 오른쪽 공백제거
닝朮 -
· Lower, upper : 소문자로, 대문자로
∼煮一蘗 榜曜棚嶸 묵
∼
一
결& 문자함수'
鬧8
Floor : 버림함수, 파라미터 사용법은 round와 같음
切ㅁ曰且누 吻겊볍阻隅
Ceil(oracle) 仕eiling(SQL Server) 올림함수, 파라미터 사용법은 round와 같음
·Lpad, rpad : 특정 자리를 정하고, 왼쪽/오른쪽의 공백을 채워주는 함수
- Select lpadCA', 5, 'k') from dual;
****A, rpad면 A****
·Substr : SELECT SUBSTRCkorea', 2, 2) FROM DUAL; or이 출력
· Instr : SELECT INSTRCCORPORATE FLOOR', 'PO') AS idx FROM DUAL; 4가
겯`날짜함수'
·To꽈iar : 날짜형 데이터를 문자로 출력
Select to_char(sysdate, 'YYYY MM DD') from dual;
·To_date : 문자형 데이터를 날짜형으로 출력
- select to_dateC2022 - 09 - 22') from dual;
·sysdate (oracle), getdate() (SQL Server)
SOLD 44개 출제포인트 19
`"
데이터분석 온라인교육전문 epassbiz
결^조건문'
·Decode
select decode(coll,'A',1,'B',2,3) from dual;
- C이이 A면 1, B면 2, 아니면 3
·case
case when col = 'A' then 1
when col = 'B' then 2
else 3 end: 서로 같다
case col when 'A' then 1
when 'B' then 2
else 3 end:
결睦 집계함수"
·Count, mmn, sum, max 등.
- null은 포함되지 않는다.
(1, null, 2, 3, n몌)
의 데이터를 기준으로 결과는 다음과 같다.
■ CountO : 3
■ SumO: 6
· Avg() : 2
■ Min() : 1
■ Max() : 3
C이1
C이2
CoI3
n몌
n몌
1
2
3
2
1
null
m개
·Select sum(coll + co12 + co13) from dual;
여기에서 먼저 sum을 생각하지 말고 coIl + co12 + co13을 먼저 생각해보면 첫번째
행은 null + null + 1이기에 n메이 반환되고, 마지막 세번째 행도 마찬가지다.
그러므로 두번째 행의 2+ 3+ 2의 값인 7이 결과가 된다.
20 SOLD 44개 출제포인트
2。
2SOLD
3 Masterb。
。k 그
반대로 sum(c이1) + sum(col2) + sum(co13)
의 값은 3+ 3+ 3이므로 9가 출력된다.
이 차이를 알아야 한다.
16
그룹바이 group by
叔悧
- 조인하는 테이블 간의 동일 컬럼이 SELECT 절에 기술 되도 테이블 이름을 생략해
뾰緇m므ㅂ 놀
- 동일한 이름을 갖는 컬럼이 있지만 데이터 타입이 다르면 에러가 발생한다.
以澔 ∼
조인에 이용되는 컬럼은 명시하지 않아도 자동으로 조인에 사용된다.
이
ㅇ " 느榧 絶 畛 脯
반드시 두 테이블 간의 동일한 이름, 타입을 가진 컬럼이 필요하다.
빕∼邢 -
' Natural join
느므쪼 田 飇 晙 嶼 ㅁ囊
4ft. join **
畛聊
Group by 절에 온 컬럼만 select절에 올 수 있음
齡
ㅁ 曰 ㅛ勻= 吻 것 ” 円曲
집약기능을 가지고 있음
(다수의 행을 하나로 합침)
야 한다.
- select department_id 부서, department_name 부서이름, location겨 지역번호,
oty 도시
from departments
natural join locations
where city = 'Seattle';
' Using
- USING 절은 조인에 사용될 컬럼을 지정한다.
- NATURAL 절과 USING 절은 함께 사용할 수 없다.
조인에 이용되지 않은 동일 이름을 가진 컬럼은 컬럼명 앞에 테이블명을 기술한다.
- 조인 컬럼은 괄호로 묶어서 기술해야 한다.
select department_id 부서번호, department_name 부서, location_id 지역번호,
city 도시
from departments
join locations using (location_id);
SOLD 44개 출제포인트 21
:육冊epassbiz
`騙데이터,
석:라:
' left outer join
from table a left outer join table b
on a.c이 = b.ㄷ이 이것과 같은 오라클 Sc기 문법은
from table a, table b
where a.col = b.col(+)
' join 순서
- from a,b,c
a와 b가 」이n되고, 그리고 C와 」톄n 된다,
18
서브쿼리 ★★★
· 5이ect : 스칼라서브쿼리
·From : 인라인뷰
(메인쿼리의 컬럼사용 가능)
·Where : 중첩서브쿼리
· Group by : 사용불가
·Having : 중첩서브쿼리
·Order by : 스칼라서브쿼리
· 山 : 서브쿼리출력값들 or 조건
·Any I some : 서브쿼리출력값들 중 가장 작거나 큰값과 비교
·All : any I some과 반대개념
·Exists : 서브쿼리 내 select절언l 뭐가와도 상관없다. Row가 있으면 true, 없으면
false
19
집합연산자 ★★
· Union : 정렬 0, 중복제거 ○, 느리다
· Intersect : 정렬 0, 교집합,느리다
· Minus(except) ; 정렬 0, 차집합: 느리다
· Union 해 : 정렬 )<, 중복제거 ><, 빠르다
22 SOLD 44개 출제포인트
2。
。k
23 SQLD Masterb。
20
[
DDL **
·Truncate - drop & create, 테이블 내부구조는 남아있으나 데이터가 모두 삭제됨
·Drop 테이블 자체가 없어짐
(당연히 데이터도 없음)
·Delete - 데이터만 삭제
·Rollback, commit와 항상 같이 나옴
· Insert : 데이터 넣는 명령, insert into 테이블
(coIl, co12, co13..) values ('11', '22', '33'..);
-v히ues를 기준으로 좌우의 괄호 속 개수가 맞는지
· update : 데이터의 특정 행 값을 변경
(delete & insert)
- update 테이블 set (=뎨 = '값' 神ere c이1 = '조건",
· delete : 데이터의 특정 행을 삭제
delete from 테이블 耐iere col = '조건'',
· merge : 특정 데이터를 넣을 때 해당 테이블 키값을 기준으로 있으면 update, 없으면
insert를 한다,
(최근 기출)
위 문제 모두 commit,「에back, savepoint와 주로 함께 출제된다.
^
제약조건 "
'
·PK : not null + unique
- 테이블당 하나의 PK를 가질 수 있음
(하나라는게 컬럼이 아님, 복합키 가능)
·Not null : 해당 컬럼에 null이 올 수 없음
·Unique ; 해당 컬럼에 중복값이 올 수 없음
il
DCL
· Grant, revoke 문법
- GRANT 시스템권한명
[, 시스템권한명.
.. - 롤명] TO 유저명[, 유저명... - 롤명.
..
PUBLIC I [WITH ADMIN OPTION];
- REVOKE { 권한명
[, 권한명...] ALL } ON 객체명 FROM{유저명〔, 유저명...] - 롤명
(ROLE) - PUBLIC } [CASCADE CONSTRAINTS];
Role은 객체
SOLD 44개 출제포인트 23
m
ㅐ
DML '
m
ㅁ 曰 且 보 吻겊볍鰻떼
』
`,데이터분석온라인:
육전문 epassbiz
^
Vt EW
· 독립성, 편의성, 보안성
· SQL을 저장하는 개념
轉 그룹함수
·「에 up
*cube
' groupingsets
·grouping
어떤 결과가 나오고, 어떤 함수를 사용했는지에 대한 문제 기출
분류
내용
학용품
연필
학용품 지우개
CUBE
ROLLUP
원본테이블
개수 금액
분류
내용
개수
금액
분류
내용
개수
=그.ㅐ
ㄷ그 ㄱ
1
400
기타
게임
1
100
기타
게임
1
100
3
1200
기타
NULL
1
100
NULL
게임
1
100
음식
김밥
1
2000
음식
김밥
1
2000
3
14400
NULL
김밥
1
2000
학용품
샤프
2
800
음식
김밥
1
2000
음식 제육덥밥
음식 제육덥밥
1
4800
음식
NULL
4
16400
학용품
샤프
2
800
음식 제육덥밥
2
9600
학용품
샤프
2
800
NULL
샤프
2
800
기타
1
100
학용품
연필
1
400
학용품
연필
1
400
학용품 지우개
3
1200
NULL
연필
1
400
NULL
6
2400
음식 제육덥밥
3
14400
NULL 제육답밥
3
14400
학용품 지우개
3
1200
NULL
지우개
3
1200
NULL
NULL
기타
NULL
1
100
음식
NULL
4
16400
학용품
NULL
6
2400
게임
학용품
24 SOLD 44개 출제포인트
11 18900
2。
23 SOLD Masterb。
。k
·ROLLUP
(GROUP BY에 있는 컬럼들을 오른쪽에서 왼쪽순으로 그룹 생성)
a, b로 묶이는 그룹의 값
a로 묶이는 그룹의 소계
전체합계
(나올 수 있는 모든 경우의 수로 그룹 생성)
전체합계
琿湘
노c己 了∼綎珊
b로 묶이는 그룹의 소계
ㅎ
a로 묶이는 그룹의 소계
。
a, b로 묶이는 그룹의 값
。
맥∼E 量∼= 刪거스. 円隅
·CUBE
*rollup(A,B) ! = rollup(B,A), cube(A,B) = cube(B,A)
26
TCL
' Commit, rollback
윈도우함수
·rows between and 값이 증가한다.
rows between UNBOUNDED PRECEDING and CURRENT ROW) as "직업별 합계"
rows between 1 PRECEDING and 1 FOLLOWING) as "위아래 합계"
·range between and 값이 동일하다
1. UNBOUNDED PRECEDING : 최종 출력될 값의 맨 처음「ow의 값
(Partition by 고려)
2. CURRENT ROW : 현재 row의 값
3. UNBOUNDED FOLLOWNG : 최종 출력될 값의 맨마지막「ow의 값
(Partition by 고려)
·Rank
1,1,3,4···.
.Dense_rank
1,1,2,3 " ·,
·Partition by, order by
Row_numberO over (partition by coil order by co12)…
SOLD 44개 출제포인트 25
叔朮
渗
∼一一며뜨H∼쑈
- Auto commit, be비n transaction (comrr기t 기능 잠시 끄기)end
나,
L1IOIE1
ga,,:',, ,epassbiz
계층형함수 '
』
prio
「 자식데이터 = 부모데이터
부모데이터에서 자식데이터로 가면 순방향
· SELECT [-ㅌ\/티-,
*순방향
LPADC ', 4 ' (LEVEL - 1)) ∥ 사원사원,
관리자,
CONNECT BY ISLEAF ISLEAF
FROM 사원
START WITH 관리재S NULL
CONNECT BY PRIOR 사원 = 관리자’,
' SELECT LEVEL,
' 역방향
LPADC ', 4 * (LEVEL - 1)) " 사원사원,
과리자
CONNECT BY ISLEAF ISLEAF
FROM 사원
START WITH 사원 = 'D'
CONNECT BY PRIOR 관리자 = 사원’,
29
PL/SQL
· exception
(생략가능)
·procedule 반드시 값이 안나옴
·trigger 커밋, 롤백 안됨
Before, after별로 Insert, update, delete가 있음
·function 반드시 반환값이 있음
26 SOLD 44개 출제포인트
2。
23 SOLD Masterb。
。k
30
엔터티 ★★
· 관리해야 할 대상이 엔터티가 될 수 있다.
· 인스턴스 2개 이상
(프로세스)
· 업무에서 사용해야 함
· 관계를 하나 이상 가져야 한다.
田무□ ㅛ七= 吻겊ㅃ 匹隅
· 유형엔터티
。
。
”
· 개념엔터티
· 사건엔터티
· 기본엔터티
· 중심엔터티
· 행위엔터티
∼
뵨
-
∼
∼
속성 "
∼
온
쌌
·기본속성
·설계속성
』
도메인
·파생속성
· 데이터유형
·크기
·제약조건
Check, primary key, Foreign key, not null, unique· " " 개념정리
SOLD 44개 출제포인트 27
汁滌
∼礖
^
* 데이터분석 온라인교육전문epassbiz
●
』
관계
· IE
사원
사원번호
ER win의 부호 사용
사원명
주민번호
주소
연락처
핸드폰번호
근무지역
타원,해쉬 마크 및 까마귀 발
Non-identifying
Identifying
-
γ
',
해쉬 마크가 있는 타원
-
해쉬 마크만 있음
I
.
<륫
야q ㅑ
까마귀 발이 있는 해쉬 마크
뎌
의미
0,1, 또는 그 이상의 개체 허용
K 1 또는 그 이상의 개체 허용
츈
-P
《
0 또는 1 개체 허용
정확히 1개체 허용
츈
·Barker
사원
부서
,
현 소속관계는.
瑟
주어부
각각의 사원은
각각의 부서는
관계비
드걀하나의
하나 이상의
목적부
부서를
사원을
선택사양
반드시 가져야 한다
가질 수도 있다
,
^
사원
(종업원)
부서
#사원번호
*사원명
○주민번호
○주소
O연락처
O근무부서
#부서번호
*부서명
○지역
식별자 "
· 유일성 : 유일하게 인스턴스를 구분
· 최소성 : 최소 컬럼으로
· 불변성 : 값이 바뀌지 않아야 함
· 존재성 : not null
- 위 4개를 만족하면 후보키가 될 수 있으며, 그 중 하나, 대표하는 것이 기본키이다.
28 SOLD 44개 출제포인트
2。
23SQLD
Masterb。
。k,뒤길
식별자 & 비식별자'
迪
·식별자
-강한관계
PK가 많아진다
(조인시)
SQL이 복잡해짐
mP 노 艇 泗 呻 吻
낑瑚 嫩
쁘脇田Pㅂ >
笹捌
티:리:)
以邢 -
36
=ㅌ憂 田隧祖P ㅁ璽
SQL이 느려짐
山瓊
-약한관계
切 ㅁ 曰 且 걺 幟 겆 ㅃ 匹回
·비식별자
· 그리는 방법
- 좌상에서 우하로
- 관계명은 반드시 표기하지 않아도 됨
UML은 객체지향에서만 쓰인다.
迪
성능 데이터 모델링 '
· 아키텍쳐모델링
(먼저)
테이블, 파티션, 컬럼 등의 정규화 및 반정규화
(그다음)
· SQL- 튜닝
- Join 수행원리
' Hash join
- 등가 join만 사용함
- Ha삵1 함수를 사용하여 select, 」이n 컬럼저장
(선행테이블)
- 선행테이블이 작다
Ha탉〕처리를 위한 별도 공간 필요
SOLD 44개 출제포인트 29
`긺데이터분석온라인:
육전문
,,,,,.,,
' NL join
- 랜덤엑세스
- 대용량 sort 작업
- 선행테이블이 작을수록 유리
' Sort Merge
- 」이n키를 기준으로 정렬
- 등가/비등가 」이n 가능
' Optimizer
CBO : 가장 경쟁적인 것을 정함
RBO : 규칙에 의해서 정함
· 실행계획읽는 방법
Operation
ID
Name
0 select cstmer no
14
1
1
2
nested loops
nested ioops
3
*4
5
정규화
14
1638
17(0)
00:00:01
1218
3(0)
00:00:01
0(0)
00:00:01
1(0)
00:00:01
indes unique scan
pk_cstmr
1
tbwcard
1
★★★
· 1차. 원자성
· 2차. 부분함수종속성제거
· 3차. 이행함수종속성제거
· BCNF. 정의
30 SOLD 44개 출제포인트
Time
00:00:01
14
ID 3 → 4 → 2 → 5 ) 1 → 0
(%CPU)
17(0)
tbwcstmr
table access by index rowid
Cost
1638
table access f얘
실행계획을 읽는 순서는 다음과 같다.
』
Rows Bytes
30
。k
2。
23 SQLD Masterb。
騈구화 절차
제1정규화
제2정규화
· 속성의 원자성을 확보
· 기본키를 설정
(분해)
· 기본키가 2개 이상의 속성으로 이루어진 경우, 부분함수 종속성을 제거
· 기본키를 제외한 칼럼 간0ㅔ 종속성 제거
· 이행함수 종속성을 제거
· 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해
제4정규화
· 여러칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중값 종속성을 제거
제5정규화
· 조인에 의해서 종속성이 발생되는 경우 분해
쬐∼一
一
H
∼
鞭
∼
贓
一
∼
…∼
楗
1. 삽입 이상
(insertion anomaly) : 새 데이터를 삽입하기 위해서 불필요한 데이터도
慟∼撈
이상현상
-
39
"
∼
∼
邢
(테이블 사이즈가 작아져서)
Insert, update는 빨라질 수 있다.
∼一攪鱗驪 尸∼輾
…
면
(테이블이 늘어나서)
Select시 」am 때문에 느려질 수 있다.
山므
BCNF
嶼우□ 且 보 吻 겊 볍 巴 曲
제3정규화
설명
함께 삽입해야 하는 이상 문제
(delete anomaly) : 튜플을 삭제하면 필요한 데이터까지 함께 삭제되는
3. 삭제 이상
이상 문제
반정규화 ★★
· 데이터의 무결성을 해칠 수 있음
·절차
대량범위처리 빈도수 조사
∼ 범위처리 빈도수
통계처리 여부
SOLD 44개 출제포인트 31
綴邏
되는 이상 문제
鞭嫩盼汕∼鰕鬱∼
(update anomaly) ; 중복튜플 중 일부만 변경하여 데이터가 불일치하게
2. 갱신 이상
ㅗ.데이터분석온라인:
육전문
epassbiz
· 크ㅌㄹ
《》
`1-
테이블 병합 1:1 I 1:M
슈퍼/서브타입 병합
부분테이블 분할
통계테이블 분할
중복테이블 분할
부분테이블 분할
이력 컬럼 추가
중복 컬럼 추가
(를 일반 컬럼으로 병합
아
∼ 파생 컬럼 추가
응용시스템 오작동을 피하기위한 임시값 컬럼 추가
중복관계 추가
결`데이터에 따른 성능
' Row migration
[행 이전]
1. Update로 인해 행 길이가 증가했을 때, 저장공간이 부족한 경우 발생
2. 원래 정보를 기존 블록에 남겨두고 실제 데이터는 다른 블록에 저장
→ 검색시, 원래 블록에서 주소를 먼저 읽고 다른 블록을 찾아야 하므로 성능 감소
3. 해결책 : PCTFREE 영역을 충분히 할당한다.
- PCTFREE가 너무 큰 경우 데이터 저장공간부족으로 공간 효율성 감소
' Chaing
[행 연결]
1 . 데이터가 커서 여러 블록에 나누어 저장하는 현상
-'2개 이상의 데이터 블록을 검색해야 하므로 성능 감소
2. Intial Row Piece
(행조각)
와 Row P이nte
「로 블록 내에 저장
3. 해결책 '. DB-BLOCK_SIZE를 크게하여 최소화 가능
→ 사이즈 변경이 어렵고, 무조건 크게 할 수 없음
32 SOLD 44개 출제포인트
2。
23 SOLD Masterb。
。k
' List partition
- 특정값을 기준으로
- 관리 쉬움
- 데이터가 치우칠 수 있음
' Range partition
3. All in One EF입(Single Type)
슈퍼/서브타입 모델
N
/
OnetoOneType□ㅢ
Plus Type
Single Type
1:1 타입
슈퍼+서브 타입
시 in One 타입
기준은?
1) 트랜젝션은 항상 일괄로 처리하는데 테이블은 개별로 유지되어 Union 연산에 의해
성능이 저하될 수 있다.
2) 트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합되어 있어 불필
요하게 많은 양의 데이터 때문에 성능이 저하된다.
3) 트랜잭션은 항상 슈퍼 + 서브타입을 공통으로 처리하는데 개별로 유지되어있거나
하나의 테이블로 집약되어있어 성능이 저하된다.
SOLD 44개 출제포인트 33
鍍淪
1. 1:1 Eb입(One to One Type)
2. 슈퍼 + 서브타입
(더us Type)
夔緇m媛檻>
슈퍼/서브타입
더卯 쁘
」`
m를 노開 鯉 纓釀
관리 어려움
締汕 -
' Hash partition
꽃∼憂楓隧胛므 一
一
姃
- 가장 많이 씀
略므
- 관리 쉬움
m
ㅁr
ㅁ 且 누 吻겊닙鰻隅
- 특정값의 범위
읊.
데이터분석온라인:
육전문epassbiz
닐`분산데이터베이스
분할 투명성
위치 투명성
지역사상 투명성
종목 투명성
장애 투명성
병행 투명성
사용자가 입력한 전역 질의를 여러개의 단편 질의로 변환해 주기때문에 사
용자는 전역 스키마가 어떻게 분할되어있는지 알 필요가 없음
어떤 작업을 수행하기 위해 분산 데이터베이스상에 존재하는 어떠한 데이
터의 물리적인 위치도 알 필요가 없음
지역DBMS와 물리적 DB사이의 Mapping 보장. 각 지역시스템 이름과 무관
한 이름 사용가능
어떤 데이터가 중복되었는지,또는 어디에 중복데이터를 보관하고 있는지
사용자가 알 필요없음
분산되어있는 각 컴퓨터 시스템이나 네트워크 장애가 발생하더라도 데이
터의 무결성이 보장됨
다수 ㅜransaction 동시 수행시 결과의 일관성 유지,잠금
(Locking)
과 타임
스탬프
(Timestamp)
의 두가지 방법을 주로 사용
· 단점 .' 데이터무결성을 해칠 수 있다.
결^인덱스'
· 사용 못하는 경우
-부정형
Like
(묵시적)
- 형변환
·악영향
-DML 사용시 성능이 저하됨
34 SOLD 44개 출제포인트
2023 SQLD Masterbook
데이터 모델링의 이해
데이터 모델링의 이해
제1절
데이터 모델의 이해
I. 데이터 모델링의 정의
· 고객과 함께 고객의 업무 프로세스를 이해해야 데이터 모델링을 제대로 할 수 있다.
· 현실 세계를 데이터베이스에서 표현하기 위한 추상화 과정이다.
· 데이터 모델링 표기법을 사용해서 모델링 한다.
· 고객의 업무 프로세스내 비즈니스 프로세스 규칙을 정의하여 데이터 모델로 표현 할 수 있
어야 한다.
· 고객이 이해하기 쉽게 간결하게 모델링 해야 한다.
2. 데이터 모델링의 특징
추상화
Abstraction
단순화
Simplification
현실 세계를 일정한 양식
(표기법)
에 맞게 간략하게 표현한다.
누구나 이해하기 쉽도록 약속된 규약에 의한 제한된 표기법 또는 언어를 이
용하여 표현한다.
명확화
명확하게 의미가 한 가지로 해석되어야 함으로 애매모호함을 제거하고 정확
Clarity
하게 현상을 기술한다.
3. 데이터 모델링의 단계
r
개념적 모델링
· 추상화 수준이 가장 높음
· 업무 측면의 모델링
· 전사적이고 포괄적이 모델링
· 핵심 엔터티 도출
· ERD 작성
38 제1과목 데이터 모델링의 이해
논리적 모델링
· 특정 데이터베이스 모델에
종속된다.
· 세부속성, 식별자, 관계 등을
정확하게 표현
· 데이터 정규화 완료
· 재사용성이 높음
물리적 모델링
· 물리적인 성능과 데이터
저장을 고려한 설계
· 가장 구체적인 데이터 모델링
· 추상화 수준이 가장 낮은 단계
· 성능, 보안, 가용성을 고려한
데이터베이스 모델링 진행
2。
23 SOLD Masterb。
。k
4, 데이터 모델링의 3가지 관점
· 데이터 관점
- 데이터와 업무 간에 어떤 관련이 있는지, 데이터와 데이터 사이의 관계가 무엇인지에
따라 모델링 한다. 비즈니스 프로세스에서 사용되는 데이터를 의미한다.
嫩醱嚥媛ㅂ >
艇盜
- 업무의 처리
(프로세스)
와 데이터 간에 서로 어떤 영향을 주고 받는지를 모델링 한다. 프
以澔 油
· 데이터와 프로세스의 상관 관점
비
ㅁn느溜 緇 戀飜
- 시나리오 분석, 도메인 분석, 동적 분석
틱刪 -
하는 작업을 의미한다.
무으m 田躍犯므 ㅁ璽
실제 하는 업무에 따라 무엇을 어떻게 하는지 모델링 한다. 비즈니스 프로세스에서 수행
。ㅇ벵
· 프로세스 관점
酌
ㅁ헬
ㅇ 쑈撫吻뉘一汨珊
- 구조분석, 정적분석
로세스와 데이터 간의 관계를 의미한다.
- CRUD(Create, Read, Update, Delete)
5. 데이터 모델링을 위한 ERD(Entity Relationship Diagram)
1976년 피터 첸
(Peter Che파 이 만든 표기법으로, 데이터 모델링의 표준으로 지금까지 사
용되고 있다.
' 대표적인 표기법 - Chen, IE/Crow's Foot, Barker, UML
·ERD를 작성하는 순서
① 엔터티 도출
② 엔터티 배치
③ 엔터티 관계 설정
④ 관계명 기술
⑤ 관계 참여도 기술
⑥ 관계 필수 여부 기술
제1장 데이터 모델링의 이해 39
`,
`i.
데이터,
석온라인:
육전.,,,,,.,,
6. 3단계 구조 스키마
(3-Level Schema)
· 데이터베이스의 독립성을위해서 3단계 구조 스키마가 존재한다.
· 사용자
(외부 스키마)
, 설계자
(내부 스키마)
, 개발자
(개념 스키마)
의 각기 관점에 따라 데이
터베이스를 기술하고 이들 간의 관계를 ANSI표준으로 정했다.
· 데이터의 독립성 확보를 통해서 데이터 복잡도 감소, 데이터 중복 제고, 사용자 요구사항
변경에 따른 대응력 향상, 관리 및 유지보수 비용 절감 등의 장점이 생긴다.
· 각 계층을 뷰라고 부르며 3단계 계층으로 분리되어 서로 독립성을 확보한다.
7. 데이터베이스 3단계 구조 특징
외부 스키마
(외부 단계)
개념 스키마
(개념 단계)
내부 스키마
· 데이터베이스의 개별 사용자 관점의 이해와 표현
· 응용프로그램이 접근하는 데이터베이스
· 여러 개의 외부 스키마 존재
· 데이터베이스 관리자의 관점으로 규칙과 구조 표현
· 데이터베이스의 전체적인 논리구조
· 일반적으로 스키마는 개념 스키마를 지칭함
· 데이터베이스 시스템의 설계자 관점으로 저장 장치 관점의 이해 및 표현
(내부 단계) · 데이터가 실제로 데이터베이스0ㅔ 물리적으로 어떻게 저장 되는지 확인
40 제1과목 데이터 모델링의 이해
2。23SOLDMasterb。
。k'//'i스」
제2절
엔터티
· 데이터의 집합
· 저장되며 관리되는 데이터
· 개념, 사건, 장소 등의 명사
· 유형과 무형에 따른 분류
개념 엔터티
· 물리적이진 않지만 개념적으로 존재하며 정보로 구분되는 엔터티
- 강의, 금융상품, 부서 등등
사건 엔터티
· 비즈니스 프로세스에 따라 발생되는 엔터티
· 데이터가 많다.
- 구매, 판매, 영업, 수납 등등
·발생 시점에 따른 엔터티 분류
기본 엔터티
· 키 엔터티라고 하며, 독립적으로 생성 및 관리 된다.
-고객, 부서, 판매제품
중심 엔터티
· 기본 엔터티로 부터 발행되는 행위 엔터티를 생성하는 중간 엔터티이다.
계좌, 주문, 수납 등등
행위 엔터티
· 상위에 있는 2개 이상의 엔터티로 부터 발생되는 엔터티이다.
- 주문 이력, 접속 이력, 수납 이력 등등
제1장 데이터 모델링의 이해 41
팁知 -
· 물리적이며, 안정적이고, 지속적인 엔터티
-사원, 제품, 교수 등등
뜨으m 山躍肥尸 므빛
유형 엔터티
`“데이터분석온라인:
육전문 epassbiz
제3절
(Attribute)
속성
· 엔터티가 가지는 항목
· 속성은 더 이상 분리 되지 않는다.
· 업무에 필요한 데이터를 저장 한다.
· 인스턴스의 구성 요소로 최소의 데이터 단위 이다.
· 속성의 특징
① 속성은 업무에서 관리되는 정보이다.
② 속성은 하나의 값만 가진다.
③ 주식별자에게 함수적으로 종속된다. 기본키에 따라 속성의 값도 변경될 수 있다.
· 특성에 따른 속성의 종류
기본 속성
설계 속성
파생 속성
· 비즈니스 프로세스에서 도출한 본래의 속성
이름, ㄸ), 전화번호, 등록일시 등등
· 데이터 모델링 과정에서 발생되는 속성
- 상품코드,지점코드 등등
· 다른 속성에 의해서 만들어지는 속성
- 합계, 평균 등등
42 제1고陽 데이터 모델링의 이해
。k
2。
23 SQLD Masterb。
관계
(ReIationsI꺄)
)
제4절
1. 관계
(Relationship)
의 개념
· 엔터티간 논리적인 연관성을 의미한다.
· 속성 정의 및 관계 정의에 따라서 다양하게 변화 할 수 있다.
[존재에 의한 관계]
[행위에 의한 관계]
고객
부서
서인영
DB 팀
주문
사원
소속한다 伊〔
이효리
주문한다
0<
CTA201
3. 관계의 표기법
一,군
· 관계명 : 관계의 이름
- 관계에 엔터티가 참여하는 형태를 정의한다.
- 각 두개의 관계명을 가진다.
- 관계명은 능동적 또는 수동적으로 명명된다.
- 애매한 동사를 피하고 현재형으로 표현한다.
· 관계차수 ㅍ1:1, 1:M, M:M
- 관계있는 엔터티간에 참여하는 수를 의미한다.
· 관계선택사양 : 필수관계, 선택관계
- 엔터티가 관계에 있어 항상 참여하는지, 선택적 참여를 하는지 표기한다.
제1장 데이터 모델링의 이해 43
터湘 -
· 존재에 의한 관계, 행위에 의한 관계가 있다.
므므m 田耀脛些 므잊
2. 관계의 분류
凶
壘 h歎∼鰐 鷺∼꺼…
· 엔터티의 정의에 따라 영향을 받을 수 있다.
`긺데이터,
석.라:육一
: ssbiz
포함한다
부서
사원
소속된다
1: 관계
학생
학생
H
-
수업
1:M 관계
수업
M:N 관계
수업
학생
nㅌ 표기법]
주문목록
목록
포함한다
,
목록
= = ㄹ
1 ㄴㄴ -ㄱ ㄱ
포함된다
[Barker 표기법]
주문목록
>
포함한다
목록
포함된다
44 제1고R 데이터 모델링의 이해
2023 SQLD Masterbook S
제5절
S
식별자
1. 식별자 개념
· 식별자는 엔터티를 대표하는 속성을 의미한다.
· 유일성, 최소성, 불변성, 존재성을 만족
부刪 -
· 다른 엔터티와 관계를 연결하는 식별자
뜨으또 田腿肥峰 ㅁ璽
· 엔터티내 각 인스턴스를 유일하게 구분할 수 있는 구분자
沁므
2. 식별자 특징
盼 啄 欠뮷渺錐鰕飇仰
· 하나의 엔터티는 반드시 하나의 유일한 식별자를 가지고 있어야 한다.
3. 주식별자의 특징
유일성
주식별자에 의해 엔터티 내0ㅔ 모든 인스턴스들을 유일하게 구분 해야 함
불변성
주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
4. 키의 종류
기본키
(Primary Key)
후보키
(Candidate Key)
슈퍼키
(Super Key)
대체키
(Alternate Key)
외래키
(Foreign Key)
후보키 중에서 엔터티를 대표할 수 있는 키
유일성과 최소성을 만족하는 키
유일성은 만족하지만 최소성을 만족하지 않는 키
여러 개의 후보키 중에서 기본키를 선정하고 남은 키
타 테이블의 기본키 필드를 가리키는 것으로 참조무결성을 확인하기 위해 사용
되는 키
(허용된 값만 저장하기 위해서 사용)
체장 데이터 모델링의 이해 45
組刪
주식별자가 지정 되면 반드시 값이 존재 해야 함
쓰刪田些ㅂ 轎
존재성
∼祈瓣 勝
∼
吻
주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함
M
一
湘 ∼
최소성
`긺데이터,
석g2 J:육一ssbiz
5. 식별자 분류
· 내부식별자 : 엔터티 내부에서 스스로 생성되는 식별자
· 외부식별자 : 다른 엔터티와 관계로 인하여 만들어지는 식별자
· 단일식별자 : 하나의 속성으로 구성
· 복합식별자 : 다수의 속성으로 구성
· 본질식별자 : 비즈니스 프로세스에서 만들어지는 식별자
· 인조식별자 : 인위적으로 만들어지는 식별자
6. 주식별자 도출방법
' 해당 업무 및 데이터에서 주로 사용되는 속성을 주식별자로 지정한다.
' 이름이나 명명된 호칭, 길이가 일정하지 않은 내용 등은 주식별자로 지정하지 않는다.
· 복합키를 구성할 때 너무 많은 속성이 포함되지 않도록 주의 한다.
7. 식별자 관계와 비식별자 관계
' 부모 엔터티의 주식별자가 자식 엔터티의 주식별자로 상속되는 경우(강한 관계)
' 부모 엔터티의 주식별자가 자식 엔터티의 일반 속성으로 상속되는 경우(약한 관계)
46 제1과목 데이터 모델링의 이해
데이터 모델과 성능
제1절
성능 데이터 모델링의 개요
· 데이터 모델을 중심으로 성능에 대한 데이터 모델링을 수행
팁湘 -
· 분석 및 설계 단계부터 데이터베이스 성능을 고려한 데이터 모델링을 수행하는 기법
모므m 田 躍 脛 므 ㅁ藪
I. 성능 데이터 모델링의 개념
2. 성능 데이터 모델링의 수행 절차
戮l
· 데이터 모델링을 할 때 蔘구화를 정확하게 수행한다.
· 데이터베이스 용량을 현재와 예상 증가량을 고려하여 조사한다.
· 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
數
· 성능관점에서 데이터 모델을 검증한다.
제2장 데이터 모델과 성능 47
弧州
· 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.
撫渺m峻汕竗
· 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
, li데이터분석온라인:육전:
,,,,,.‘,
제2절
정규화와 성능
1. 정 구화의 개념
· 데이터의 일관성, 최소한의 중복, 최대한의 데이터 유연성을 위한 방법
· 데이터를 분해하는 과정
· 정해진 규칙을 따라 데이터를 이용하기 쉽게 만드는 일
· 데이터의 중복을 제거한다.
· 데이터 모델의 독립성을 확보한다.
· 데이터 이상현상
(Abnormality)
을 줄이기 위한 설계 기법
· 엔터티를 상세화하는 과정이며 논리 데이터 모델링 수행 시점에서 고려
2, 이상현상
(Abnomality)
삽입이상
행
(Row) 삽입 시 지정되지 않은 속성 값이 NULL을 가지는 경우
갱신이상
데이터 갱신 시 일부분의 데이터만 갱신되어 일관성 유지가 안되는 경우
삭제이상
행
(Row) 삭제 시 원하지 않는 연쇄 삭제가 발생하는 현상
3. 정규화의 단계
제1정규화
· 테이블 내 속성의 원자성을 확보하는 단계
· 기본키를 설정
제2정규화
기본키가 2개 이상의 속성으로 이루어진 경우 부분 함수 종속성을 제거
제3정규화
· 기본키를 제외한 컬럼 간 종속성을 제거
· 이행 함수 종속성 제거
BCNF
(Boyce-Codd
Normal Form)
· 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속 시키면 분해
· 결정자 함수 종속성을 제거하는 단계
· 강한 제3정규화
제4정규화
여러 컬럼들이 하나의 컬럼을 종속 시키는 경우 분해하여 다중값 종속성을 제거
제5겯拓구화
조인에 의한 종속성이 발생되는 경우 분해
48 제1고陽 데이터 모델링의 이해
。k
2。
23 SQLD Masterb。
(제1정규화): 테이블 내 속성의 원자성을 확보하는 단계
4. 각 邵구화 예제
고객번호
이름
구매상품
과자. 모자
1
2
카트
3
엔진오일
타이어, 페인트,
1
과자
1
뽀로로
모자
2
마리오
카트
3
타요
타o뻐
3
타요
페인트
3
타요
엔진오알
숟
구매상품
서
즌 ㅆ
이름
뽀로로
뜨낟 놉
→外→…
고객번호
,
딕佃 뜨므또 田腿肥므 □
呈
(제2정규화): 기본키가 2개 이상의 속성으로 이루어진 경우 부분 함수
5. 각 정규화 예제
종속성을 제거
고객번호
이름
뭘별 구매금액
11궐
뽀로로
300원
2
11뉠
가리오
5DC'원
3
11뒬
타요
1
12뉠
뽀로로
600원
2
12뷜
마리오
400원
1
고객번호
고객번호
이름
1
뽀로로
2
마리오
3
타요
1
11뭘
300원
2
11철
500원
3
11뉠
1000원
1
12뉠
600원
2
12뒬
400원
제2장 데이터 모델과 성능 49
,
`,
데이터분석 온라인교육전문 epassbiz
(제3정규화): 기본키를 제외한 컬럼 간 종속성을 제거, 이행 함수 종속
6. 각 騙구화 예제
성 제거
고객번호
이름
고객등급
1
t· ㄹ 己
골드
2
마리오
실버
3
타요
다이아몬드
I
고객번호
이름
이름
고객등급
l
뽀로로
뽀로로
골드
2
가리오
마리오
실버
3
타요
타요
다이아몬드
7. 정규화 주의사항
· 모든 정규화는 이전 정규화를 만족해야 한다.
· 蔘子화시 이상현상은 제거 되지만 테이블의 분해로 데이터 조인의 발생이 많아지고, 이는
조회 성능 저하로 이어질 수 있다. (I/o증가 및 조인 연산 증가)
· 단일 테이블 조회시엔 데이터 중복이 제거되어 조회 성능이 향상 될 여지가 있다.
50 제1고陽 데이터 모델링의 이해
2。
23 SQLD Masterb。
。k
반。
Tr화와 성능
I. 반정규화의 개념
· 데이터베이스 성능 향상을 위해 데이터 중복을 허용하고 조인을 줄이는 방법이다.
· 조회속도를 향상 시킬 수 있지만 데이터 모델의 유연성은 낮아진다.
· 비정규화는 出구화를 수행하지 않음을 의미 하며, 반정규화는 역정규화라고 표현하기도
2. 반정규화를 수행해야 하는 경우
부佃 -
프ㅁ 至 田脛四燈 ㅁ藪
한다.
0ㅇ 卄
분리하는 데이터 모델링 기법을 의미한다.
이 β ㅇ ,一,→
一
珊
∼ 淋거∼兩련∼∼
· 시스템의 성능 향상 및 개발 운영의 단순화를 위해 정규화된 데이터 보델을 중복, 통합,
· 정규화를 잘해서 종속성과 활용성이 향상되었지만 수행 속도가 느려진 경우
· 특정 범위의 데이터만 자주 처리 하는 경우
慟∼湘 贓
닙∼灘 涎 뺀 硼
· 다량의 범위를 자주 처리해야 하는 경우
· 요약/집계 정보를 자주 사용 하는 경우
· 대상 조사 및 검토
데이터 처리 범위, 통계성 등을 확인 후 반정규화를 수행한다.
- 대량의 범위처리 및 빈도수, 통계성 프로세스, 테이블 조인 수
· 다른 방법 검토
- 클러스터링, 뷰, 인덱스, 응용 프로그램, 파티셔닝 등 다른 방법으로 해결 할 수 있는지
확인한다.
· 반정규화 수행
- 테이블, 속성, 관계 등을 반정규화 한다.
- 테이블 반蔘子화, 속성의 반정규화, 관계의 반出구화
제2장 데이터 모델과 성능 51
范刪
…玳緇曄媛ㅂ
∼
>
3. 반정규화의 절차
`“데이터,
:육전. epassbiz
석:
라:
4. 반정규화 기법
방법
테이블의 반정규화
1:1 관7邏 태
(기을 병합
1:M 광;튿 〔ln:기블 병합
슈퍼/'시브타입 E1이블 병합
^ 지
ㄱ- ㄱ
ㅂ 古
T
ㄹ
수평 분할
테이블 추가
컬럼의 반정규화
중복컬렇추가
중븍터Jo'블 추가
파생걸El추가
통계테ol블 추가
이력터I이블 컬럼추가
이력터I이블 추가
PK0: 의한 컬럼추가
부분터I이블 추가
응용프로그램 오작동들 위한 컬
럼추가
관겨I으灌 텬坪拓구화
중복관7擢 추가
52 제1과목 데이터 모델링의 이해
。k褘」
2。
23 SOLD Masterb。
제4절
데이터베이스 구조
1. 데이터베이스 구조
· 한대의 물리적 시스템에 여러 명의 사용자가 접속해서 사용하는 데이터베이스를 중앙 집중
松
형 데이터베이스라고 한다.
· 물리적으로 떨어져 있지만 네트워크로 연결된 단일 데이터베이스 이미지를 보여주고 분산
된 작업을 하는 데이터베이스를 분산 데이터베이스라고 한다.
분할 투명성
데이터베이스 객체가 여러 시스템에 중복되어 존재함에도 고객과는 무관하
7ㅔ 데이터 일관성이 유지 되어야 한다.
해도 데이터의 무결정은 보장 되어야 한다.
여러 고객의 응용프로그램이 동시에 분산 데이터베이스에 대한 트랜잭션을
수행하는 경우에도 결과0ㅔ 이상이 없어야 한다.
3. 분산 데이터베이스 설계 방식
· 상향식 설계 방식은 지역 스키마 작성 후 전역 스키마를 작성하여 분산 데이터베이스를 구
축하는 방식
· 하향식 설계 방식은 전역 스키마 작성 후 해당 지역 사상 스키마를 작성하여 분산 데이터베
이스를 구축하는 방식
제2장 데이터 모델과 성능 53
似刪
데이터베이스가 분산되어 있는 각 지역의 시스템이나 통신망에 이상이 발생
刪孀媛口轎
병행 투명성
스템 이름과 무관한 이름을 사용 할 수 있다.
뗀鋤
장애 투명성
지역 DBMS와 물적 데이터베이스 사이의 사상이 보장됨에 따라 각 지역 시
∼
爬
중복 투명성
· 어느 위치에서 접근 하더라도 동일한 명령으로 접근 할 수 있어야 한다.
닯∼繼
지역 사상 투명성
· 고객이 사용하는 데이터베이스의 위치를 알릴 필요가 없다.
絿滯 ㅂ
위치 투명성
고객은 하나의 논리적 관계가 여러 단편으로 분할 되어 각 단편의 사본이 여
러 시스템에 저장 되어 있음을 알 필요 없다.
부佃 -
므므므 田 隧 四 므 므맞
2. 분산 데이터베이스의 투명성
`
데이터분석온라인:
육전:
epassbiz
ii.
4. 분산 데이터베이스 장점과 단점
장점
1 . 데이터베이스 신뢰성과 가용성이 높다.
2. 분산 데이터베이스가 병렬 처리를 수행하기
[대문0ㅔ 빠르다.
단점
1. 데이터베이스가 여러 네트워크를 통해서 분
리되어 있기때문에 관리 및 통제가 어렵다.
2. 보안관리가 어렵다.
3. 분산 데이터베이스를 추가하여 시스템 용량 3. 데이터 무결성 관리가 어렵다.
확장이 쉽다.
54 제1고陽 데이터 모델링의 이해
4. 데이터베이스 설계가 복잡하다.
1 모델링은 현실세계에 대해서 표현하는 것으
2 다음 중 ANSI-SPARC에서 정의한 3단계
로 이해할 수 있다. 다음 중 모델링의 특징으
구조
(나ree키ev히 ar
(갸iitecture)
에서
로 가장 부적절한 것은?
아래 내용이 설명하는 스키마구조로 가장 적
①)현실세계를 일정한 형식에 맞추어 표현하
절한 것은?
의 작업으로서 데이터베이스 구축을 위한
사전작업의 의미가 있음
· 모든 사용자 관점을 통합한 조직 전쳬 관
점의 통합적 표현
· 모든 응용시스템들이나 사용자들이 필요
로 하는 데이터를 통합한 조직 전체의
이터와 그들간의 관계를 표현하는 스키마
가지고 있음
④ 애매모호함을 배제하고 누구나 이해가 가
① 외부스키마
(External Schema)
능하도록 정확하게 현상을 기술하는 정확
② 개념스키마
(Conceptual Schema)
화의 의미를 가짐
③ 내부스키마
(Internal Schema)
囹I臘.
데이터베이스 스키마 구조는 3단계로 구분되며,
각각은 상호독립적인 의미와 고유한 기능을 가
진다. 그 중 통합관점의 스키마를 개념스키마
라고 한다.
(Conceptual Shema)
정답
1 ②
2 ②
제1과목 연습문제 55
脈朮
모델링은 단지 시스템 구현만을 위해 수행하는
테스크가 아님, 시스템 구현을 포함한 업무분석
및 업무형상화를 하는 목적도 있음.
빵贓m媛벼추
(D 논리스키마
(Logical Schema)
해설
놨溜 咫 峰伽
DB를 기술 한 것으로 DB에 저장되는 데
통해 이해하기 쉽게하는 단순화의 의미를
驪潞
③ 복잡한 현실을 제한된 언어나 표기법을
더佃 -
② 시스템 구현만을 위해 진행하는 사전단계
뜨ㅇ 至 田縫멘些 ㅇ攣
는 추상화의 의미를 가질 수 있음
,,
恭.
데이터분석온라인:
육전문
,,,,,.,,
03 업무에서 필요로 하는 인스턴스에서 관리하
05 프로젝트를 전개할 때는 식별자관계와 비식
고자 하는 의미상 더 이상 분리되지 않는 최
별자관계를 선택하여 연결해야 하는 높은 수
소의 데이터 단위를 무엇이라 하는가?
준의 데이터모델링 기술이 필요하다. 다음 중
비식별자관계를 선택하는 기준으로 가장 부
幽lI죠
'
적절한 것은?
속성은 사물이나 개념이 어떤 것인지 나타내고
그것을 다른 것과 구별하는 성질이라고 할 수 있
다. 이런 사전적인 정의 외에 데이터 모델링 관
① 관계의 강약을 분석하여 상호간에 연관성
이 약할 경우 비식별자관계를 고려한다.
점에서 속성을 정의하자면, "업무에서 필요로 하
는 인스턴스에서 관리하고자 하는 의미상 더 이
② 자식테이블에서 독립적인 Primary Key
상 분리되지 않는 최소의 데이터 단위" 로 정의할
의 구조를 가지기 원할 때 비식별자관계
수 있다. 업무상 관리가 가능한 최소의 의미 단
위로 생각할 수 있고, 이것은 엔터티에서 한 분
야로 담당하고 있다.
를 고려한다.
③ 모든 관계가 식별자 관게로 연결되면 SQL
Where절에서 비교하는 항목이 증가되어
조인에 참여하는 테이블에 따라 SQL문장
이 길어져 SQL문의 복잡성이 증가되는
u4 다음 중 두 개의 엔터티 사이0ㅔ 정의한 관게
를 체크하는 사항으로 가장 부적절한 것은?
① 두 개의 엔터티 사이에 관심 있는 연관규
칙이 존재하는가?
② 두 개의 엔터티 사이에 정보의 조합이 발
한다.
(D 부모엔터티의 주식별자를 자식엔터티에
서 받아 손자엔터티까지 계속 흘려보내기
위해 비식별자관계를 고려한다.
蝦l珊
생되는가?
③ 업무기술서, 장표에 관계연결을 가능하게
하는 명사
(Noun)
가 있는가?
칙이 서술되어 있는가?
蝦짭
업무기술서, 장표에 관계연결을 가능케 하는 동
사
(Verb)
가 있는가? 가 되어야 한다= 동사는 관
계를 서술하는 업무기술서의 가장 중요한 사항
이다.
정답
L ③
56 제1과목 데이터 모델링의 이해
부모엔터티의 주식별자를 자식엔터티에서 받아
손자엔터티까지 계속 흘려보내기 위해서는 비식
별자관계가 아닌 식별자관계를 고려해야한다.
④ 업무기술서, 장표에 관계연결에 대한 규
3 속성<ATTRIBUTE)
것을 방지하지 위해 비식별자관계를 고려
5
④
2。
23 SQLD Masterb。
。k
06 아래 설명을 읽고 다음 @)에 들어갈 단어를
작성하시오.
07 다음 중 아래와 같이 수강지도 엔터티를 만들
었을 때 이에 해당하는 정 구형과 정규화의 대
상으로 가장 바르게 짝지어진 것은?
첫번째, 데이터모델링을 할 때 棚予화를 정
확하게 수행한다.
[수강지도]
두번째, 데이터베이스 용량산정을수행한다.
학번
세번째, 데이터베이스에 발생되는 트랜잭
과목코드
션의 유형을 파악한다.
성적
네번째, 용량과 트랜잭 크의 유형에 따라
학과명
30 학번 → 학과명
① 1차 出구형
2차 出子화 대상
② 2차 騙予형 - 3차 拓予화 대상
③ 3차 牛구형 - 보이스코드牛구화 대상
④ 보이스코드出 형 - 4차 정규화 대상
해설
l가〈에 대해 반복이 되는 그룹
(Repeating)
이존
재하지 않으므로 1차 정규형이라고 할 수 있으
며, 부분 함수종속의 규칙을 가지고 있어 2차 정
규형이 아님.2차 정규화의 대상이 되는 엔터티
이다.
驪尸.
(역정규화) 7 ①
6 반정규화
제1과목 연습문제 57
綸轍꺽玆鞠ㅂ
∼>
데이터 모델링 단계에서 성능을 충분히 고려하
기 위한 성능 데이터 모델링 수행 절차에 대한
설명으로, 그 과정은 다음과 같다.
첫번째, 데이터모델링을 할 때 정규화를 정확하
게 수행한다.
두번째, 데이터베이스 용량산정을 수행한다.
세번째, 데이터베이스에 발생되는 트랜잭션의
유형을 파악한다.
네번째.용량과 트랜잭션의 유형에 따라 반정규
화를 수행한다.
다섯번째, 이력모델의 조정, 댜K/FK조정, 슈퍼
타입/서브타입 조정 등을 수행한다.
여섯 번째, 성능관점에서 데이터모델을 검증한다.
1. 학번 ∥ 과목번호 → 성적
2. 학번 - 지도교수명
딕知 ∼
함수종속성
(FD)
-蜜
모 므 모 田 鯉 肥 므 ㅁ藪
슈퍼타입/서브타입 조정 등을 수행한다.
鞭螂
지도교수명
( 6) )을 수행한다.
다섯번째, 이력모델의 조정, PK/FK조정,
. 데이터,석온.::육.:epassbiz
S.
08 다음 중 아래 데이터모델에 대한 설명으로 가
0, 다음 중 아래 데이터 모델과 SQL문에 대해
장 부적절한 것은?
개선해야 할 사항에 대한 설명으로 가장 적절
① 공급자별로 최근에 변경된 전화번호, 메
한 것은?
일주소, 위치와 공급자 이름을 같이 조회
할 때 이 값들을 공급자 테이블에 반정규
[긴급사건]
긴급사건 번호
화로 갖고 있는 경우에 비해 조회 성능이
저하되지 않는다.
사건명
발생일시
② 데이터를 조회할 때 과도한 조인으로 인
해 조회성능이 저하될 수 있으므로 공급
자 테이블에 가장 빈번하게 조회되는 값
[특수사건]
인 최근 변경값에 해당하는 전화번호, 메
특수사건 번호
일주소, 위치를 반州干화하여 조회 성능
사건명
발생일시
을 향상시킬 수 있다.
③ 전화번호, 메일주소, 위치에 대한 가장 최
[일반사건]
근에 변경된 값을 알 수 있도록 최신여부
라는 속성을 추가함으로써 최근 값을 찾
기 위한 조회 성능저하를 예방할 수 있다.
④ 조회 성능을 위해서는 하나의 테이블로 통
일반사건 번호
사건명
발생일시
합하여 전화번호, 메일주소, 위치 등이 변
경될 경우 전쳬 속성이 계속 발생되는 이
력의 형태로 설계될 수 있다. 이럴 경우
조회에 대한 성능은 향상이 되나.
, 과도한
데이터가 한 테이블에 발생하게 되어 용
량이 너무 커지는 단점이 있다.
최근0ㅔ 변경된 값만 조회할 경우 과도한 조인으
로 인해 성능이 저하되어 나타난다.
정답
08 0
09 ⑦
58 제과목 데UI
모델링의 이해
SELECT 긴급사건번호, 사건명 FROM 긴
급사건 WHERE 발생일시 = '20150905'
UNION ALL
SELECT 특수사건번호, 사건명 FROM 특
수사건 WHERE 발생일시 = '20150905'
UNION ALL
SELECT 일반사건번호, 사건명 FROM 일
반사건 WHERE 발생일시 = '20150905'
UNION ALL
* 전제조건 : 위 세 테이블은 함께 조희하는 경우
가 대부분이고 아직 시스템을 오픈하지 않았다.
2。
23SOLD
Msterb。
。k
‘,
길
① UNION ALL로 조회하면 정렬로 인한
10 다음 중 데이터가 여러 지역에 분산되어 있지
성능이 저하되므로 UNION으로 조합하
만 하나의 데이터베이스처럼 사용하기를 원
여 조회한다.
하는 분산데이터베이스 환경에서 데이터베이
② 긴급사건, 특수사건, 일반사건을 하나의
테이블로 통합하고 PK를 사건분류코드 +
사건번호로 조합하여 구성하도록 한다.
(D 긴급사건, 특수사건, 일반사건 테이블을
개별로 유지하되 PK에 사건분류코드를
포함하도록 한다.
④ 세 개의 테이블을 그대로 유지하되 반정
·i臘
'
개별 테이블을 모두 조회하는 트랙젼션이 대부
‘분이라는 가정이 있으므로 비'ilON/UNlON
ALL할 경우 개별조회에 따른 시간소요와 이것
반속성에 각 사건을 구분 할 수 있도록 구분자를
부여한다.
(Near Real Time) 업무적인
② 거의 실시간
특성을 가지고 있을 때 분산 데이터베이
스를 사용하여 구성할 수 있다.
③ 백업 사이트를 구성할 때 간단하게 분잔
기능을 적용하여 구성할 수 있다.
④Global Single Instance(GSI)를 구성
할 때 분산데이터베이스를 활용하여 구성
하는 것이 효율적이다.
0 ㄹ
는 통합된 한 개의
Global Sin뎨e lnstance(GSl)
인스턴스 즉, 통합 데이터베이스 구조를 의미하므
로,분산데이터베이스와는 대치되는 개념이다
정답
l0 ④
제1과목 연습문제 59
∼嗣脛빠刪
의 테이블로 통합하도록 하고 대신 PK체계나 일
산데이터베이스에 복제분산을 적용한다.
∥
∼
驪 ㅂ
을 조합하는 성능저하가 발생된다. 따라서 하나
① 공통코드, 기본정보 등 마스터 데이터는 분
擊湘 -
성하여 조회의 성능을 향상하도록 한다.
수 없는 것은?
므므m 田 耀 肥 므 므잊
규화된 형태의 통합테이블을 하나 더 생
스 분산설계를 적용하여 효율성을 증대시킬
2023 SQLD Masterbook
SQL 기본 및 활용
SQL 기본
제1절
관계형 데이터베이스 개요
1, 관계형 데이터베이스
·1970년대 E. F. Codd 박사의 논문에서 처음 소개한 데이터베이스이다.
(Relation)
과 조인 연산을 통해서 합집합, 교집합, 차집합 등을 만들 수 있다.
· 관계
·Oracle, MS-SQL, Mysql, Sybase 등이 있다.
2. 데이터베이스와 데이터베이스 관리 시스템의 차이
· 데이터베이스는 데이터를 어떤 형태의 자료구조로 사용 하느냐에 따라 나누어 진다.
· 데이터베이스에는 계층형, 네트워크형, 관계형 데이터베이스 등이 있다.
· 계층형은 트리 자료구조에 데이터를 저장하고 관리하며, 네트워크는 오너와 멤버 형태로
데이터를 저장한다.
· 계층형은 1:N 관계를 표현하며, 네트워크 데이터베이스는 1:N, N:M 표현도 가능하다.
· 관계형은 릴레이션에 데이터를 저장하고 관리하며 집합 연산 및 관계 연산을 할 수 있다.
· 데이터베이스 관리 시스템은 계층형 네트워크, 관계형 데이터베이스 등을 관리하기 위한
소프트웨어를 의미하며 DBMS라고 한다.
3. 집합연산
· 두 개의 릴레이션의 합을 의미하는 합집합
· 특정 릴레이션에만 존재하며 다른 릴레이션에는 존재 하지 않는 것을 의미하는 차집합
· 두 릴레이션에 함께 존재하는 것을 의미하는 교집합
· 각 릴레이션에 존재하는 모든 데이터를 조합하는 곱집합
62 제2과목 SQL 기본 및 활용
。k
2。
23 SOLD Masterb。
4. 관계연산
· 릴레이션에서 특정 조건에 해당하는 행
(튜플)
만 조회하는 선택연산
· 릴레이션에서 특정 조건에 맞는 속성만 조회하는 투영연산
· 여러 릴레이션에서 공통된 속성을 통해 새로운 릴레이션을 만드는 결합연산
팀知 .
…뽀刪樞Pㅂ 놉
艇衆
· 컬럼은 어떤 데이터를 저장하기위한 필드로써 속성이라고도 한다.
⑦ㅁr느呱 泗 呻吻
· 테이블은 행과 컬럼으로 구성되며, 하나의 기본키를 가지고 있다.
驪和 -
· 관계형 데이터베이스에서 릴레이션은 곧 테이블이다.
=亞므 m隧姙P 니
驪
潔
5. 테이블과 컬럼
畛聯
하여 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거하는 나누기 연산
띰 드 且一蠟飇錟me鬪
(튜플)
만 추출
· 기준 릴레이션에서 나누는 릴레얘크이 가지는 속성과 동일한 값을 가지는 행
· 외래키는 다른 테이블의 기본키를 참조하는 컬럼이다.
6. SQL(Structured Query Language)
· 관계형 데이터베이스에서 데이터 정의, 조작, 제어를 하기 위해 사용하는 언어이다.
· sQL은 단순한 스크립트가 아니라 일반적인 개발 언어와 같이 독립된 하나의 개발 언어
이다.
. 관계형 데이터베이스에 대한 전담 접속 용도로 사용되며 독립되어 있다.
7. SQL 문장의 종류
데이터 정의어
DDL
CREATE DROP
RENAME ALTER
TRUNCATE
· 테이블이나 컬럼과 같이 데이터 구조를 정의하는데 사
용되는 명령어
· 구조를 생성, 변경, 삭제 하는 데이터 구조와 관련된 명
령어
데이터 조작어
SELECT INS티:귓T
· 데이터베이스내 데이터를 조회 및 검색하기 위한 명령
DML
DELETE UPDATE
· 데이터의 추가, 삭제, 수정 하기 위한 명령어
데이터 제어어
DCL
GRANT REVOKE
트랜잭션 제어어 COMMIT ROLLBACK
TCL
SAVEPOINT
· 데이터베이스0ㅔ 접근하고 객체들을 사용하도록 권한을
부여하거나 회수하는 명령어
· 트랜잭션 별로 제어하는 명령어
제1장 SQL 기본 63
l ,「
i
데이터분석 온라인교육전문 epassbiz
8. 트랜잭션
(Transaction)
· 트랜잭션은 데이터베이스의 작업을 처리하는 단위이다.
· 트랜잭션은 데이터베이스에서 실행되는 연산의 전부가 실행되거나 실행되지
원자성
Atomicity
않아야 한다.
· 트랜잭션이 완전히 끝나지 않았을 경우에는 실행되기 전의 상태와 같아야
한다.
일관성
Consistency
고립성
Is이ation
영속성
Durability
· 트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 한다.
· 트랜잭션 실행 후에도 일관성이 유지되어야 한다.
· 트랜잭션 실행 중에 생성하는 연산의 중간결과는 다른 트랜잭션이 접근할
수 없다.
· 부분적인 실행 결과를 다른 트랜잭션이 볼 수 없다.
· 트랜잭션이 그 실행을 성공적으로 완료하면 그 결과는 영구적 보장이 되어
야 한다.
9. SQL 실행 순서
·SQL문은 3단계를 거쳐 실행 된다.
파싱
Parsing
실행
Execution
인출
Fetch
·SQL 문법을 확인하고 구문 분석을 한다.
· 구문 분석한 SQL을 Library Cache에 저장한다.
· 옵티마이저가 생성한 실행 계획에 따라 SQL을 실행 한다.
· 데이터를 읽어 전송한다.
e4 제2고F큭 SQL 기본 및 활용
2。
。k S
23 SOLD Masterb。
제2절
SELECT
1. SELECT 문
· 테이블내 저장된 데이터를 조회하기 위해 사용
됴i一iir冒럭할컬럼명
2. SELECT 문법
[E 몌시 SQL
SELECT *
FROM user
WHERE id = 'super';
User 테이블에 있는 모든 컬럼을 출력하는데, id가 super인 행만 출력해라.
3. SELECT 컬럼 지정방법
SELECT COL1, COL2 FROM user;
4. Order by
· 오름차순 및 내림차순으로 정렬 할 수 있다.
· 정렬은 가장 나중에 한다.
· 정렬은 메모리를 많이 사용한다. 즉, SQL이 느려진다.
· 대용량 데이터를 정렬 할 때는 한번쯤 생각해보고 하자.
·Oracle에서는 SORT_AREA_SIZE를 사용하는데 이의 크기를 적절하게 관리해야 한다.
·Order by의 기본값은 오름차순이다.
제1장 SQL 기본 65
呈
더佃 ∼
모
ㅌ 蘗 D隧四媛 ㅁu
from 테이볼명
where 훌럭할 데이터 조건
沁擺
⑦ㅇㅌ 且 놋 ∼
· 특정 행 또는 특정 컬럼을 조회 할 수 있음
육전문
epassbiz
i 즐.데이터분석온라인:
· 인덱스를 사용하여 정렬과정을 회피 할 수도 있다.
SELECT * /'+ INDEX_DESC(A) *1
FR아1 user;
5. DISTINCT
·DISTINCT는 SELECT절의 컬럼 앞에 위치하며 중복을 제거한 결과를 출력한다.
· 예컨데 아래와 같은 데이터가 있고, DISTINC江 기능을 사용하여 조회 하면 다음과 같은
결과가 출력 된다.
I,
type
SELECT distinct type
FROM user;
S-type
滓type
C-type
S-type
type
A-type
stype
A-type
C-type
6. Alias
·Alias는 테이블명 또는 컬럼명의 길이가 길거나 복잡할 때, 함수를 사용 했을 때 사용한다.
SELECT type as "유형"
FROM user;
유형
S-type
4,
type
S-type
A-type
斗type
C-type
Ctype
66 제2과목 SQL 기본 및 활용
2。
23SOLD
Masterb。
。k,늴
7. Where 절
·Where 절은 SQL에서 조건을 줄 때 사용한다.
· 특정 행
(튜플)
만 출력하길 원할 때 사용한다.
· 비교 연산자, SQL 연산자
m潑
齡一∼珊致一輸一枕翌璃世灘
,와 같다
∼ 보다 작다
>
` 보다 크다
1=
<
` 가 아니다
Like '%문자%'
‘문자' 가 들어간 것
Between A and B
A와 B 사이
In (1,2,3)
1, 2, 3 인 것
Is not null
瞰계이 아닌 것
Is n얘
Null 인 것
8. DUAL 테이블
·Dual 테이블은 오라클에서 임시로 사용 할 수 있는 더미 테이블 이다.
· 간단하게 함수를 테스트 하거나, 데이터를 테스트 할 때 사용 할 수 있다.
· 모든 사용자에게 권한이 열려 있다.
SELECT 1, 2, 3
FROM dual;
제1장 SQL 기본 67
빕∼湘 .
, 가 아니다
m
ㅁ r느 呱 咫 岬 吻
Not 컬럼명 =
.=.데이터분석온라인:
육전문 epassbiz
제3절
함수
1. NULL의 정의
·Null이란 데이터의 정의가 없는 것이다.
·Null은 알 수 없는 값을 의미 한다.
·Null을 이용하여 숫자나 날짜 연산을 한다면 결과는 무조건 null 이다.
2. N얘 조희
(where 절)
에 is null 또는 is not null을 사용 한다.
·Null 값을 조회 할 때는 조건절
SELECT *
FROM user
WHERE phone is (not) null
3, 문자 함수
· 데이터베이스내 함수들 가운데 내장함수
· 내장함수에서 문자를 다루는 문자함수
· lower/upper
select country_name as 원본, Iower(country_name) as 소문자,
upper(country_name) as 대문자
from country;
68 제2과목 SQL- 기본 및 활용
禪」
。k
2。
23 SQLD Masterb。
'除ng山
select country_name as 원본, length (country_name) as 길이
from country;
.substr
select country_name as 원본, substr(country_name, 2, 2) as substr_
from country;
· instr
select continent as 원본, instr(continent, 'A') as instr_
from country;
' lpad/rpad
select continent as 원본, replace(continent, 'A', '@') as replace_
from country;
제1장 SQL 기본 69
叔鋼
' replace
쁘刪陋 모ㅂ 轎
select capital_city as 원본, trim(capitaLcity) as trim_, ltrim(capital_city) as ltrim_,
rtrim(capital_city) as rtrim_
from country;
팁却 ㅂ
·trim/ltrim/rtrim
帆
ㅁ "느呱 肥 呻 吻
select continent as 원본, lpad(continent, 10, 'A') as lpad_, rpad(continent, 10,
'A') rpad_
from country;
`굻.
데이터분석온라인:
육전문
,,,,,.‘,
4. 숫자 함수
· round
select round(112.3456, 1) ri, round(112.3456, 2) r2, round(112.3456, -1) r3
from dual;
·truncate
select mod(26, 3) ii, mod(10, 9) r2, mod(4, 2) r3
from dual;
·cell/floor
select ceil(26.3) rl, ceil(10.9) r2, floor(26.3) r3, floor(10.9) r4
from dual;
·power
select power(5, 2) as power_, power(3, 3) as power2_
from dual;
5. 날짜 함수
' sysdate, systimestamp
select sysdate, systimestamp
from dual;
' add_months, next_day, last_day
select add_months(sysdate, 6) ii, next_day(sysdate, 'O1OO1'\I r2,
last_day(sysdate) r3
from dual;
·cell/floor
select to_char(SYSDATE + 1/24/60/60 ,yyyy/mm/dd hh24:mi:ss), -- 1초 뒤
to....char(SYSDATE + 1/24/60 ,'yyyy/mm/dd hh24:mi:ss'), -- 1분 뒤 시간
to_char(SYSDATE + 1/24 ,yyyy/mm/dd hh24:mi:ss'), -- 1일 뒤 시간
from dual;
7(〕 제2고F큭 SQㄴ 기본 및 활용
。ki굻떻느7
2。23 SQLDMasterb。
제4절
group by
1. group by
(테이블)내에서 하나 혹은 여러 행을 그룹화하여 합계, 평균, max,
·group by는 집합
椧聯
盼∼毓蠶濡馳灐緇m一∼
mmn 등 집계 함수를 이용하여 계산할 수 있는 기능 이다.
·Having 절을 이용하여 group by 된 상태에서 조건을 추가 할 수 있다.
select do, avg(budget_value) as 예산평균, sum(budget_value) as 예산합계
from budget
group by do
泌叭
났In
輾0
if
New De4hI
3《x》
HR
跡mbal
Dnam. - AVG(S.1ary)
25郞
ㅐ슈
綸柚
“요
鷺T
쒜솥w[》dh홑
lT
긔ㅉ) rT
New D빼비
F號nce 425《》.00
麗볍$
… 1,
塊이꽈
r》
瀋v혐
2
夕xX
'흼L
2
.0
《
4 xx).侊
2. Having
·Having은 group by 와 같이 다니는 조건절이다.
·Where절은 group by 하기 전 조건에 해당하고, having은 group by 연산 이후 조건이다.
select do, avg(budget_value) as 예산평균, sum(budget_value) as 예산합계
from budget
group by do
Having avg(budget_vaue) > 50000
제1장 SQL 기본 71
팅佃 ㅂ
箕
I
1에3
醜
ㅁ" 닢 硼 氾 畦 吻
^『헬새
1002
2
`"
데이터분석 온라인교육전문 epassbiz
3. 집계 함수
·count
select do, count(*) as cnt
from budget
group by do
' sum/avg
select do, avg(budget-value) as 예산평균, sum(budget_value) as 예산합계
from budget
group by do;
·mmn/max
select do, min(budget_value) as mmn, max(budget_value) as max
from budget
group by do;
72 제2과목 SQL- 기본 및 활용
2。
23 SOLD Masterb。
。k
제5절
1. NVL
·NYL은 null인 값을 제거 하기 위한 일반 함수 이다.
·Null 대신 특정 숫자나 다른 값을 출력 할 수 있다.
2. NVL2
一
繃
∼
一
一
∼
一
欠
∼
禑 ∼
礖
轢 mm隅
·NVL
(값, 'null일 때 출력 값)
·NVL2는 NVL에 비해 파라미터가 하나 더 있다.
·NVL
(값, 'null이 아닐 때 출력 값’, 'null일 때 출력 戒)
틜湘 凶
凶
ㅁ r느開 鯉 뼁吻
$이ect id, name, nvl(bonus_type, '해당없음') as NVL_, nv12巾onus, '보너스 대상자',
'미 대상자' ) as NVL2_
from salary
3. decode
·Decode는 한 컬럼에 여러가지 조건을 적용 하여 출력 할 때 사용 한다.
· Decode
(값, 조건1, 결과1, 조건2, 결과2···)
select Id, name, decode(bonus_type, 'AB', '1등급', 'AC', '2등급', 'FA', '4등급' , '미
대상자') as decode_
from salary
제1장 SQL 기본 73
]藎
L.
/i鬱.데이터분석온라인:
육전문
epassbiz
4. Case when
· 여러가지 컬럼 및 조건으로 다양한 조건을 적용해야 할 때 사용 한다.
· 하나의 컬럼 값으로 비교 할 때와 여러 컬럼으로 비교 할 때와 문법을 두가지로 나눠 斗용
할 수 있다.
· 나열된 순으로 조건 비교를 한다.
select Id, name, case bonus_type when 'AB' then '1등급' when 'AC' then '2등급'
when 'FA' then '4등급' else '미 대상자' end as case_, case when bonus_type
= 'AB' ……I '1등급' when bonus_type = 'AC' then '2등급' when bonus_type =
'4등급' else '미 대상자' '
as case2_
'FA' '
from salary
74 제2과목 SQL 기본 및 활용
2023 SQLD Masterbook 參 l '
제5절
rownum, rowid, with문
1. rownum
·Oracle에서 출력 rows를 설정 하는 기능 이다.
select *
鰍蔘∼欒
from salary
where rownum < 3
慟싻
mgㅇ 忽 繃 渺鞭∼柵円硼
·Mysqi에서는 top() 기능으로 대체 하여 사용 할 수 있다.
罐姙媛ㅇ 祈
→
터却 ㅂ
…驃^硼∼祖灌… ∼
∼
z
∼
鍍皿
·Oracle에서 row가 생성 될 때 부여되는 row의 고유 Id.
醜
ㅁ "느 湘 旭 呻吻
2. rowid
一
∼
一
澔 一
select top(2) *
from salary
·Rowid로 조건을 입력 할 수도 있다.
· 데이터객쳬번호, 상대적파일번호, 블록번호, 행번호의 조합이다.
select rowid,
from salary
제1장 SQL 기본 75
'). WILl
wi4I=
l
,
`"
데이터분석온라인:육전문 epassbiz
· 일종의 임시적인 view 테이블 이다.
· 특정 sql 블록의 재사용을 위해 사용 된다.
.sQL 실행 속도에 유리하게 작용 할 수 있다.
· 여러 번 사용될수록 유리하다.
· 하나의 SQL문에서 여러 개의 with문의 사용 할 수 있다.
with sqll as (select *
from salary
where rownum < 3) ,
sq12 as (select *
from salary
where rownum < 2)
select * from sqll union all
select * from 5q12
76 제2과목 SQL 기본 및 활용
2。
23SQLD
Masterb。
。k
‘닐
郊
.
D[기.
제7절
【-
1. [기〕
· 테이블 또는 데이터베이스내 객쳬 등의 구조를 정의하는 명령.
鰕刪
테이블의 모든 데이터 삭제 및 초기화, 저장공간 반납
쁘蜘沁P汕> ∼
TRUNCATE
부佃 ㅂ
생성된 객체를 제거
山우느湘氾曄吻
DROP
팀知 -
생성된 객체의 구조를 변경
류
시-T타국
。
데이터베이스의 객체를 생성
皺ㅇ
円隧頀嶸 드잊
m
一
CREATE
。
∼
殲
酌
ㅁr
ㅁ 奪∼ '刪爻ㅃ m
· 구조를 생성하거나 변경 또는 삭제 할 때 사용하는 명령.
2. Create table
· 테이블을 생성하는 DDL문.
·Primary key, foreign key, check 등 제약조건 정의 가능.
· 컬럼 및 데이터 타입 정의.
CREATE TABLE EMPLOYEES SALARY D
(
VARCHAR2(10) NOT NULL PRIMARY KEY,
ID
EMPLOYEES_ID VARCHAR2(10) NOT NULL REFERENCES EMPLOYEES (ID),
NAME
VARCHAR2(100),
BONUS_TYPE VARCHAR2(3),
NUMBER,
SALARY
B아JUS
NUMBER,
REG_DT DATE)
제1장 SQL 기본 77
나,
,'LIOIE1一,
,,:,',
,:,:epassbiz
3. Alter
· 테이블이나 컬럼의 구조를 변경하는 명령.
· 제약조건을 추가 하거나 삭제 하는 명령.
alter table EMPLOYEES SALARY D rename column NAME to
EMPLOYEE NAME
alter table EMPLOYEES_SALARY_D modify BONUS_TYPE VARCHAR2(5) not null
alter table EMPLOYEESSALAR'LD drop primary key;
alter table EMPLOYEES SALARY D add constraint
EMPLOYEES EMPLOYEE ID FK
foreign key (ID) references EMPLOYEES (EMPLOYEE_ID);
4. Drop
· 테이블이나 특정 객쳬를 삭제하는 명령.
· 테이블내 데이터와 구조를 삭제 한다.
·Cascade constraint 옵션은 종속된 제약조건도 모두 삭제함
drop table 테이블명 (cascade constraint);
5. Truncate
· 테이블 구조는 남겨두고 내부의 데이터, 행만 삭제하는 명령어.
· 테이블이 차지하던 저장공간을 반납 한다.
truncate table 테이블명;
78 제2과목 SQL 기본 및 활용
2023
SQLD
Masterbook곁
6. 씨ew
· 뷰는 실제 데이터를 가지고 있지 않음.
·Select SQL만 가지고 있다고 생각하면 됨.
· 참조된 테이블이 변경되면 뷰의 결과도 변경 됨
create view 뷰명 as
select * from 테이블명 where…;
단점
· 삽입, 갱신, 등 연산이 제한적이다.
· 데이터 구조를 쉽게 변경 할 수 없다.
· 인덱싱 하기 어렵다.
m
○ r 느湘 泗 岬眈
부知 ㅂ
夔鑛沁蟬蠻z∼
超挑
제1장 SQL 기본 79
毓
→∼恥繡戰羈
장점
· 보안에 적합하다.
· 단순하게 불러 올 수 있다.
· 하나의 테이블로 여러 결과를 가진 뷰를 생성 할 수 있다.
;斗,
[1IOIE1:
,』,: ,,:,',
,:,: epassbiz
DML
제8절
1. DML
' 데이터베이스내 데이터를 조회 하거나 입력, 수정, 삭제 하는 명령
SELECT
데이터를 주어진 조건에 맞게 조회하는 명령어
INSERT
데이터를 입력 및 저장 하는 명령어
UPDATE
데이터를 수정 하는 명령어
DELETE
행, ROW를 삭제 하는 명령어
2. SELECT
· 테이블내 데이터를 주어진 조건에 맞게 조회 하는 명령어
SELECT D
, 다V1PLOYFEJ시AME
, ROUND(SALARY, 2) AS SALARY
FROM EMPLOYEES SALARY
WHERE DEPT CODE = '123';
^ A
玎
(phofe
01023456789
.
媤 address
조선 한軫纖
ㄴ
.
D
01123454跡
영국 런던
01023433456
충낭 공주
u
^
E
0187766645
신라 경주
0192929384
서驪툭볕시 영둥포 1
01023432123
고려
3. INSERT
· 데이터를 입력 및 저장 하는 명령어
INSERT INTO EMPLOYEE VALUES ('A06', '독도', 'AA', 1200, 70);
INSERT INTO EMPLOYEE(ID, NAME, SALARY) VALUES ('A06', '독도', 1200);
80 제2고F SQL 기본 및 활용
2。
23 SQLD Masterb。
。k
4. UPDATE
· 데이터를 수정 하는 명령어
UPDATE EMPLOYEE SET SALARY = 1150;
UPDATE EMPLOYEE SET SALARY = 1150
WHERE ID = 'A04';
WHERE BONUS_TYPE IS NOT NULL;
UPDATE EMPLOYEE SET SALARY = 1150 + 50
WHERE BONUS_TYPE IN ('AB', 'AC');
걀[토 工L
= "
NAI
우 艇 SOPIUS I 1건
=
쵭r b/1L午衍 '
므= U〔川U5 '
1 Aol
rL」
珊
^B
1008
2 Ao2
,1.I
^〔;
1300
9o
3 A03
'=직긋…
110o
…근 뺐. `
980
「,
990
30
`
A04
갇I츨:少
5 AGS
'긴 새
∼ 쵤:
? 『
FA
108
제1장 SQL 기본 이
부那 .
切ㅁ"느邯띤畔吻
UPDATE EMPLOYEE SET SALARY = 1150 + 50
`“데이터분석온라인:
육전문 epassbi
5. DELETE
· 행, ROW를 삭제 하는 명령어
DELETE FROM EMPLOYEE
DELETE FROM EMPLOYEE
WHERE ID = 'A04';
UPDATE EMPLOYEE SET SALARY = 1150 + 50
WHERE BONUS IS NULL;
UPDATE EMPLOYEE SET SALARY = 1150 + 50
WHERE BONUS_TYPE LIKE 'A%';
1 AOl
내너’,n
2 ^o2
'기 굿
3 A03
82 제2과목 SQL 기본 및 활용
제9절
2023
SQLD
Masterboo
DCL
1. DCL(Data Control Language)
· 데이터베이스내 유저에 권한을 부여 하거나 회수 하는 명령어
REVOKE
유저에게 권한을 회수하는 명령어
瓣쨔
유저에게 권한을 부여하는 명령어
瓣石轍懲紬灘업椎隅
GRANT
2. GRANT
· 유저에게 각종 오브젝트 권한을 부여할 수 있는 명령어.
艮앞
· 시스템 권한으로는 DBA, CREATE SESSION, CREATE USER, SYSDBA 등이 있다.
· 부여할 수 있는 오브젝트 권한의 종류는 다음과 같다.
ALL
특정 테이블에 대한 모든 권한
INDEX
인덱스를 생성 할 수 있는 권한
INSERT
지정된 테이블에 대한 INSERT 권한
REFERENCED
지정된 테이블을 참조하는 제약조건을 생성 할 수 있는 권한
SELECT
지정된 테이블을 SELECT 할 수 있는 권한
UPDATE
지정된 테이블을 UPDATE 할 수 있는 권한
CREATE USER MY USER IDENTIFIED BY 1234
GRANT CREATE SESSION TO MY USER
제1장 SQL 기본 83
艇恤
삭제 할 수 있는 권한
麴皓∼ㅄ 些 汕 轍
DELETE
브佃 驪
테이블을 수정 할 수 있는 권한
凶
ㅁ "느 陋 咫 쏀吻
시-TER
,
/-
`
●
● 데이터분석온라인교육전문epassbiz
3. ROLE
·ROLE은 권한과 유저사이에 존재하는 개념으로, 다양한 권한을 역할에 따라 유저에게 부
여 할 때 사용 할 수 있다.
· 특정 ROLE은 여러 권한을 보쫘 놓고, 특정 유저에게 여러 권한들을 가진 ROLE을 부여함
으로 간단하게 권한을 관리 할 수 있다.
CREATE ROLE MY ROLE
GRANT CREATE SESSION, CREATE TABLE TO MY_ ROLE
GRANT MY_ROLE TO MY_USER;
4. TCL(Transaction Control Language)
·TCL은 트랜잭션을 관리하는 명령에 이다.
· 트랜잭션은 데이터베이스의 논리적인 연산 단위 이다.
· 밀접히 관련되어 분리할 수 없는 한 개 이상의 데이터베이스 조작을 의미한다.
· 하나의 트랜잭션은 하나 이상의 SQL 문장을 가지고 있다.
· 하나의 트랜잭션은 모두 적용되거나 모두 실패하여야 한다.
원자성
Atomicity
일관성
Consistency
고립성
Is이ation
0 크논ㅅ늬
0 -ㄱ 0
Durability
트랜잭션내 모든 연산은 모두 성공 하던지, 모두 실패 하여야 한다(세
.
or
Nothing)
특정 트랜잭션이 실행되기 전0ㅔ 데이터베이스내 내용0ㅔ 오류가 없었다면, 트
랜잭션이 실행된 후에도 오류가 없어야 한다.
하나의 트랜잭션이 실행되는 동안에 다른 트랜잭션이 접근 할 수 없다.
트랜잭션이 성공적으로 수행되면 해당 트랜잭션이 갱신한 내용은 데이터베이
스에 영구적으로 저장 되어야 한다.
84 제2과목 SQL 기본 및 활용
2。
23SOLD
Masterb。
。k,건
5. TRANSACTION
粱騶G蠟
VALUES(9);
VALUES(10);
01
임門닢隨 氾岬吻
팅和 ㅂ
慨跡∼因媛ㅂ 轍
綴協
제1장 SQL 기본 85
一
∼
獗
璽欒壁 緇縱頀欒 므梁
VALUES(11);
01
0ㅇ 嫩
INSERT INTO TEST01
INSERT INTO TEST_01
SAVEPOINT SV0l
INSERT INTO TEST_01
SELECT * FROM TEST
ROLLBACK TO SV01
SELECT * FROM TEST
m
ㅇㅌ 奪 糖
SELECT * FROM TEST 01
INSERT INTO TEST_al VALUES(5);
INSERT INTO TEST_01 VALUES(8);
제1절
표준조인
I. 조인
(join) 이란
· 두개 이상의 테이블을 결합하여 데이터를 출력하는 명령어.
· 관계형 데이터베이스의 핵심적인 기능.
· PK와 FK의 값을 기반으로 join이 성립 된다.
· 조인은 여러 테이블을 하나의 테이블로 만드는 과정이다.
隅NER J이N
동일한 데이터의 값을 기준으로 실행되는 」OIN
NATURAL JOIN 양 테이블 간 동일한 컬럼명을 가지고 자동으로 매칭되는 INNER JOIN
CROSS JOIN
JOIN 하는 테이블간 조인 조건이 없을 때 실행되는 」이N
OUTER 」이시
INNER JOIN과 같은 상태에서 기준이 되는 테이블은 다른 쪽에 같은 값이 없
어도 실행되어 출력하는 」OIN
2. CROSS 」이N
· 두개의 테이블 간에 매칭되는 모든 데이터 조합을 출력한다.
· 카티션곱
(CARTESIAN PRODUCT)
과 동의어.
·JOIN 조건을 따로 정의하지 않는다.
SELECT*
FROM major, professor
SELECT *
FROM major CROSS JOIN professor
86 제2과목 SQL 기본 및 활용
2。
23 SQLD Masterb。
。k
∼
m
한다.
· 가장 보편적인 JOIN 방법이다.
ㅂ∼加 ㅁ
袒捌
→
>
제2장 SQL 활용 87
쓰刪田므ㅂ
SELECT*
FROM major m INNER JOIN professor p
ON m.major_id = p.bLmajor_id
임 r 닢開 爬 岬飇
·INNER 는 생략 가능
닙∼瑯 -
緇縫聊p 므壑
· 두개의 테이블 간에 매칭되는 모든 데이터 조합 중 특정 컬럼끼리 값이 같은 것만 출력
仍珊
切무ㅇ 量놋吻뒤∼涵鬱邢
3. INNER 」이N
나놂,
.,,ㅢ,∼,
eassbiz
4. NATURAL JOIN
· 두 테이블 간에 동일한 이름을 갖는 모든 컬럼들에 대해 자동으로 EQUI JOIN을 실행 한다.
·WHERE 절에서 JOIN 조건을 사용하거나, ON절 또는 USING절을 사용 할 수 없다.
SELECT * FROM major m NATURAL JOIN professor p
5. OUTER 」이N
·INNER JOIN 과 다르게 기준이 되는 한쪽은 매칭되는 값이 없어도 출력 된다.
· 동일한 값이 없다면 한쪽은 NULL이 출력 된다.
create table major_outer as select * from major where MAJOR_PRFS_CNT > 6
S티.
.ECT *
FROM professor p LEFT OUTER JOIN major_outer m
ON m.major_id = p.bl_major_id
SELECT *
FROM professor p , major_outer m
WHERE m.major_id = p.bl_major_id(-i-)
LEFT OUTER JOIN
88 제2과목 SQL 기본 및 활용
2。
。k
23 SQLD Masterb。
6. ON절
·0N절은 동일하지 않은 이름을 가진 컬럼끼리도 JOIN조건에 사용가능하도록 한다.
· 물론, 동일한 이름도 가능하다.
·WHERE절과 혼용하여 사용도 가능하다.
7. U듸NG절
·USING절에 두 테이블에 존재하는 공통된 컬럼명을 사용
· 데이터 유형도 동일해야 한다.
SELECT *
FROM major m INNER JOIN professor p
ON m.major_id = p.bI_major_id
8. 데이터 증가
· 조인을 잘못하면 데이터가 많아진다.
· 중복된 데이터가 있을 때 JOIN은 신중하게 해야 한다.
create table major_duple as select * from major union all select * from major
SELECT *
FROM major m INNER JOIN professor p
ON m.major_id = p.bl_major_id
제2장 SQL- 활용 89
더知 .
凶
。 " 닢 開 泗 呻吻
SELECT *
FROM major m INNER JOIN professor p
USING(major_id);
`긺데이터,
석온라인:
육一ssbiz
제2절
서브쿼리
(Sub Query)
1. 서브쿼리
(Sub Query)
란
· 하나의 SQL에 포함되어 있는 또 다른 SQL을 지칭하는 말.
· 서브쿼리는 대부분의 SQL절에서 사용이 가능하다.
- SELECT, FROM, WHERE, HAVING, ORDER BY, SET 절 등.
· 서브쿼리는 시작과 끝을 괄호로 감싸서 표현한다.
· 서브쿼리는 사용되는 위치에 따라 단일행으로 출력되거나 복수형으로 출력 될 수 있다.
단일행 서브쿼리
=, <, >, <>사용가능
다중행 서브쿼리
N, ALL, ANY, EXISTS 사용가능
CROSS 」이N
」이N 하는 테이블간 조인 조건이 없을 때 실행되는 」이N
OUTER 」이시
NNER JOIN과 같은 상태에서 기준이 되는 테이블은 다른 쪽에 같은 값이 없
어도 실행되어 출력하는 」OIN
SELECT 절
FROM 절
,^汨ERE 절
스칼라 서브쿼리
인라인뷰
중첩 서브쿼리, 서브쿼리
2. 스칼라 서브쿼리
·SELECT 절에 사용이 된다.
· 성능에 매우 불리하다.
select name
as 학생이름,
(select major∼title
from major b
where b.major_id = a.majorjd) as 학 F명
From student a;
90 제2과목 SQL 기본 및 활용
2。
23 SQLD Masterb。
。k
3. 인라인뷰
·SQL의 핵심
·FROM절에 사용되는 서브쿼리
· 동적 뷰 라고도 한다.
select a.name
as 학생이름,
b.major_title as 학과명
From student a, (select major_title, major_id
from major) b
where a.major_id = b.major_id
柵
∼
→蹶∼헨∼雙 嶼一驪
ㅌ湘 ∼
凶
ㅁ n닢 琡 肥 쏀吻
더湘 볍
撚綸D喊벼큔
鰕粉
select *
from (select major_id, count(*) cnt
from student
group by major_id)
4. EXSITS, NOT EXSITS
· 서브쿼리의 결과가 존재한다면 메인쿼리의 결과가 출력 되는 문법.
·EXSITS는 다른 방법으로 구현이 가능 하다.
·EXSITS에서는 ON절 사용이 안된다.
select *
from student s
where exists (select 1
from major_outer m
where m.major_id = s.major_id);
select *
from student s
where not exists (select 1
from major_outer m
where m.major_id = s.major_id);
제2장 SQㄴ 활용 이
`“데이터분석온라인:
육전:epassbiz
제3절
다양한 조인
(Join)
과 집합연산자
1. 비등가조인
· 조인을 할 때 꼭 등가 조인을 해야 하는 건 아니다.
· 특정 범위나 같지 않다는 조건으로도 조인을 할 수 있다.
<고객 테이쫠〉
<선· .이섬>
select c.name as 고객명
, c.point a$ 고객-point
, g.name a$ 상품명
from customer c join gift g
on c.point between g.point_s and g.point_e
2, 집합연산자
· 조인은 두개의 테이블을 하나로 만드는데, 좌우로 붙이는 개넘이다.
· 집합연산자는 ROW 단위로, 데이터를 위아래로 붙이는 개념이다.
· 두개 이상의 SELECT 결과를 하나로 만들어 준다.
·SELECT절의 켤럼수가 같아야 하고, 데이터타입의 호환이 되어야 한다.
S티-ECT *
FROM major, professor
S티-ECT *
FROM major CROSS JOIN professor
92 제2과목 SQL 기본 및 활용
佯l
。k
2。
23 SQLD Masterb。
o
ㅇ
⑦무∼∼鞭一∼미 咐楗∼빙m隅…
3. 隅N타굿 J이N
보湘 -
· 가장 보편적인 JOIN 방법이다.
尺∼鞭洩 c
ㅋ
一
一
· 두개의 테이블 간에 매칭되는 모든 데이터 조합 중 특정 컬럼끼리 값이 같은 것만 출력한다.
·INNER는 생략 가능
제2장 SQL 활용 93
팅刪 ㅂ
醜
ㅁr닢醜炤階喇
SELECT *
FROM major m INNER JOIN professor p
ON m.major_id = p,bI_major_id
성“데이터,
석온라인:
육冊epassbiz
4. NATURAL JOIN
' 두 테이블간에 동일한 이름을 갖는 모든 컬럼들에 대해 자동으로 EQUI JOIN을 실행 한다.
' WHERE 절에서 JOIN 조건을 사용하거나, ON절 또는 USING절을 사용 할 수 없다.
SELECT *
FROM major NATURAL JOIN professor
I盞 MAJOR K)
離鵝MA}QRJ1TL
鹹 MAJCF..P'JF 《FNT
r MAJeR SrUDENT CNT
r u!
5. OUTER 」이N
' INNER JOIN과 다르게 기준이 되는 한쪽은 매칭되는 값이 없어도 출력 된다.
· 동일한 값이 없다면 한쪽은 NULL이 출력 된다.
create table major_outer as select * from major where MAJOR_PRFS_CNT> 6
SELECT *
FROM professor p OUTER JOIN major_outer m
ON m,major_id = p.bl_major_id
SELECT *
FROM professor p , major_outer m
WHERE m.major_id = p.bl_major_id(+)
LEFT OUTER JOIN
94 제2과목 SQL 기본 및 활용
。k
2。
23 SQLD Masterb。
6. ON절
·0N절은 동일하지 않은 이름을 가진 컬럼 끼리도 JOIN조건에 사용 가능하도록 한다.
· 물론, 동일한 이름도 가능 하다.
·WHERE절과 혼용하여 사용도 가능 하다.
7. U듸NG절
·USING절에 두 테이블에 존재하는 공통된 컬럼명을 사용
· 데이터 유형도 동일해야 한다.
工==〕
一
刪瞬 ㅇ鱗
SELECT *
FROM major m INNER JOIN professor p
,ON m.major_id = p.bl_major_id
8. 데이터 증가
· 조인을 잘못하면 데이터가 많아 진다.
· 중복된 데이터가 있을 때 JOIN은 신중하게 해야 한다.
create table major_duple as select * from major union all select * from major
SELECT *
FROM major m INNER JOIN professor p
ON m.major_id = p.bl_major_id
제2장 SQL 활용 95
부湘 녑
m
ㅁ" 닢 湘 肥 岬 吻
S티-ECT *
FROM major m INNER JOIN professor p
USING(major_id);
``
`“데이터분석온라인:
육冊epassbiz
제4절
계층형 SQL
1. 계층형 SQL
' 한 테이블안에 계층적인 데이터 구조를 가진 테이블에서 쉽게 데이터를 출력하기 위한
SQL문법.
select 컬럼명
from 테이블
,耐'iere 조건절
start witl, 시작조건
connect by [nocycle) prior 관계 방향
order [siblings] by 정렬 조건
2. 계층형 전용 컬럼 및 함수
LEVEL
CONNECT BY ISLEAF
CONNECT BY ISCYCLE
ROOT 부터 한단계씩 내려가면서 증가하는 번호
각 전개별 최하위 리프에 1, 아니면 0
내부적인 값 오류 등으로 자식노드가 다시 내 부모노드가 되는 경우
1을 출력
SYS CONNECT BY PATH ROOT로 부터 각 ROW까지 전개된 데이터 경로를 출력
CONNECT BY ROOT
96 제2과목 SQL 기본 및 활용
각 전개한 데이터의 루트 데이터를 출력
。k
2。
23 SOLD Masterb。
3. 계층형 전용 컬럼 및 함수
· ROOT와 LEAF
· 역방향 전개
·WHERE절 사용
…
겆
燭
∼
円
∼
∼
灘
SELECT DEPT CD
, LEVEL
, LPAD(' ', (LEVEL - 1) * 2) 11 DEPT_NM
, UP D티:玗 디:)
ㅇㅇ
珊∼H 蛛
一
鎰
붓
·ORDER SIBLINGS BY
제2장 SQL 활용 97
팅知 .
醜
。 "느 開 泗 岬 吻
, CONNECT_BY_ISLEAF
-- ,CONNECT_BY_ISCYCLE
, SYS_CONNECT_BY_PATH(DEPT_NM, '-a)
, CONNECT_BY_ROOT (DEPT_NM)
FROM COMPANY DEPT
START WITH UP DEPT CD IS NULL
CONNECT BY PRIOR DEPT CD = UP DEPT CD
ORDER SIBLINGS BY DEPT_NM;
[斗,
EIOIE1, i
제5절
,
aE9I:.. 1
r
sshi7
그룹함수
1. 그룹함수
· 테이블내 데이터들을 각 컬럼 별로 그룹화 하여 그룹별 결과를 출력하는 함수.
·UNION, UNION ALL으로 대쳬 가능
ROLLUP
GROU「기NG
GROUPING SETS
CUBE
해당 컬럼의 소계 및 총계를 출력
컬럼의 소계 여부를 출력
집계 대상 컬럼에 대한 소계 출력
결합 가능한 모든 경우의 수에 대한 집계 출력
2. RO니-UP
· 계층 구조이기에 기준 컬럼수가 2개 이상일 때 순서에 따라 출력이 달라진다.
select class num
, subject
, sum(score) as sum_score
from exam result
group by rollup (class_num, subject)
3. GROUPING SETS
· 집계 대상 컬럼에 대한 소계를 구할 수 있는 그룹 함수.
· 기준 컬럼의 순서와 결과는 상관 없음.
select class num
, subject
, sum(score) as sum_score
from exam result
group by grouping set (class_num, subject)
98 제2과목 SQL 기본 및 활용
。k礫」
2。
23 SQLD Masterb。
4. CUBE
· 결합 가능한 모든 값에 대한 다차원 집계를 출력.
· 기준 컬럼의 순서와 결과는 상관 없음.
· 다른 그룹 함수들 보다 성능상 불리함
select class num
, subject
, sum(score) as sum_score
from exam result
group by cube (class_num, subject)
5. GROUPING 함수
· 이 결과를 정렬에 활용 할 수 있다.
·Having 절에 사용 가능 하다.
select class num
, subject
, sum(score) as sum_score
, grouping(class_num) class_num
, grouping(subject) subject
from exam result
group by rollup (class_num, subject)
ROLLUP
GROUPING SETS
CUBE
· 기준 컬럼이 1개 일 때 (=UBE와 같음
· 기준 걸럼 순서에 따라 결과 다름
· 기준 컬럼 순서와 결과는 무관
· 기준 컬럼이 1개 일 때 ROLLUP과 같음
기준 컬럼의 순서와 결과는 무관
제2장 SQL 활용 ?9
부佃 -
이
ㅁ r 느隨 旭 呻明
· 해당 컬럼에서 소계 여부를 확인 할 수 있는 함수
니,
LO;
E,
,…
,,,:,;,,:,:
epassbiz
제6절
윈도우 함수
1. 윈도우 함수
· 데이터를 분석하거나 통계적인 계산을 하는 함수로 주로 사용 된다.
· 함수 자체를 중첩하여 사용 할 수 없다.
· 복잡하게 구해야 하는 로직을 쉽게 처리 할 수 있게 한다.
순서, 순위
RANK, DENSE RANK, ROW NUMBER
집계, 계산
SUM. AVG. COUNT, MAX, MIN
ROWS, 위치
FIRST VALUE, LAST VALUE, LAG, LEAD
백분율, 비율
CUMEDIST, RATIO TO REPORT, PERCENT RANK, NTILE
select class num
, student_no
, score
, row_number() over (partition by class_num order by score) as
class rank
, dense_rank() over (partition by class_num order by score) as class_rank
as sum score
, sum(score) over (partition by class_num)
as avg_score
, avg(score) over (partition by class_num)
, sum(score) over (partition by class_num order by student_no) as
sum score
from exam_result
2. FIRST VALUE
· 특정 기준값에 따른 다른 컬럼의 값을 출력
10(〕 제2고F
SQL 기본 및 활용
伴」
2。
23 SQLD Masterb。
。k
3. LAG
· 특정 기준값의 순서에 따라서 이전 값이나 이후 값을 출력 할 수 있음
select class num
, student_no
, score
, first_value(student_no) over (partition by class_num order by score
desc) as high_score
, lag(score, 2) over (partition by class_num order by score) lag_
from exam result
쑈
一
一
一
珊
4. PERCENT RANK
·皿 ㅂ
盤∼硼隨∼擦ㅂ ,恣
鎧班
5. NTILE
切ㅁr느開 泗 岬 吻
· 기준 파티션 내 순서 별 백분율을 계산하여 o,-'-1 사이 값으로 출력
· 파라미터 값으로 등분하여 어느 구간에 들어가는지 출력
select class num
, student_no
,score
, percent_rank() over (partition by class_num order by score desc)
percent_rank
, ntile(3) over (partition by class_num order by score) as ntile_
from exam result
as
6. ROWS 함수
· 특정 값을 기준으로 데이터를 줄 세운 뒤 row를 기준으로 연산하여 출력
제2장 SQL 활용 1[〕1
,
`:.데이터분석온라인:
육전문 , , , , , .,,
7. RANGE 함수
· 특정 값을 기준으로 데이터를 줄 세운 뒤 값의 범위를 기준으로 연산하여 출력
select class num
, student_no
, score
, sum(score) over (order by score rows between current row and 1
following)
as rows_
, count(*) over (order by score range between 10 preceding and 10
following) as range_
from exam result
102 제2과목 SQL 기본 및 활용
SQL 최적화 기본 원리
제1절
옵티마이저와 실행계획
I. 읍티마이저
·DBMS의 핵심 엔진으로써 SQL을 실행 할 때 가장 최적의 경로를 찾아서 선택해주는 것.
2. SQL 최적화 과정
Optimization
일반적인 쿼리로 변환, 비용 계산, 실행계획 후보 선정
Row-Source Generation
Execution
실행계획을 실제 실행하는 코드로 포맷
SQL실행
3. 옵티마이저의 유형
· 규칙기반 옵티마이저는 규칙에 대한 우선순위로 실행계획을 생성한다.
· 비용기반 옵티마이저는 예상 소요시간, 자원 사용량을 계산하여 실행 계획을 수립 하는 방
식이다.
규칙기반
(Rule Based Opimizer)
비용기반 옵티마이저
우선순위
(R미e)
를 기반으로 실행계획 생성
통계 정보를 사용하여 예상 소요시간, 자원 사용량을 계산하여 실행계
(Cost based Opimizer) 획 선택
제3장 SQL 최적화 기본 원리 103
팁和 댑
SQL 문장을 이루는 개별 요소 분석
이ㅇ r 노 魄 脛 쎈 吻
SQL Parsing
epassbiz
,:
,
:,,
L斗,
IOIE1
i
4. 실행계획
.sQL을 어떤 경로로 실행 할 것 인지에 대한 계획.
· 동일한 SQL도 실행 계획에 따라 성능이 달라진다.
액세스 기법
조인 순서
조인 기법
최적화 정보
ID
SQL내 조인을 수행 할 때 참조하는 테이블의 순서
조인시 조인을 수행 하는 방법 (NESTED LOOP JOIN, SORT MERGE JOIN,
HASH JOIN)
단계별로 예상 되는 비용(성능,시간)
이〕
ERATION
PID
SELECT STATEMENT
0
1
0
2
1.
3
2
4
3
5
2
6
5
104 제2고J
테이블내 데이터를 읽는 방법 (INDEX SCAN, FULL TABLE SCAN)
SORT GROUP BY
HASH JOIN OUTER
SQL 기본 및 활용
TABLE ACCESS BY INDEX ROWID
INDEX RANGE SCAN
TABLE ACCESS BY INDEX ROWID
INDEX SKIP SCAN
2。
23SOLD
Masterb。
。k
,늴
인덱스 기본
제2절
1. 인덱스
· 데이터를 SCAN 하는 속도를 향상 시키기 위해서 사용 하는 기능.
· 하나의 테이블에 여러 개 생성 가능하다.
· 하나의 인덱스는 여러 컬럼을 포함 할 수 있다.
· 오름차순, 내림차순으로 인덱스의 정렬 순서를 설정 할 수 있다.
장점
· 검색속도 향상
· 시스템의 부하를 줄여줌
뇬
一
一
一
鍋
g
∼
∼
m
∼ 灘隧犯幢 珊一
·Unique Index에는 NULL 값이 포함 될 수 있다.
撚
一
羈
⑦
ㅇ
=
…
一 盜毓… 辦漆橘진D
· 관계형 데이터베이스에서는 B-트리 인덱스를 가장 많이 사용 한다.
· 추가 저장 공간 필요
전체 테이블을 모두 읽어 가며 조건에 맞는 데이터를 찾는 방식
Index Range Scan 특정 범위를 조회한다. 데이터가 적으면 F얘 Table Scan이 될 수 있다.
Descending
Index Full Scan
인덱스를 역순으로 읽는다. Ma×값을 찾을 때 주로 쓰인다.
인덱스 전체를 읽는다.
제3장 SQL 최적화 기본 원리 105
…
히
Index Unique Scan 하나의 값을 찾으면 Scan을 종료 한다. 등가조건
(= ) 만 가능
Index Range Scan
班跳
Full Table Scan
羈∼m媛ㅂ >
· INSERT, UPDATE, DELETE 작업시 부하 발생
더加 볍
· 생성 시간 필요
이
ㅁ n느湘 肥 岬吻
단점
`'
딩긺데이터분석온라인:
육전epassbiz
2. B-Tree 인덱스
· 루트, 브랜치, 리프 블록으로 이루어져 있다.
· 리프 블록에는 인덱스 키와 rowid가 저장되어 있다.
· 인덱스 키는 정렬되어 저장 되어 있다.
· 등가조건
(=)과 범위조건 검색에 적합하다.
· 리프 블록에는 데이터와 레코드 식별자가 있다.
106 제2고F SQㄴ 기본 및 활용
연습문제
1 다음 중 아래 내용의 범주에 해당하는 SQL
명령어로 옳지 않은 것은?
2 다음 중 아래의 데이터모델과 같은 테이블 및
「가
( 제약조건을 생성하는 DDL 문장으로 올
바른 것은?
(단, DBMS는 Oracle을 기준으
테이블의 구조를 생성, 변경, 삭제하는 등
로 한다. )
데이터 구조를 정의하는데 사용하는 명령
어이다.
PRODUCT
①CREATE
②GRANT
③ ALTER
④DROP
PROD_ID: VARCHAR2(10) NOT NULL
PROD_NM: VARCHAR2(100) NPT
NULL
幽觸
REGR_NO: NUMBER(10) NULL
디ㅌ 표기법]
PRODUCT()
# PROD ID VARCHAR2(10)
* PROD_NM VARCHAR2(100)
* REG DT DATE
0 REGR NO NUMBER(10)
[Barker 표기법]
①CREATE TABLE PRODUCT
(PROD ID VARCHAR2(10) NOT NULL
,PROD_NM VARCHAE2U00) NOT NULL
, REG_DT DATE NOT NULL
,REGRNO NUMBER(10) NULL);
ALTER
TABLE
PRODUCT
ADD
PRIMARY KEY PRODUCT PK ON
정답
1②
2 ④
제2과목 연습문제 ㅣ 07
ㅂ茄 .
酌
ㅁ " 느 凹 咫 岬吻
BEG DT: DATE NOT NULL
데이터 구조를 정의하는 명령어는 DDL
(데이터
정의어)
에 해당하며 DDL 문으로는 CREATE,
ALT타큇 DROP, RENAMㅌ 이 있다.
,
`=‘데이터:
:육?J
석온라:
epassbiz
②CREATE TABLE PRODUCT
03 아래와 같은 SQL문에 삽입이 성공하는
(PROD ID VARCHAR2(10)
SQL-문은?
,PROD_NM VARCHAR2(100)
,REGDT DATE
CREATE TABLE TBL
,REGRNO NUMBER(10) );
(
ALTER
TABLE PRODUCT
ADD
CONSTRAINT PRODUCT PK ON
PRIMARY KEY (PROD ID);
ID NUMBER PRIMARY KEY,
AMT NUMBER NOT NULL,
DEGREE VARCHAR2(1)
③CREATE TABLE PRODUCT
(PROD ID VARCHAR2(10) NOT NULL
,PROD NM VARCHAR2U00) NOT NULL
,REG_DT DATE NOT NULL
,REGRNO NUMBER(10) NULL);
,ADD CONSTRAINT PRIMARY KEY
(PROD ID) );
④CREATE TABLE PRODUCT
(PROD ID VARCHAR2(10) NOT NULL
,PROD NM VARCHAR2(100) NOT NULL
, REG_DT DATE NOT NULL
,REGRJ4O NUMBER(10)
,CONRTRAINT PRODUOF PK PRIMARY
KEY (PROD ID) );
해설
· (1〕
은 PK를 지정하는 ALTER TABLE 문장에
문법 오류가 존재하고, 올바른 문법이 사용된
문장은 다음과 같다.
(오류 발생)ALTER TABLE PRODUCT
ADD PRIMARY KEY PRODUCT PK ON
(PROD_ID);(오류 수정)ALTER TABLE
PRODUCT ADD CONSTRAINT
PRODUCT PK PRIMARY KEY
(PROD_ID);
.2〕
는 NOT NULL 컬럼에 대해서 NOT NULL
제약조건을 지정하지 않았다.
· ③은 테이블 생성할 때 PK를 지정하는 문장에
문법 오류가 존재한다.
108 제2과목 SQL 기본 및 활용
1. INSERT INTO TBL VALUES(1, 100)
2. INSERT INTO TBL(ID, Alvrr, DEGREE
VALUFS(2, 200, 'AB')
3. INSERT INTO TBL(ID, DEGREE)
VALUES(4, 'X')
4. INSERT INTO TBL(ID, AMT) VALUFS
(3, 300)
5. INSERT INTO TBL VALUFS(5, 500,
1硼【그」)
①1, 2
@)2, 3
③3, 4
④4, 5
■目;貶'
1 : 삽입 컬럼을 명시하지 않았을 경우 모든 컬럼
을 삽입해야 한다.
2 : DEGREE 컬럼의 길이는 VARCHAR2(1)
이
다. ' AB'는 컬럼 길이를 초과한다.
3: Not Null 컬럼인 AMT 컬럼 명시하지 않았다.
。ki露느,
2。23 SQLDMasterb。
4 다음 중 아래와 같은 데이터 상황에서 SQL
의 수행결과로 가장 적절한 것은?
5 아래의 테이블 스키마 정보를 참고하여, 다음
중 '구매이력이 있는 고객 중 구매 횟수가 3회
이상인 고객의 이름과 등급을 출력하시오.'라
TAB1
는 질의에 대해 아래 SQL 문장의 ( 旺)),
3
SELECT SUM(COALESCE(C1, C2, C3))
FROM TAB1
[테이블]
고객
(고객번호
(PK), 이름, 등급)
구매정보
(구매번호
(PK), 구매금액, 고객번
호
(FK))
* 구매정보테이블의 고객번호는 고객테이블의 고
객 테아블의 고객번호를 참조하는 외래7KForeign
Kwv)
이다.
②1
④14
幽F'
COALESCㅌ 함수는 첫 번째 NULL이 아닌 값
을 반환한다.
COALESCE(C1. O2. C3)
는 각 Row에서 첫
번째로 MJLL이 아닌 값인 1, 2, 3을 반환한다.
따라서.결과의 합은 6이다.
[SQL 문장]
SELECT A.이름, A.등급
FROM 고객 A
( ④)
FOUP BY A.이름, A.등급
( @) )
①(즈): INNER JOIN 구매정보 B ON A.고
객번호=B.고객번호
(E) : HAVING SUM(B.구매번호)>= 3
② C) : INNER JOIN 구매정보 B ON A.고
객번호=B. 고객번호
@) : HAVING COUNT(B.구매번호)>= 3
③ 旺): LEFT OUTER JOIN 구매정보 B
ON A. 고객번호=B.고객번호
(E) : HAVING SUM(B.구매번호)>: 3
(乙 C) : INNER JOIN 구매정보 B ON A.고
객번호=B.고객번호
@) : WHERE B. 구매번호 >= 3
■톄F'
구매이력이 있어야 하므로 隅NER JOIN이 필요
하며, 구매 횟수이므로 COUNㅜ함수를 사용한다.
軻l。
4③ 。5 a
제2과목 연습문제 109
雅細
3
빴刪田峰ㅂ 鞭
2
부卯 -
3
이
ㅁ r느開 咫 뼁呱
2
鱗湘 -
1
( (亘))에 들어갈 구문으로 가장 적절한 것은?
聊
一
닮
一
一
… ∼硼幄輕므 드았
C3
沁聊
C2
齡
ㅇ ㅌ 欠 졌 勸것兩m釀
Cl
슘i데이터분석온라인:육전문epassbiz
06 다음과 같은 2개의 릴레이션이 있다고 가정
하자. student의 기본키는 st_num이고,
department의 기본키는 dep_num이다.
또한 student의 d_num은 department
의 dept_num을 참조하는 외래키이다. 아
래 SQL문의 실행결과 건수는?
SELECT count(st name)
FROM student s
WHERE not exists
(SELECT *
FROM department d
WHERE s.d_num = d.dept_num
and dept_name = '전자계산학과?);
Student
St num
St name
d num
1001
Yoo
10
1002
Kim
30
1003
Lee
20
1004
Park
10
1005
Choi
20
1006
Jeong
10
Department
dept_num
dept_name
10
컴퓨터공학과
20
원자력공학과
30
전자계산학과
정답
6 5
110 제2고F
SQL기본 및 활용
.:쵸灌섶
'
조건에 맞는 以udent 데이터는 다음과 같다.
at num
at name
d num
1001
Yoo
10
1003
Lee
20
1004
Park
10
1005
(갸기:기
20
1006
Jeong
10
2。
。k
23 SOLD Masterb。
7 다음 중 아래 TBL1, TBL2 테이블에 대해
()
SQL을 수행한 결과인 것은?
[테이블 : TBLii
COL1
COL2
M
/니
AB
A2
(표)
[테이블 ; TBL21
COL1
COL2
하△
Al
AB
A2
AC
A3
AD
A4
④
AA
Al
2
AB
A2
2
AC
A3
1
AD
A4
1
COL1
COL2
CNT
AA
Al
3
AB
A2
3
AC
A3
1
AD
A4
1
COL1
COL2
CNT
AA
Al
3
AB
A2
3
AC
A3
2
AD
A4
2
빼題
'
어 ①과 같은 걸과가 도출된다. 만일 UNION과
비flON ALL의 순서를 바꾼다면 ②과 같은 결
UNION
SELECT COLt. COL2
FROM TBL1)
과가 도출된다.
GROUP BY COLt, COL2;
①
COL1
COL2
CNT
AA
Al
1
AB
A2
1
AC
A3
1
AD
A4
1
정답
7 D
제2과목 연습문제 111
瑤
,
먼저 수행된다. 그러므로 비읽ON이 나중에 수행
되므로 결과적으로 중복 데이터가 모두 제거되
叔鋼
집합 연산자는 SQL에서 위에 정의된 연산자가
FROM TBL2
以佃 ㅂ
CNT
∼一∼釀聊므勵
FROM TBL1
UNION ALL
SELECT COLt, COL2
COL2
酌
ㅁ" 느 靂 咫 呻 吻
[SQL]
SELECT COL1, COL2, COUNT(*) AS
CNT
FROM (SELECT COLt, COL2
COL1
:육전문
,,,,,.,,
`긺데이터:석온라:
AND X. 평가
8 아래와 같은 데이터 모델에서 평가대상상품
에 대한 품질평가항목별 최종 평가결과를 추
출하는 SQL 문장으로 옳은 것은?
(단, 평가
항목ID = C. 평가항목ID);
③ SELECT B.상품ID, B.상품명, (〕
. 평가
항목에 대한 평가
(평가등급)
가 기대수준에
항목ID, C. 평가항목명
미치지 못할 경우 해당 평가항목에 대해서만
,MAX(A. 평가회차) AS 평가
재평가를 수행한다)
회차
,MAX(A. 평가등급) AS 평가
[데이터 모델]
품질평가항목
회원번호
평가항목명
등급
평가결과
+
평가대상상품
상눼D(FK)
평가회차
평가항ID(FK)
,MAX(A. 평가일자) AS 평가
상륑D
+
일자
상품명
평가등급
평가일자
FROM 평가결과 A, 평가대상상품 B, 품
질평가항목 C
WHERE A.상품ID = B.상품ID
① SELECT B.상품ID, B.상품명,(〕
.평가
AND A. 평가항목ID = (:〕
. 평가항목ID
항목ID, C. 평가항목명, A. 평
GROUP BY B.상품ID, B.상품명, C평
가회차, A. 평가등급, A. 평가
가항목ID, C. 평가항목명;
일자
④ SELECT B.상품ID, B.상품명, (〕
. 평가
FROM 평가결과 A, 평가대상상품 B, 품
항목ID, C. 평가항목명, A.평
질평가항목 C,
가회차, A. 평가등급, A.평가
(SELECT MAX
(평가회차) AS
평가회차 FROM 평가결과)D
일자
FROM (SELECT 상품ID, 평가항목ID
WHERE A.상품ID = B.상품ID
,MAX
(평가회차)AS 평가회차
AND A.평가항목ID = (:〕
. 평가항목ID
,MAX
(평가등급)AS 평가등급
AND A. 평가회차 = D. 평가회차;
,MAX
(평가일자)AS 평가일자
② SELECT B.상품ID, B.상품명, C.평가항
FROM 평가결과
목ID, C. 평가항목명, A. 평가회
차, A. 평가등급, A.평가일자
FROM 평가결과 A, 평가대상상품 B, 품
질평가항목 (:〕
GROUP BY 상품ID, 평가항목
ID) A, 평가대상상품 B, 품질평가항목 C
WHERE A.상품ID = B.상품ID
AND A. 평가항목ID = C. 평가항목ID;
WHERE A.상품ID = B.상품ID
AND A. 평가항목ID = C. 평가항목ID
AND A. 평가회차 = (SELECT MAX(X.
평가회차)
FROM 평가결과 X
WHERE X.상품
ID = B.상품ID
1 ㅣ ,[ 제2과목 SQL 기본 및 활용
騙饉’
② 연관 서브쿼리를 활용하여 특정 상품, 평가항
목별로 최종 평가회차와 JOIN을 수행하여 원하
는 결과를 출력한다.
2023 SQLD Masterbook S
0'
아래 결과를 얻기 위한 SQL문에서 ( ⑨ )에
들어갈 함수를 작성하시오.
S
10 다음 중 추천내역 테이블에서 아래와 같은
SQL을 수행하였을 때의 결과로 가장 적절한
것은?
구매이력
구매고객
구매월 총 구매건 총 구매액
[테이블 : 월별매출]
AM
201001
1
1000
추천경로
AM
201002
2
3000
SNS
나한일
강감찬
75
AAA
201003
1
1000
SNS
이순신
강감찬
80
4
5000
이벤트응모 홍길동
강감찬
88
이벤트응모 저절로
이순신
78
AAA
추천인 피추천인 추천점수
BBB
201001
3
2000
BBB
201002
5
3000
홈페이지
저절로
이대로
93
BBB
201003
1
2000
흠페이지
홍두깨
심청이
98
9
7000
BBB
1
2000
CCC
201102
1
5000
CCC
201103
1
1000
[SQL]
SELECT 추천경로, 추천인, 피추천인, 추
천점수
FROM (SELECT 추천경로, 추천인, 피추
천인, 추천점수
,ROW NUMBER() OVER
(PARTITION BY 추천경로
ORDER BY 추천잠수 DESC)
[SQL문]
AS RNUM
SELECT 구매고객. 구매월. COUNT(*)
"총구매건”. SUM
(구매금액)"총 구매액”
FROM 구매이력
FROM 추천내역)
WHERE RNUM = 1;
GROUP BY ( 旺) )(구매고객, 구매월)
驪I尸
'
별,구매고
위 SQL의 결과는(구매고객, 구매윌)
객별 그리고 전체에 대한 구매건수와 구매금액
을 출력한 결과이다. 집계에 계층 구조가 있으므
로 나열된 컬럼에 대해 계층 구조로 집계를 출력
하는 R0LLUP을 사용하여 집계 SQL을 작성할
수 있다.
추천경로
추천인
SNS
나한일
강감찬
75
SNS
이순신
강감찬
80
흥길동
강감찬
88
저절로
이순신
78
흠페이지
저절로
이대로
93
홈페이지
흥두깨
심청이
98
이벤트
응모
이벤트
응모
피추천인 추천점수
9 R0LLUP 10 ③
제2과목 연습문제 113
틸知 ㅂ
201101
띰련 노閔 泗 碑朔
CCC
:육醍epassbiz
公길데이터:석온라:
@)
@:)
추천경로
추천인
홈페이지
홍두깨
심청이
98
추천경로
추천인
SNS
이순신
강감찬
80
흥길동
강감찬
88
홈페이지
흥두깨
심청이
추천경로
추천인
SNS
나한일
이벤트
응모
(D
피추천인 추천점수
이벤트
응모
홈페이지
피추천인 추천점수
11 아래의 ( 旺))에 들어갈 내용을 쓰시오.
DBMS 사용자를 생성하면 기본적으로 많
은 권한을 부여해야 한다. 많은 DBMS에
서는 DBMS 관리자가 사용자별로 권한을
관리해야하는 부담과 복잡항을 줄이기 위
하여 다양한 권한을 그룹으로 묶어 관리할
수 있도록 사용자와 권한 사이에서 중개역
98
피추천인 추천점수
강감찬
75
할을 수행아는 ( ④ )을 제공한다.
斷麗
'
ROLㅌ은 많은 DBMS사용자에게 개별적으로 많
은 권한을 부여하는 번거로움과 어려움을 해소
저절로
이순신
78
저절로
이대로
93
하기위해 다양한 권한올 하나의 그룹으로 묶어
놓은 논리적인 권한은 그룹이다.
■톄麗
'
(I;은 전체 데이터를 그대로 출력하였음
(2:는 전체에서 추천점수가 가장 높은 데이터 한
건만을 출력하였음
12 다음 실행계획의 실행순서에 맞게 ( 旺)),
( @) ), ( (亘) )을 작성하시오.
④는 추천경로별로 추천점수가 가장 낮은 데이
터를 각 한 건씩 출력하였다.
1 NESTED LOOPS
2 HASH JOIN
3 TABLE ACCESS (FULL) TAB1
4
TABLE ACCESS (FULL) TAB2
5 TABLE ACCESS (BY ROWID) TAB3
6
INDEX (UNIQUE SCAN) PK TAB3
( C) )-.( ⑧ )-.( @) )-'6-5- 1
■目貶'
실행계획을 읽는 순서는 위에사 아래로, 안에서
밖으로 읽는다. 그러므로 3- 4--2----6-5- 1 순으로 수행된다.
정답
11 ROLE 12 C) : 3, ⑧ :4, c) :2
114 제2과목 SQL 기본 및 활용
2。
。k
23 SOLD Masterb。
13 다음 중 Nested Loop Join에 대한 설명
으로 가장 부적절한 것은?
① 조인 칼럼에 적당한 인덱스가 있어서 자
연조인
(Natural Join)
이 효율적일 때 유
용하다.
넉∼썬硼
② Driving Table의 조인데이터 양이 큰 영
향을 주는 조인방식이다.
두 테이블이 너무 커서 소트
(Sort) 부하
가 심할 때 유용하다.
13 ③
제2과목 연습문제 ㅣ 15
錐脇
정답
…∼綱鐫田媛日∼鉢
소트머지조인
(Sort Merge Join)
하기에 두 테
이블이 너무 커서 소트
(Sort) 부하가 심할 때 는
HASH JOIN이 유용하다.
부湘 ㅂ
빼竇戚
⑦ㅁn 느 湘 咫 쏀 吻
는 경우 유용하다.
橓∼爀 …
크 인덱스를 활용하여 수행시간이 적
게 걸리는 소링= 테이블을 온라인 조회하
饌饌臘 ∼珊璲쨘껀∼… 一∼투
Ce
襤轎
赫
統 渺漆∥ ㅌ
欄
…
③ 소트머지조인
(Sort Merge Join)
하기에
2023 SQLD Masterbook
최종모의고사
蹶飜囊貶콱의,
‘∼穿난珊흰瑙쮸「
부록
제1희 최종모의고사
데이터 모델링의 이해
과목 l
fl3 다음 중 다른 엔터티로부터 주식별자를 상속
받지 않고 자신의 고유한 주식별자를 가지며
n1 다음 중 데이터모델링을 할 때 유의해야할 사
사원, 부서, 고객, 상품, 자재 등이 예가 될
항으로 가장 부적절한 것은?
수 있는 엔터티로 가장 적절한 것은?
① 여러장소의 데이터베이스에 같은 정보를
① 기본 엔터티
(키엔터티)
저장하지 않도록 하여 중복성을 최소화
② 중심 엔터티
(메인엔터티)
한다.
③ 행위 엔터티
② 데이터의 정의를 데이터의 사용 프로세스
④ 개넘 엔터티
와 분리하여 유연성을 높인다.
③ 사용자가 처리하는 프로세스나 장표 등에
04 다음 중 데이터모델링을 할 때 속성의 명칭을
따라 매핑이 될 수 있도록 프로그램과 테
부여하는 방법으로 가장 부적절한 것은?
이블간의 연계성을 높인다.
① 속성의 이름에 약어를 사용할 경우 그 의
(D 데이터간의 상호연관관계를 명확하게 정
의하여 일관성있게 데이터가 유지되도록
한다.
미를 명확하게 이해할 수 없고 혼돈을 초
래하여 커뮤니케이션의 혼란을 야기할 수
있으므로 지나친 약어 사훙은 가급적 제
한하도록 한다.
02 다음 중 고객과 주문의 ㅌRD에 대한 설명으
로 가장 부적절한 것은?
② 속성의 이름에는 서술식 용어는 사용하지
않도록 한다.
③ 직원 엔터티의 이름, 고객 엔터티의 이름
고객
고객번호
《타
(》
고객번호
하용하여 데이터모델의 일관성을 가져가
주문수량
는 것이 좋다.
《괘〔
고객이름
과 같이 각 엔터티별로 동일한 속성명을
제품번호
④ 데이터모델링 대상에서 사용하는 용어도
① 한 명의 고객은 여러 개의 제품을 주문할
있고 외부에서 사용하는 용어도 있어서 중
수 있다. 주문은 할 수도 있고 안 할 수도
복이 있을 때, 가급적 해당업무에서 자주
있다.
사용하는 이름을 이용하도록 한다.
② 하나의 주문은 반드시 한 명의 고객에 의
해 주문된다.
③ 주문에 데이터를 입력할 때는 반드시 고
객데이터가 존재해야 한다.
④ 고객에 데이터를 입력할 때는 주문데이터
가 존재하는 고객만을 입력할 수 있다.
118 부록
'
2。23 SQLDMasterb。
。ki딨
05 다음 중 두 개의 엔터티 사이에서 관계를 도
출 할 때 체크 할 사항을 모두 고른 것은?
7 아래와 같은 보관금원장 엔터티에서 관서에
대한 정보가 넌셔구정화 되어 있기 때문에 관서
정보를 조회할 때 성능저하가 발생하고 있다.
가. 두 개의 엔터티 사이에 관심있는 연관
규칙이 존재하는가?
나. 두 개의 엔터티 사이에 정보의 조합이
발생되는가?
다. 업무기술서, 장표에 관계연결에 대한
규칙이 서술되어 있는가?
이 엔터티에 대해 몇 차 정규화가 필요한 지
와 분리된 스키마 구조를 가장 바르게 짝지은
것은?
[보관금원장〕
② 부모엔터티의 인스턴스가 자식엔터티와
같이 소멸되는 경우
③ 여러 개의 엔터티를 하나로 통합하면서
각각의 엔터티가 갖고 있던 여러 개의 개
별 관계가 통합되는 경우
④ 자식쪽 엔터티의 주식별자를 부모엔터티
와는 별도로 생성하는 것이 더 유리하다
고 판단하는 경우
細刪
티의 인스턴스가 생성될 수 있는 경우
쁘腦円峰ㅂ 쑈
④ 가, 나 ,다, 라
① 부모엔터티에 참조값이 없어도 자식엔터
翰螂 隅
③ 가, 나, 다
해야 하는 경우로 가장 부적절한 것은?
潾∼쁜쟎柵 權 뼁飇
관서명
상태
관서등록일자
직급명
통신번호
② 가, 다, 라
6 다음 중 비식별자 관계로 연결하는 것을 고려
관리점번호
樺飜 -
① 가, 나, 라
黨驛秘艀頀媛 으잊
게 하는 동사
(Verb)
가 있는가?
관서번호
납부자번호
褐e灘
라. 업무기술서, 장표에 관계연결을 가능하
함수종속성
(FD) :
l관서번호, 납부번회 → I직급명, 통신번회
l관서번회 → 煌}
리점번호, 관서명, 상태,
관서등록일재
① 2차 정규화-정규화테이읽 관서번호, 납
부자번호, 관리점번호, 관서명, 상태, 관서
등록일자 ② 3차 정규화-정규화테이읽 관서번호, 브.
부자번호, 관리점번호, 관서명, 상태, 관서
등록일자ㅣ
③ 2차 蔘구화- 蔘予화테이블 I 관서번호, 관
리점번호, 관서명, 상태, 관서등록일자ㅣ
④ 3차 蔘予화- 蔘구화테이블 I 관서번호, 관
리점번호, 관서명, 상태, 관서등록일자 -
최종모의고사 119
/,\.
●
* 데이터분석온라인교육전문epassbiz
08 다음 중 데이터 모델에 대한 반정규화를 고려
④ 로우쳬이닝이 발생할 정도로 한 테이블에
할[대 판단요소에 대한 설명으로 가장 적절한
많이 칼럼들이 존재할 경우 조회성능저하
것은?
① 반정규화 정보에 대한 재현의 적시성으로 판
단한다. 예를 들어, 빌링의 잔액
(balance)
가 발생할 수 있다. 그러나 이를 분리할 경
우 조인으로 인한 성능 저하가 더 심하게
나타날 수 있ㅇㅁ로 감수하는 것이 좋다.
은 다수 테이블에 대한 다량의 조인이 불가
피하므로 데이터 제공의 적시성 확보를 위한
필수 반牛구화 대상 정보이다.
② 탐색 대상 데이터의 크기로 판단한다. 왜
냐하면 다량 데이터에 대한 인덱스를 활
용한 탐색은 Random처리의 특성으로
성능 저하가 불가피하다.
10 다음 중 아래와 같은 '현금출급기실적" 테이블
과 이 테이블에서 데이터를 조회할 때 사용되
는 아래의 SQL패턴에 대한 설명으로 가장
적철한 것은?
현금출급기실적
거래일자
사무소코ㄷ
③RDBMS는 현재 레코드 기준으로 이전 또
는 이후 위치의 레코드에 대한 접근이 원
출급기번호
명세표번호
천적으로 불가능하므로 반정규화를 하지
않으면 해당 정보에 대한 데이터 접근 자
건수
금액
쳬가 불가능하다.
④ 반牛구화 테이블은 집계 테이블에 국한하
여 적용하도록 한다.
0'
다음 중 칼럼수가 많은 테이블에 대한 설명으
로 가장 적절한 것은?
① 한 테이블에 많은 칼럼을 가지고 있으면
SELECT 건수, 금액
FROM 현금출급기실적
WHERE 거래일자 BETWEEN '20140701'
AND '20140702'
AND 사무소코드 = '000368'
조인이 발생되지 않아 여러개 테이블일
때에 비해 성능이 항상 우수하다고 할 수
(단, PK인덱스는 설계된 순서 그대로 생성함
있다.
② 로우체이닝이 발생할 정도로 한 테이블에
① 사무소코드가 ' ='로 상수값이 들어 왔고,
많은 칼럼들이 존재할 경우 조회성능저하
거래일자가 범위 'BETWEEN'으로 들어
가 발생할 수 있다. 한 테이볼내에서 칼럼
왔기 때문에 거래일자 + 사무소코드 + 출
의 위치를 조정하면 디스크 I/O가 줄어들
급기번호 + 명세표번호로 구성된 PR인덱
어 조회 성능을 향상 시킬 수 있다.
스는 최적의 효율성을 가지고 있음.
③ 로우쳬이닝이 발생할 정도로 한 테이블에
② 사무소코드가 ' ='로 상수값이 들어 왔고,
많이 칼럼들이 존개할 경우 조회성능저하
거래일자가 범위 'BETWEEN'으로 들어
가 발생할 수 있다. 트랜잭션이 접근하는
왔기 때문에 PR의 순서를 사무소코드 +
칼럼유형을 분석하여 1:1로 테이블을 분
출급기번호 + 명세표번호 + 거래일자로
리하면 디스크 I/O가 줄어들어 조회 성능
바꾸고 인덱스를 생성하는 것이 성능에
을 향상 시킬 수 있다.
유리함.
ㅣ20 부록
2023 SQLD Masterbook S
③ 사무소코드가 '='로 상수값이 들어 왔고,
●
과목 H , SQL 기본 및 활용
거래일자가 범위 'BETWEEN'으로 들어
왔기 때문에 PK의 순서를 거래일자 + 출
급기번호 + 명세표번호 + 사무소코드로
_1 아래 내용에 해당하는 SQL 명령어의 종류를
작성하시오
바꾸고 인덱스를 생성하는 것이 성능에
유리함.
④ 사무소코드가 '='로 상수값이 들어 왔고,
거래일자가 범위 'BETWEEN'으로 들어
왔기 때문에 PK의 순서를 사무소코드 +
거래일자 + 출급기번호 + 명세표번호로
바꾸고 인덱스를 생성하는 것이 성능에
논리적인 작업의 단위를 묶어 DML에 의해
조작된 결과를 작업단위
(Transaction)
별
로 제어하는 명령어인 Commit, Rollback,
Savepoint 등이 여기에 해당하며, 일부에
서는 DCL(Data Control Language)
로
분류하기도 한다.
유리함.
2 다음 중 NULL의 설명으로 가장 부적절한
것은?
① 모르는 값을 의미한다.
② 값의 부재를 의미한다.
③ 공백문자
(Empty String) 혹은 숫자 C을
의미한다.
④NULL과의 모든 비교
(IS NULL 제외)
는
이때 아직 부서가 정의되지 않은 사원은 기본
부서
(코드 " 'oooo.)로 배치하고,
입사일자
(J이N_DATE) 기준으로 많은 조회가 발생하
므로 입사일자에 山dex룰 생성하려고 한다.
다음 중 올바른 SQL 문장을 2개 고르시오.
EMP
EMPNO: VARCHAR2(10) NOT NULL
EMPNM: VARCHAR2(30) NOT NULL
DEPT CODE: VARCHAR2(4) NOT NULL
JOIN-DATE: DATE NOT NULL
REGIST DATA: DATE NULL
최종모의고사 1;시
細捌
아래와 같인 테이블 구조를 정의하려고 한다.
쁘吻m些ㅂ 쑈
알수없음
(Unknown)
을 반환한다.
纛‘데이터분석온라인:
육전문epassbiz
①CREATE TABLE EMP
REGIST DATE DATE NULL);
(EMP NO VARCHAR2(10) PRIMARY
ALTER TART F EMP ADD CONSTRAINT
KEY,
EMP PK PRIMARY KEY
EMPNM VARCHAR2(30) NOT NULL,
(EMP NO);
DEPT CODE VARCHAR2(4) DEFAULT
CREATE INDEX IDX EMP 01 ON
'0000' NOT NULL,
EMP (JOIN DATE):
JOIN_DATE DATE NOT NULL,
REGIST DATE DATE NULL);
4 다음 중 데이터베이스 테이블의 제약조건
CREATE INDEX IDX EMP 01 ON
(Constraint)Oㅔ 대한 설명으로 가장 부적
EMP (JOIN DATE);
절한 것은?
②CREATE TABLE EMP
(EMP NO VARCHAR2(10) PRIMARY
KEY,
EMPNM VARCHAR2(30) NOT NULL,
DEPT CODE VARCHAR2(4) DEFAULT
'。
000'
JOIN_DATE DATE NOT NULL,
REGIST DATE DATE);
CREATE INDEX IDX EMP 01 ON
EMP (JOIN DATE);
③CREATE TABLE EMP
(EMPNO VARCHAR2(10) NOT NULL,
EMPNM VARCHAR2(30) NOT NULL,
DEFT CODE VARCHAR2(4) DEFAULT
'0000' NOT NULL,
JOIN_DATE DATE NOT NULL,
REGIST_DATE DATE);
ALTER TART F ElviP ADD CONbThAINT
EMP PK PRIMARY KEY
(EMP NO);
CREATE INDEX IDX EMP 01 ON
EMP (JOIN DATE);
④CREATE TABLE EMP
(EMP NO VARCHAR2(10) NOT NULL
PRIMARY KEY,
EMPNM VARCHAR2(30) NOT NULL,
DEFT CODE VARCHAR2(4) DEFAULT
'0000' NOT NULL,
JOIN_DATE DATE NOT NULL,
122 부록
① Check 제약조건
(Constraint)
은 데이터
베이스에서 데이터의 무결성을 유지하기
(Column)
에
위하여 테이블의 특정 컬럼
설정하는 제약이다.
② 기본키
(Primary Key)
는 반드시 테이블
당 하나의 제약만을 정의할 수 있다.
로 지정된 모든 컬
③ 고유키
(Unique Key)
럼들은 Null값을 가질 수 없다.
(Foreign Key)
는 테이블간의 관
④ 외래키
계를 정의하기 위해 기본키
(Primary
Key)
를 다른 테이블의 외래키가 참조하
도록 생성한다.
2。
23SOLD
Masterb。
。k
r,
길
5 4개의 칼럼으로 이루어진 EMP 테이블에서
①INSERT INTO BOARD VALUES (1,
COMM 칼럼을 삭제하고자 할때, 아래 SQL
'Q&A', 'Y', SYSDATE, 'Q&A 게시판‘);
문장의 ( 旺)), ( ⑧ ) 안에 들어갈 내용을
②INSERT INTO BOARD (BOARD ID,
BOARD_NM, USE_YN, BOARD_DESC)
기술하시오.
VALUES ('100', 'FAQ', 'Y', 'FAQ 게시
판');
3000
7698
JAMES
950
7698
ALLEN
1600
7698
WARD
1250
7698
TURNER
1500
7698
MARTIN
1250
7782
MILLER
1300
된 연산들은 모두 성공적으로 실행되던지
7788
ADAMS
1100
아니면 전혀 실행되지 않은 상태로 남아
7839
BLAKE
2850
있어야 한다.
7839
JONES
2980
② 일관성
(consistency) : 트랜잭션이 성공
7839
CLARK
2450
적으로 수행되면 그 트랜잭션이 갱신한
7902
SMITH
800
데이터베이스의 내용은 영구적으로 저장
KING
5000
( 啄) ) TABLE EMP
((旬) COMM;
WHERE BOARD ID = '1';
④UPDATE BOARD SET BOARD ID =
200 WHERE BOARD ID = '100';
07 데이터베이스 트랜잭션에 대한 설명으로 가
장 부적절한 것을 2개 고르시오.
① 원자성
(atomicity) : 트랜잭션에서 정의
된다.
③ 고립성
(isolation) : 트랜잭션이 실행되는
도중에 다른 트랜잭션의 영향을 받아 잘
못된 결과를 만들어서는 안된다.
④ 지속성
(durability) : 트랜잭션이 실행되
心6 아래와 같은 데이터 모델에서 데이터를 조작
하려고 한다. 다음 중 오류가 발생하는 SQL
문장인 것은?
기 전의 데이터베이스 내용이 잘못되어있
지 않다면 트랜잭션이 실행된 이후에도
데이터베이스의 내용에 잘못이 있으면 안
된다.
BOARD
BOARD ID: VARCHAR2(10) NOT NULL
BOARD-NM: VARCHAR2(50) NOT NULL
USEYN: VARCHAR2(1) NOT NULL
REG DATE: DATE NOT NULL
BOARD_DESC: VARCHAR2(100) NULL
최종모외고사 123
粧捌
SCOTT
쁘略 田 峰 ㅂ 軟
7566
③UPDATE BOARD SET USE YN = 'N'
楡湘 ㅂ
3000
瓣 삔 노 欌 罐 ⑩欄
FORD
∼獅灘 ∼
7566
COMM
饌
∼
ㅇ∼
發 慟 砲 頀 欒 므있
SAL
m羈
ENAME
騙∼∼∼繰% 競 綸 渺 殲 鬧 哨 擲
MGR
,
육전문 epassbiz
/“데이터분석온라인:
8 아래의 상품 테이블의 데이터에 대하여 관리
10 아래와 같이 월별매출 테이블에 데이터가 입
자가 아래와 같이 SQL문장을 실행하여 데이
력되어있다. 다음 중 2014년 11월부터 2015
터를 변경하였다. 데이터변경 후의 상퓜D
년 3월까지의 매출금액 합계를 출력하는
'001'의 최종상품명을 작성하시오.
SQL 문장으로 옳은 것은?
〔테이블 : 상품〕
[테이블 : 월별매출]
상퓜D
상품명
년0'K)
(PK)
월
매출금액
001
TV
2014
01
1000
2014
02
2000
2014
03
3000
2014
11
4000
2014
12
5000
WHERE 상품명 = '001';
2015
01
6000
SAVE TRANSACTION SF2;
2015
20
7000
UPDATE 상품 SET 상품명 = '평면-TV
2015
03
8000
2015
11
9000
2015
12
10000
[SQL]
BEGIN TRANSATION;
SAVE TRANSACTION SP1;
UPDATE 상품 SET 상품명 = 'LCD-TV'
WHERE 상품 ID = '001';
ROLLBACK TRANSACTION SP2;
COMMIT;
① SELECT SUM
(매출금액)AS 매출금액
'
다음 중 SQL의 실행결과로 가장 적절한 것은?
합계
FROM 월별매출
WHERE 년 BETWEEN '2014' AND
EMP TBL
EMPNO
100
SAL
1500
200
3000
300
2000
'2015'
AND 월 BETWEEN '03' AND '12';
② SELECT SUM
(매출금액)AS 매출금액
합계
FROM 월별매출
WHERE 년 IN ('2014'. '2015')
[SQL]
SELECT COUNT(*)
FROM EMP TBL
WHERE EMPNO> 100 AND SAL >=
3000 OR EMPNO = 200;
AND 월 IN ('11', '12', '03', '04', '05');
③ SELECT SUM
(매출금액)AS 매출금액
합계
FROM 월별매출
WHERE (년 = '2014' OR 년 = '2015')
① 0
(D 1
@:) 2
④ 3
124 부록
AND (월 BETWEEN '01' AND '03'
OR 월 BETWEEN '11' AND '12');
2。
。k
23 SQLD Masterb。
④ SELECT SUM
(매출금액)AS 매출금액
= 'DF' THEN 1 END), 0) DF,
합계
ISNTJLL(SUM(CASE WHEN POSITION
FROM 월별매출
= 'GK' THEN 1 END), 0) GI'익
WHERE 년 = '2014' AND 월 BETWEEN
COUNT(*) SUM
'11' AND '12'
FROM PLAYER
AND 년 = '2015' AND 월 BETWEEN
GROUP BY TEAM ID
'01' AND '03';
②SELECT TEAM_ID,
NVL(SUM(CASE POSITION WHEN
은 것을 모두 묶은 것은?
'FW' THEN 1 END), 0) FW,
NVL(SUM(CASE POSITION WHEN
NVL(SUM(CASE POSITION WHEN
'GK' THEN 1 END). 0) GK.
COUNT(*) SUM
③SELECT TEAM_ID,
NVL(SUM(CASE WHEN POSITION
NVL(SUM(CASE WHEN POSITION
'DF' THEN 1 END), 0) DF,
④ 가, 나, 다, 라
NVL(SUM(CASE WHEN POSITION
'GK' THEN 1 END), 0) GK,
12 팀별 포지션별 FW, MF, DF, 아〈 포지션의
COUNT(*) SUM
인원수와 팀별 전체 인원수를 구하는 SQL을
FROM PLAYER
Server 환경이고 보기 2, 3, 4는 ORACLE
환경이다,
①SELECT TEAM_ID,
ISNULL(SUM(CASE WHEN POSITION
= 'FW' THEN 1 END), 0) FW,
ISN1JLL(SUM(CASE WHEN POSITION
= 'MF' THEN 1 END), 0) MF,
ISNL1LL(SUM(CASE WHEN POSITION
GROUP BY TEAM ID;
④SELECT TEAM_ID,
NVL(SUM(CASE POSITION WHEN
'FW' THEN 1 ELSE 1 END), 0) FW,
NVL(SUM(CASE POSITION WHEN
'MF' THEN 1 ELSE 1 END), 0) MF,
NVL(SUM(CASE POSITION WHEN
'DF' THEN 1 ELSE 1 END), 0) DF,
NVL(SUM(CASE POSITION WHEN
'GK' THEN 1 ELSE 1 END). 0) GK.
최종모의고사 125
細捌
'MF' THEN 1 END), 0) MF,
쁘刪田峰ㅂ >
'FW' THEN 1 END), 0) FW,
③ 가, 나, 다
(보기 1은 SQL
작성할 때 결과가 다른 것은?
∼一… 쁘 紛∼咫
一
m
GROUP BY TEAM ID
驪澔 ∼
FROM PLAYER
NVL(SUM(CASE WHEN POSITION
①가
② 가, 나
縱縱蹙 ㅁ巫
'DF' THEN 1 END), 0) DF,
…
一
一
一
淞 ∼
NVL(SUM(CASE POSITION WHEN
艇오灘
'MF' THEN 1 END), 0) MF,
가)함수의 입력 행수에 따라 단일행 함수
와 다중행 함수로 구분할 수 있다.
나)단일행 함수는 SELECT, WHERE,
ORDER BY, UPDATE의 SET절에
사용이 가능하다.
다)1:M 관계의 두 테이블을 조인할 경우
M쪽에 다중행이 출력되므로 단일행 함
수는 사용할 수 없다.
라)단일행 함수는 다중행 함수와 다르게
여러개의 인수가 입력되어도 단일값만
을 반환한다.
忖
11 아래와 같은 내장함수에 대한 설명 중에서 옳
纛
`
`“데이터분석온라인:
육전문 epassbiz
④ SELECT 지역, SUM
(매출금액)AS 매
COUNT(*) SUM
FROM PLAYER
출금액
GROUP BY TEAM ID;
FROM 지역별매출
GROUP BY 지역
13 다음 중 아래 각각 3개의 SQL 수행결과로
HAVING SUM
(매출금액)> 1000
ORDER BY COUNT(*) ASC;
가장 적절한 것은?
SELECT AVG(COL3) FROM TAB A;
SELECT AVG(COL3) FROM TAB 1
WHERE COL1> 0;
SELECT AVG(COL3) FROM TAB_A
WHERE COL1 IS NOT NULL;
15 다음 중 5개의 테이블로부터 필요한 칼럼을
조회하려고 할때, 최소 몇개의 J이N 조건이
필요한가?
① 2개
③ 4개
② 3개
④ 5개
ITAB 시
COL1
COL2
COL3
30
NULL
20
N내그
40
(:)
0
10
NULL
16 다음 SQL의 실행결과로 맞는 것은?
[EMI긴TBL]
EMPNO
ENAME
1000
SMITH
①20, 20, 20
1050
ALLEN
(D20, 10, 10
1100
SCOTT
③10, 20, 20
④10, 10, 10
[RULE TBL]
14 다음 SQL 중 오류가 발생하는 것은?
① SELECT 지역, SUM
(매출금액)AS 매출
RULE NO
RULE
1
5%
2
%T%
금액
FROM 지역별매출
GROUP BY 지역
ORDER BY 매출금액 DESC;
② SELECT 지역, 매출금액
[SQL]
SELECT COUNT(*) CNT
FROM EMP_TBL A, RULE_TBL B
WHERE A.ENAME LIJE B.RULE
FROM 지역별매출
ORDER BY 매출금액 DESC;
③ SELECT 지역, SUM
(매출금액)AS 매
출금액
FROM 지역별매출
GROUP BY 지역
ORDER BY 년 DESC;
126 부록
①0
(珍 4
@:)2
@6
2。
23SQLD
Masterb。
。k,늴
17 아래는 어느 회사의 정산 데이터 모델의 일부
GROUP BY A.고객ID, A.고객명
이며 고객이 서비스를 사용한 시간대에 따라
ORDER BY A.고객ID, A.고객명;
차등 단가를 적용하려고 한다. 다음 중 시간대
④ SELECT A.고객ID, A. 고객명, SUM(B.
별 사용량 테이블을 기반으로 고객별 사용금
사용량 * C.단가)AS 사용금액
액을 추출하는 SQL으로 가장 적절한 것은?
FROM 고객 A INNER JOIN 시간대별
사용량 B
ON (A.고객ID = B.고객ID) BETWEEN
JOIN 시작시간대 C
GROUP BY A.고객ID, A. 고객명
ORDER BY A.고객ID, A.고객명;
① SELECT A.고객ID, A.고객명, SUM(B.
사용량 * C.단가)AS 사용금액
18 신규 부서의 경우 일시적으로 사원이 없는 경
FROM 고객 A INNER JOIN 시간대별
우도 있다고 가정하고 DEPT와 EMP를 조
사용량 B
인하되 사원이 없는 부서정보도 같이 출력하
ON (A.고객ID = B.고객ID) INNER
도록 할 때, 아래 SQL, 문장의 ( 旺)) 안에 들
JOIN 시간대구간(〕
어갈 내용을 기술하시오.
ON (B.사용시간대 <= C.시작시간대
AND B.사용시간대 >= C.종료시간대)
GROUP BY A.고객ID, A. 고객명
사용량 * C.단가)AS 사용금액
FROM 고객 A INNER JOIN 시간대별
사용량 B INNER JOIN 시간대구간 C
ON (A.고객ID = B.고객ID AND B.사
용시간대
BETWEEN(〕
.시작시간대 AND C.
종료시간대)
GROUP BY A.고객ID. A. 고객명
19 SET OP타굿ATOR 중에서 수학의 교집합과
같은 기능을 하는 연산자로 가장 적절한 것은?
①UNION
②INTERSECT
③MINUS
④ EXCEPT
ORDER BY A.고객ID, A.고객명;
③ SELECT A.고객ID, A.고객명, SUM(B.
사용량 * C.단가)AS 사용금액
FROM 고객 A INNER JOIN 시간대별
사용량 B
ON (A.고객ID = B.고객ID) INNER
JOIN 시간대구간 C
ON B.사용시간대 BETWEEN C.시작시
간대 AND C.종료시간대
최종모의고사 127
艇糖
(D SELECT A.고객ID, A.고객명, SUM(B.
珽〕
쁘喇 田므ㅂ 놀
ORDER BY A.고객ID, A. 고객명;
彼,
SELECT E.ENAME, D.DEPTNO,
D.DNAME
FROM DEPT D ( (④ ) EMP E
ON D.DEPTNO = E.DEPTNO;
`,
`轟데이터분석온라인:
육전:
,,,,,.‘,
20 다음 중 아래에서 테이블 ㅜ1, T2에 대한 가,
21 아래[부서]
와[매출]테이블에 대해서 SQL
나 두개의 쿼리결과 조회되는 행의 수로 가장
문장을 실행하여 아래[결과]
와 같이 데이터
적절한 것은?
가 추출되었다. 다음 중 동일한 결과를 추출
하는 SQL 문장은?
Tl(A,B. C)
A3
B2
C3
Al
Bl
Cl
A2
Bi
C2
〔테이블 : 부서]
부서코드「「)
T2(A.B.C)
AIO1OibJAl
i-
(PK)
100
아시아부
ㅃLL
110
한국지사
100
111
서울지점
110
A
B
C
112
부산지점
110
Al
01
Cl
120
일본지사
100
A3
B2
C3
121
도쿄지점
120
122
오사카지점
120
130
중국지사
100
131
베이징지점
130
132
상하이지점
130
200
남유럽지부
NULL
210
스페인지사
200
211
마드리드지점
210
212
그라나다지점
210
220
포르투갈지사
200
221
리스본지점
220
222
포르투지점
220
7j-. SELECT A. B. C FROM Ri
UNION ALL
SELECT A. B. C FROM R2
나. SELECT A, B, C FROM Ri
UNION
SELECT A. B. C FROM R2
① 가 : 5개, 나 : 3개
② 가 : 5개, 나 : 5개
③ 가 : 3개, 나 : 3개
④ 가 : 3개, 나 : 5개
ㅣ28 부록
부서명
I
C
I-
B
(
A
2。
23SQLD
Masterb。
。k
‘길
JOIN 매출 B
[테이블 : 매출〕
ON (A.부서코드 = B.부서코드)
(PK)
부서코드
매출액
111
1000
112
2000
위부서코드, B.매출액, LVL
121
1500
FROM (SELECT 부서코드, 부서명, 상
122
1000
위부서코드, LEVEL AS LVL
131
1500
132
2000
211
2000
212
1500
221
1000
ON (A. 부서코드 = B.부서코드)
222
2000
ORDER BY A.부서코드;
ORDER BY A.부서코드;
② SELECT A.부서코드, A.부서명, A.상
FROM 부서
START WITH 부서코드 = '100'
CONNECT BY PRIOR 상위부
서코드 = PRIOR 부서코드)A
LEFT OUTER JOIN 매출 B
∼
∼
= 只았
(D SELECT A.부서코드, A.부서명, A.상
120 일본지사
100
NULL
1
121
120
1500
2
122 오사카지점 120
1000
2
도쿄지점
FROM 부서
START WITH 부서코드 = '121'
CONNECT BY PRIOR 상위부
셔ㅋ ㄷ
== 트·서ㅋ 1=,
^
TJ,T'T
OUTER JOIN 매출 B
ON (A.부서코드 = B.부서코드)
① SELECT A.부서코드, A. 부서명, A.상
위부서코드, B.매출액, LVL
FROM (SELECT 부서코드, 부서명, 상
위부서코드, LEVEL AS LVL
FROM 부서
START WITH 부서코드 = '120'
CONNECT BY PRIOR 상위부
ORDER BY A. 부서코드;
④ SELECT A.부서코드, A.부서명, A.상
위부서코드, B.매출액, LVL
FROM (SELECT 부서코드, 부서명, 상
위부서코드, LEVEL AS LVL
FROM 부서
START WITH 부서코드
= SELECT 부서코드
UNION
SELECT 부서코드, 부서명, 상
위부서코드, LEVEL AS LVL
FROM 부서
START WITH 부서코드 = '120'
CONNECT BY 상위부서코드 =
PRIOR 부저코드)A LEFT OUTER
FROM 부서
ㄳ汨ERR 상와뷔서코드IS NULL
START WITH부저코드='120'
CONNECT BY PRIOR 상
위부서코드 = 부서코드)
CONNECT BY 상위부서코드
= PRIOR 부서코드)A LEFT
최종모의고사 12?
艇刪
2
쁘 喇 田 峰 ㅂ쑈
N止L
위부서코드, LEVEL AS LVL
嘲
∼
∼
姚
100 아시아지부 NULL
FROM (SELECT 부서코드, 부서명, 상
-
상위부서
매출액 LVL
코드
繃滌
부서명
杜
一
부서
코드
拭
∼
赫
∼
令 ∼瀝
위부서코드, B.매출액, LVL
〔결과]
육전문
,,,,,.,,
1 轟데이터분석온라인:
OUTER JOIN 매출 B
22
23 다음 중 아래의 ERD를 참조하여 아래 SQL
ON (A.부서코드 = B.부서코드)
과 동일한 결과를 출력하는 SQL로 가장 부
ORDER BY A.부서코드;
적절한 것은?
아래 테이블은 어느 회사의 사원들과 이들이
부양하는 가족에 대한 것으로 밑줄친 칼럼은
회원
동의항목
회원번호
회원명
기본키
(Primary Key)
를 표시한 것이다.
+
약관항목
회원번호
(FK)
약관항목
코드
(「가
()
다음 중 '현재 부양하는 가족들이 없는 사원
들의 이름을 구하라'는 질의에 대해 아래
SQL 문장의 ( ④ ), ( (亘,
l )에 들어갈 내용
으로 가장 적절한 것은?
[SQL]
SELECT A. 회원정보, A. 회원명
FROM 회원 A, 동의항목 B
[테이블〕
WHERE A. 회원번호 = B. 회원정보
사원(쇠
[쁘, 이름, 나이)
GROUP BY A. 회원번호, A. 회원명
가족(의름, 나이, 부양사번)
HAVING COUNT(CASE WHEN B.동
의여부 = 'N' THEN 0 ELSE NULL
* 가족 테이블의 부양사번은 사원 테이블의
사번을 참조하는 외래키
(Foreign Key)
이다.
[SQL 문장]
END) >= 1
ORDER BY A. 회원번호;
① SELECT A. 회원번호, A. 회원명
SELECT 이름
FROM 회원 A
FROM 사원
WHERE EXIST (SELECT 1 FROM *
WHERE ( ④ ) (SELECT * FROM 가
의항목 B
족 WHERE ( 洹:) ))
WHERE A. 회원번호 = B. 회원번호
AND B.동의여부 = 'N')
① ④: EXISTS
@) : 사번 = 부양사번
②〈④: EXISTS
@) : 사번 <> 부양사번
③ 旺): NOT EXISTS
⑧ : 사번 = 부양사번
④ ④: NOT EXISTS
(E) : 사번 <> 부양사번
ORDER BY A. 회원번호;
② SELECT A. 회원번호, A. 회원명
FROM 회원 A
WHERE A. 회원번호 IN (SELECT B.
회원번호 FROM 동의항목 B
WHERE B.동의여부 = 'N')
ORDER BY A. 회원번호;
③ SELECT A. 회원번호, A. 회원명
FROM 회원 A
WHERE 0 K (SELECT COUNT(*)
FROM 동의항목 B WHERE B.동의
여부 = 'N')
ORDER BY A. 회원번호;
④ SELECT A. 회원번호, A. 회원명
FROM 회원 A, 동의항목 B
ㅣ 3□ 부록
2。
23 SQLD Masterb。
。k
WHERE A.회원번호 = B.회원번호 AND
B.동의여부 = 'N')
26 다음 중 월별매출 테이블을 대상으로 아래
SQㄴ을 수행한 결과인 것은?
GROUP BY A. 회원번호, A. 회원명
ORDER BY A. 회원번호;
〔테이블 : 월별매출]
24 다음 중 뷰
(View)
에 대한 설명으로 가장 부
상퓜D
월
매출액
2014.11
1500
① 뷰는 단지 정의만을 가지고 있으며, 실행
P001
2014.12
2500
시점에 질의를 재작성하여 수행한다.
P002
2014.10
1000
② 뷰는 복잡한 SQL 문장을 단순화 시켜주
P002
2014.11
2000
P002
2014.12
1500
P003
2014.10
2000
P003
2014.11
1000
P003
2014.12
1000
는 장점이 있는 반면, 테이블 구조가 변경
되면 응용 프로그램을 변경해주어야 한다.
③ 뷰는 보안을 강화하기 위한 목적으로도
활용할 수 있다.
④ 실제 데이터를 저장하고 있는 뷰를 생성
縱鞭欒 ㅁ轍
P001
騙
一
∼
蓀
1500
刪黛m一
2014.10
닙咫殲
P001
적절한 것은?
하는 기능을 지원하는 DBMS도 있다.
(결)GROUPING SETS 함수의 경우에는 함수
의 인자로 주어진 컬럼의 순서에 따라 결과
WHERE 월 BETWEEN 턴2014.10' AND
'2014.12'
GROUP BY GROUPING SETS((상품
ID, 월)
)‘,
①
상퓜D
월
『玭止L
2014.10
4500
NULL
2014.11
4500
NULL
2014.12
5000
@ CUBE 그룹함수는 인자로 주어진 컬럼의
P003
NULL
5500
결합가능한 모든 조합에 대해서 집계를 수
P003
NULL
4500
행하므로 다른 그룹함수에 비해 시스템에
P003
NULL
4000
가 달라지므로 컬럼의 순서가 중요하다.
③CUBE, ROLLUP, GROUPING SETS
함수들의 대상 컬럼 중 집계된 컬럼 이외
의 대상 컬럼값은 해당 컬럼의 데이터 중
가장 작은 값을 반환한다.
매출액1款
대한 부하가 크다.
최종모의고사 1;31
袒皿
동일한 결과는 추출할 수 없다.
FROM 월별매출
쁘略 田므ㅂ 놀
SETS와 같은 그룹함수와 동일한 결과를
추출할 수 있으나, ROLLUP 그룹함수와
ㄴ∼釀 碼一∼ 一∼輛
① 알칸그룹함수를사綱여 CUBE긔 GROUPING
씨
∼
一
溜 騙
25 다음 설명 중 가장 적절한 것은?
[SQL]
SELECT 상품ID, 월, SUM
(매출액)AS
매출액
纛.
데이터분석온라인:
육전문epassbiz
@:)
③
27 다음 중 윈도우 함수
(Window Function,
상퓜D
월
매출액
Pool
2014.10
1500
Pool
2014.11
1500
Pool
2014.12
2500
P002
2014.10
1000
P002
2014.11
2000
P002
2014.12
1500
P003
2014.10
2000
P003
2014.11
1000
P003
2014.12
1000
상품j〔>
∼,
漸跡건恥써닉=
즈:痲
(鰍麻
NULL
2014.10
4500
NULL
2014.11
4500
NULL
2014.12
5000
Pool
NULL
5500
P002
NULL
4500
P003
NULL
4000
NULL
NULL
14000
상퓜
[)
월
애출액
Pool
2014.10
1500
P002
2014.10
1000
P003
2014.10
2000
①WINDOW FUNCTION을 GROUP BY
NULL
2014.10
4500
절과 함께 사용하였으므로 위의 SQL은
Pool
2014.11
1500
오류가 발생한다.
P002
2014.11
2000
P003
2014.10
2000
P003
2014.11
1000
NULL
2014.11
4500
가격을 서로 비교하여 -10000 - +10000
Pool
2014.12
2500
사이에 존재하는 상뚬분류코드의 개수를
P002
2014.12
1500
구한 것이다.
P003
2014.12
1000
NULL
2014.12
5000
1;32 부록
에 대한 설명으로 가
Analytic Fun川on)
장 부적절한 것은?
① Partition과 Gouping By 구문은 의미
적으로 유사하다.
②Partition 구문이 없으면 전체집합을 하나
의 Partition으로 정의한 것과 동일하다.
③ 윈도우 함수처리로 인해 결과건수가 줄어
든다.
④ 윈도우 함수적용범위는 Partition을 넘
을 수 없다.
28 다음 중 아래의 SQL에 대한 설명으로 가장
적절한 것은?
[SQL]
SELECT 상품분류코드
,AVG
(상품가격)AS 상품가격
,COUNT(*) OVER(ORDER BY
AVG
(상품가격)
RANGE BETWEEN 10000
PRECEDING
AND 10000 FOLLOWING
AS 유사개수
FROM 상품
GROUP BY 상풍분 류코드:
②WINDOW FUNCTION의 ORDER BY
절에 AVG 집계함수를 사용하였으므로
위의 SQL은 오류가 발생한다.
③ 유사개수 컬럼은 상풍분 류코드별 평균상품
④ 유사개수 컬럼은 상품전체의 평균상품가격
을 서로 비교하여 -10000 ∼ +10000 사이
에 존재하는 상품의 개수를 구한 것이다.
2。
23 SQLD Masterb。
。k
29 사용자 Lee가 릴레이션 R을 생성한 후, 아
3 1 다음 중 특정한 테이돨게 INSERT, UPDATE
래와 같은 권한부여 SQL문들을 실행하였다.
와 같은 DML문이 수행되었을 때, 데이터베
그 이후에 기능이 실행가능한 SQL을 2개 고
이스에서 자동으로 동작하도록 작성된 저장
르시오.(단, A, B의 데이터 타입은 정수형
ㅍ로그램ㅇ로 가장 적절한 것은?
(단, 사용자
이다. )
가 직접 호출하여 사용하는 것이 아니고 데이
터베이스에서 자동적으로 수행하게 된다. )
Lee : GRANT SELECF, INSiFcl', DELETE
ON R TO Kim WITH GRANT OPTION;
Kim : GRANT SELEX兀, INai i-cr, DELETFE
①PROCEDURE
②USER DEFINED FUNCTION
ON R 'ID Park;
③PACKAGE
Lee : REVOKE DELETE ON R FROM
④TRIGGER
Kh끄
Lee : REVOKE INSERT ON R FROM
Kim CASCADE
①Park : SELECT * FROM R WHERE
A=400;
②Park : INSERT INTO H VALUES(400,
600);
③Park : DELETE FROM R WHERE B
=800;
① 실행계획은 SQL 처리를 위한 실행 절차
와 방법을 표현한 것이다.
② 실행계획은 조인방법, 조인순서, 액세스
기법 등이 표현된다.
③ 동일 SQL문에 대해 실행계획이 다르면
실행결과도 달라질 수 있다.
④CBO(Cost Based Optimizer)
의 실행
계획에는 단계별 예상비용 및 건수 등이
표시된다.
30 다음 중 Trigger에 대한 설명으로 가장 부
적철한 것은?
33 아래의 INDEX에 대한 설명에서 ( @) ),
( 呻)), ( @> )에 들어갈 인덱스 종류가 순서
①Trigger는 데이터베이스에 의해서 자동
으로 호출되고 수행된다.
대로 바르게 나열된 것은?
②Trigger는 특정테이블에 대해서 INSERT,
( ⑧ ) 인덱스는브랜치 블록과 리프 블록
UPDATE, DELETE 문이 수행되었을
으로 구성되며, 브랜치 블록은 분기를 목적
으로 하고 리프 블록은 인덱스를 구성하는
때 호출되도록 정의하 수 있다.
③Trigger는 TCL을 이용하여 트랜젝션을
제어할 수 있다.
컬럼의 값으로 정렬된다. 일반적으로 OLTP
시스템 환경에서 가장 많이 사용된다.
④Trigger는 데이터베이스에 로그인하는
작업에도 정의할 수 있다.
( ⑧ ) 인덱스는 인덱스의 리프페이지가
곧 데이터페이지이며, 리프페이지의 모든
데이터는 인덱스, 키, 컬럼 순으로 물리적
으로 정렬되어 저장된다.
최종모의고사 ㅓ33
柾湘
600);
절한 것은?
쁘脇円므ㅂ >
④Kim : INSERT INTO R VALUES(500,
32 다음 중 실행계획에 대한 설명으로 가장 부적
`“데이터분석온라인:
육전문 , , , , , ..,
( @) ) 인덱스는 시스템에서 사용될 질
의를 시스템 구현시에 모두 알 수 없는 경
우인 DW 및 AD-HOC 질의환경을 위해서
설계되었으며, 하나의 인덱스 키 엔트리가
많은 행에 대한 포인터를 저장하고 있는 구
조이다.
CLUSTERED 인덱스
② B-TREE 인덱스, CLUSTERED 인덱
스, BITMAP 인덱스
③ BITMAP 인덱스, CLUSTERED 인덱
스, REVERSE KEY 인덱스
④ BITMAF) 인덱스, REVERSE KEY 인덱
스, CLUSTERED 인덱스
34 다음 중 아래의 내용에 대한 설명으로 가장
적절한 것을 2개 고르시오.
[INDEX 생성]
CREATE INDEX IDX EMP 01 ON
EMP (REGIST_DATE, DEPTNO);
WHERE DEPTNO = 47
AND
REGIST DATE
BETWEEN
'2015.02.01.' AND '2015.02.28.';
① 실행된 SQL에 대해서 인덱스 비효율이
컬럼을 DEPTNO +
REGISㄸ신DATE 순으로 변경할 필요가
있다.
②IDX EMP 01 인덱스를 이용하여 DEPPNO
=47 조건을 효율적으로 탐잭할 수 있다.
③REGISTDATE 컬럼에 대한 조건을 범
위검잭이 아닌 동등검색조건으로 변경하
면 IDX EMP 01 인덱스를 효율적으로
활용할 수 있다.
ㅣ34 부록
용될 수 있는 인덱스 형식이다.
35 다음 중 SMJ(Sort Merge J이n)
에 대한
① 조인컬럼에 적당한 인덱스가 없어서 NL
조인
(Nested Loops)
가 비효율적일 때
사용할 수 있다.
②Driving Table의 개념이 중요하지 않은
조인방식이다.
③ 조인조건의 인덱스의 유뮤에 영향받지 않
는다.
④ EQUI(=) 조인조건에서만 동작한다.
36 SELECT SUBSTR('KOREA', 2, 3)
FROM DUAL;의 결과를 쓰시오.
37 다음의 오라클 문법의 loin 문법을 표준
AN히 SQL 문법으로 바르게 변경하시오.
- ORACLE 문법 SELECT *
[SQL 실행]
SELECT *
FROM EMP
인덱스의
량 데이터를 탐색할 때 매우 유용하게 활
설명으로 가장 부적철한 것은?
(D B-TREE 인덱스, BITMAP 인덱스,
있어
④IDXEMF신01 인덱스는 테이블 내의 대
FROM STUDENT S. HOBBY H
WHERE S. STUDENT ID =
H,STUDENT ID(+);
- ANSI 문법 SELECT *
FROM STUDENT S (
ON S. STUDENT ID =
H. STUDENT ID;
)HOBBY H
。k禪」
2。
23 SQLD Masterb。
38 다음 보기에서 설명하는 식별자는?
데이터베이스 엔터티 내부에서 스스로 생
성되는 식별자이다. 예를들어 부서코드, 상
품코드, 배송번호 등이 있다.
3'
다음 보기에서 설명하는 것은?
다양한 권한들의 집합이다.
여러 0bject들의 권한들을 한꺼번에 부여
할 수 있다.
40 보기에서 설명하는 것을 쓰시오.
SQL이 데이터베이스에서 실행될 때 실행
노硼鯉呻吻
되는지를 이것을 통해 확인할 수 있다.
袒刪
쁘酪円므ㅂ 쑈
최종모의고사 135
以邢 ㅂ
절차 및 방법을 알려준다. RULE과 COST
가 출력되며, SQL이 어떤 방식으로 실행
부록
제2회 최종모의고사
데이터 모델링의 이해
3 다음 중 아래 시나리오에서 엔터티로 가장 적
절한 것은?
1 다음 중 아래 데이터모델링 개념에 대한 설명
에서 ( @) ), ( @) )oㅔ 들어갈 단어로 가장
적절한 것은?
전사적 데이터 모델링을 수행할 때 많이 하
며, 추상화 수준이 높고 업무 중심적이고
포괄적인 수준의 모델링을 진행하는 것을
( ⑧ ) 데이터 모델링이라고 한다. 이와
달리 실제로 데이터베이스에 이식할 수 있
도록 성능, 저장 등의 물리적인 성격을 고
려한 데이터모델링은 ( @) ) 데이터모델
링이라고 한다.
S병원은 여러 명의 환자가 존재하고 각 환
자에 대한 이름, 주소 등을 관리해야 한다.
(단, 업무범위와 데이터의 특성은 상기 시
나리오에 기술되어 있는 사항만을 근거하
여 판단해야 함)
① 병원
(D 이름
② 환자
④ 주소
04 다음 중 데이터를 조회할 때 빠른 성능을 낼
수 있도록 하기위해 원래 속성의 값을 계산하
여 저장할 수 있도록 만든 속성으로 가장 적
① A- 개념적, B-물리적
② A-논리적, B- 개념적
③ A-논리적, B-물리적
④ A- 개념적, B
논리적
緘2 다음 중 ERD에 대한 설명으로 가장 부적절
한 것은?
①1976년 피터첸
(Peter Chen)
에 의해 EntityRelationship Model(E-R-Model)이라
는 표기법이 만들어졌다.
② 일반적으로 ERD를 작성하는 방법은 엔터
티 도출 → 엔터티 배치 → 관계 설정 →
관계명 기술의 흐름으로 작업을 진행한다.
③ 관계의 명칭은 관계 표현에 있어서 매우
중요한 부분에 해당한다.
④ 가장 중요한 엔터티를 오른쪽 상단에 배
치하고 추가 발생되는 엔터티들을 왼쪽
편과 하단에 배치하는 것이 원칙이다.
136 부록
절한 것은?
(Derived Attribute)
① 파생속성
② 기본속성
(Basic Attribute)
(Designed Attribute)
③ 설계속성
④ PK속성
(PK Attribute)
5 다음 중 엔터티간의 관계에서 1:1, 1:M과 같
이 관계의 기수성을 나타내는 것으로 가장 적
절한 것은?
① 관계명
(Relationship Membership)
② 관겨짜숴Relationship Igr④ / Cardina1i以)
③ 관계선택사양
《Relationship Optionality)
④ 관계정의
(Relationship Definition)
2。
23 SOLD Masterb。
。k
6 다음 중 사원엔터티에서 식별자의 특성에 해
당하지 않는 것은 무엇인가?
8 아래의 데이터 모델처럼 동일한 유형의 속성
이 칼럼단위로 반복되는 경우가 실제 프로젝
트를 하면서 많이 발생 될 수 있다. 다음 중
부서
사원
부서번호
큅빛쁜
아래와 같이 전제조건이 있을 【대 테이블에서
사번
나타날 수 있는 현상으로 가장 적절한 것은?
부서번호
(R<)
주민등록번호
전제조건 : 유형기능분류코드에 해당하는 속
① 주식별자
성들은 분포도가 양호하며, SQL Where절
에서 각각의 값이 상수값으로 조건 입력될
② 단일식별자
수 있는 특징을 가진다.
③ 내부식별자
④ 인조식별자
07 다음 중 성능데이터 모델링을 할 때 고려사항
으로 가장 부적절한 것은?
① 데이터 모델링의 牛千화는 항상 조회 성
능저하를 나타내므로 반정규화 관점에서
만 성능을 고려하여 설계하도록 한다.
(D 용량산정은 전쳬적인 데이터베이스에 발
생되는 트랜잭션의 유형과 양을 분석하는
자료가 되므로 성능데이터 모델링을 할
때 중요한 작업이 될 수 있다.
③ 물리적인 데이터 모델링을 할 때 PK/FK
의 칼럼의 순서조정, FK인덱스생성 들은
성능 향상을 위한 데이터 모델링 작업에
중요한 요소가 된다.
④ 이력데이터는 시간에 따라 반복적으로 발
생이 되기 때문에 대량 데이터일 가능성
이 높아 특별히 성능을 고려하여 칼럼 등
을 추가하도록 설계해야 한다.
모델
L
`긺데이터분석온라인:
육전문epassbiz
③ 유형기능분류코드가 일반속싱 안에서 반
① 명세번호를 실적 테이블에 맨 처음 칼럼
복적으로 속성이 구분되어 있기 때문에
으로 옮기면 PR 인덱스의 이용효율성이
이전종속을 수행해야 하는 제 2정규형이
향상된다.
② 지사코드에 대해 입력 값이 EQUAL 조건
라 할 수 있다.
④ 유형기능분류코드 각각에 대하여 개별로
으로 사용되므로 지사코드를 실적 테이블
Index를 모두 생성할 경우 입력, 수정, 삭
의 맨 처음 위치로 옮겨서 일자 칼럼의 앞
제 때 성능이 저하되므로 제1차 蔘구화를
에 두면 인덱스 이용 효율성이 높아진다.
수행한 후 인덱스를 적용하는 것이 좋다.
③ 일자가 SQL문장의 Where절에 첫 번째
조건으로 나왔으므로 칼럼 순서에서도 첫
9 다음 중 하나의 테이블의 전체 칼럼 중 자주
번째에 위치하는 것이 효율성이 높다.
이용하는 집중화된 칼럼들이 있을 때 디스크
④ 일자, 명세번호, 지사코드로 칼럼 순서를
I/O를 줄이기 위해 해당 칼럼들을 별도로 모
바꾸어야 일자 범위에 대한 내용을 먼저
아놓는 반정규화 기법으로 가장 적절한 것은?
식별하고, 그 다음으로 지사코드를 찾기
① 칼럼추가-부분칼럼 추가
② 칼럼추가 - 중복칼럼 추가
③ 테이블추가-중복칼럼 추가
④ 테이블추가 부분칼럼 추가
10 다음 중 아래의 엔터티와 이 엔터티를 매우
빈번하게 참조하는 SQL의 성능에 대한 설명
으로 가장 적절한 것은?
실적
일자
지사코드
명세번호
=그
《개
ㄷ그 ㄱ
건수
SELECT 건수, 금액
FROM 실적
WHERE 일자 BETWEEN '20110101'
AND '20110102'
ANT) 지사코드 = '1001'
(단, PR 인덱스가 존재하며 칼럼순서대로
인덱스가 생성되어있고, 이 SQL이 트랜잭
션의 대부분을 차지한다고 가정함)
138 부록
에 용이할 수 있으므로 이때 인덱스의 효
율성이 가장 높다.
2。
23 SQLD Masterb。
。k
과목 n
SQL 기본 및 활용
`
01 데이터베이스를 정의하고 접근하기 위해서는
데이터베이스 관리시스템과의 통신수단이 필
요한데 이를 데이터언어
《Data Language)
라고 하며, 그 기능과 사용 목적에 따라 데이
터 정의어
(DDL), 데이터 조작어
(DML), 데
CREATE TABLE R
(A INTEGER PRIMARY KEY,
B INTERGER REFERENCES S(B)
ON DELETE SET NULL);
현재 테이블 T, S, R의 상태는 다음과 같다.
T:
C
D
이터 제어어
(DCL)
로 구분된다. 다음 중 데
1
1
2
1
B
C
1
1
2
1
A
B
1
1
2
2
이터 언어와 SQL 명령어에 대한 설명으로
가장 부적절한 것은?
S
(1) 비절차적 데이터 조작어
(DML)
는 사용자
가 무슨 데이터를 원하며, 어떻게 그것을
접근해야 되는지를 명세하는 언어이다.
②DML은 데이터베이스 사용자가 응용 프
R
로그램이나 질의어를 통하여 저장된 데이
터베이스를 실질적으로 접근하는데 사용
되며 SELECT, INSERT, DELETE,
UPDATE 둥이 있다.
③DDL은 스키마, 도메인, 테이블, 뷰, 인덱
RENAME 등이 있다.
@:) (2, 2)
(D (1, 1)
④ 호스트 프로그램 속에 삽입되어 사용되는
DML 명령어들을 데이터 부속어
(Data Sub
Lanuage)
라고 한다.
03 다음 중 테이블 생성시 칼럼별 생성할 수 있
는 제약조건
(Constraints)
에 대한 설명으
로 가장 부적절한 것은?
02 아래 테이블 T, S, R이 각각 다음과 같이 선
① UNIQUE : 테이블 내에서 중복되는 값이
언되었다. 다음 중 DELETE FROM T;를
없으며 NULL 입력이 불가능하다.
수행한 후에 테이블 R에 남아있는 데이터로
② PK : 주키로 테이블당 1개만 생성이 가능
가장 적절한 것은?
하다.
③ FK : 외래키로 테이블당 여러개 생성이
CREATE TABLE T
(C INTEGER PRIMARY KEY,
D INTERGER);
가능하다.
④ NOT NULL : 명시적으로 NULL 입력을
방지한다.
CREATE TABLE S
(B INTEGER PRIMARY KEY,
C INTERGER REFERENCES T(C)
ON DELETE CASCADE);
최종모의고사 139
艇刪
용되며 CREATE, ALTER, DROP,
②(1, NULL)과 (2, NULL)
쁘叩田峰ㅂ 軟
스를 정의하거나 변경 또는 제거할때 사
①(1, NULL)과 (2, 2)
.데이터분석온라인:
S.
육전문 epassbiz
③ DROP TABLE 매출;
4 다음 중 외래키에 대한 설명으로 가장 부적절
④ DELETE TABLE FROM 매출;
한 것을 2개 고르시오.
① 테이블 생성시 설정할 수 있다.
② 외래키 값은 널 값을 가질 수 없다.
08
다음 중 DELETE와 ㅜRUNCATE, DROP
③ 한 테이블에 하나만 존재해야 한다.
명령어에 대해 비교한 설명으로 가장 부적절
(D 외래키 값은 참조무결성 제약을 받을 수
한 것을 2개 고르시오.
① 특정 테이블에 대하여 WHERE 조건절이
있다.
없는 DELETE 명령을 수행하면 DROP
TABLE 명령을 수행했을때와 똑같은 결
5 STADIUM 테이블의 이름을 STADIUM_
과를 얻을 수 있다.
JSC로 변경하는 SQL을 작성하시오.(AN히
(D DROP 명령어는 테이블 정의자쳬를 삭제
표준 기준)
하고, TRUNCATE 명령어는 테이블을
초기상태로 만든다.
6 개발프로젝트의 표준은 모든 삭제 데이터에
③TRUNCATE 명령어는 UND○를 위한
대한 로그를 남기는 것을 원칙으로 하고, 테
데이터를 생성하지 않기때문에 동일 데이
이블 삭제의 경우는 허가된 인력만이 정기적
터량 삭제시 DELETE보다 빠르다.
으로 수행 가능하도록 정하고 있다. 개발팀에
(D DROP은 Auto Commit이 되고, DELETE
[JM
서 사용 용도가 없다고 판단한 STA[기
와 TRUNCATE는 사용자 Commit으로
테이블의 데이터를 삭제하는 가장 좋은 방법
수행된다.
은 무엇인가?
①DELETE FROM STADIUM;
②DELETE * FROM STADIUM;
0'
아래 내용의 ( 旺)), ( ⑧ ), ( @) )에 해당
하는 단어를 순서대로 작성하시오.
③TRUNCATE TABLE STADIUM;
@ DROP TABLE STADIUM;
07 다음 중 아래와 같은 상황에서 사용할 수 있
는 SQL 명령어는?
우리가 관리하는 데이터베이스의 '매출’ 테
이블이 너무나 많은 디스크 용량을 차지하
여 '매출’ 테이블에서 필요한 데이터만을 추
출하여 별도의 테이블로 옮겨 놓았다. 이후
'매출? 원본 테이블의 데이터를 모두 삭제함
과 동시에, 디스크 사용량도 초기화 하고자
. , '매출’ 테이블의 스키마 정의는
한다(단
유지한다.
(1) TRUNCATE TABLE 매출;
② DELETE FROM 매출;
140 부록
( ④ )은 데이터베이스의 논리적 연산단
위로서 밀접히 관련되어 분리될 수 없는 한
개 이상의 데이터베이스 조작을 가리킨다.
( 伍) )의 종료를 위한 대표적 명령어로서
는 데이터에 대한 변경사항을 데이터베이스
에 영구적으로 반영하는 ( ⑧ )과 데이터
에 대한 변경사항을 모두 폐기하고 변경전
의 상태로 되돌리는 ( @) )이 있다.
2。
23 SOLD Masterb。
。k
10 아래와 같은 DDL 문장으로 테이블을 생성하
11 다음 중 아래와 같은 2건의 데이터 상황에서
고, SQL들을 수행하였을 [[ㅐ 다음 설명 중 옳
(단,
SQL의 수행결과로 가장 적절한 것은?
은 것은?
이해를 돕기위해 皿는 줄바꿈을 의미
> 실제
저장값이 아님, CHR(1O) :A5011 값 → 줄
CREATE TABLE 서비스
바꿈을 의미)
(
서비스번호 VARCHAR2(10) PRIMARY
TAB1
;;
KEY,
ROENUM
서비스명 VARCHAR2(100) NULL
Cl
A
개시일자 DATE NOT NULL
1
);
4
B
B
[SQL]
皿,
B
2
皿,
B
@) INSERT INTO 서비스 VALUES
('999', ", '2015-11-li ');
(竗 SELECT * FROM 서비스 WHERE
SELECT SEUM(CC)
岬伽
⑥ SELECT * FROM 서비스 WHERE
서비스명 = " ;
FROM (
SELECT(LENGTH(C1) -
서비스명 IS NULL;
FROM TAB1
'001'과 같은 숫자형식으로 하나의 코드만
이라도 입력되어 ④는 오류없이 실행된다.
②ORACLE에서 ⑧와 같이 데이터를 입력
하였을때, 서비스명 컬럼에 공백문자 데
이터가 입력된다.
③ORACLE에서 ⑧와 같이 데이터를 입력
하고, @)와 같이 조회하였을 때, 데이터는
)
① 2
② 3
③ 5
④ 6
조회된다.
④ sQL Server에서 ⑧와 같이 데이터를 입
력하고, ⑩와 같이 조회하였을 때, 데이터
12 오라클환경에서 날짜형 데이터를 다룰 경우,
아래 SQL 결과로 가장 적절한 것은?
SELECT TQCHAR(TOJ)ATE('2015.01.
10 10', 'YYYY.MM.DD HH24') + 1/24/
(60/10), 'Yri'Y.MM.DD HH24:MI:SS')
FROM DUAL;
①2015.01.10 11:01:00
②2015.01.10 10:05:00
최종모의고사 141
細刪
CHR(10))) + 1) CC
쁘唎田峰ㅂ 놀
LENGTH(REPLACE (C1.
① 서비스번호 컬럼에 모든 레코드 중에서
疇一 ∼
藪
⑧ SELECT * FROM 서비스 WHERE
서비스번호 = 1;
公.
데이터분석온라인:
육전epassbiz
③2015.01.10 10:10:00
14 아래는 어느 광고회사0ㅔ 대한 데이터 모델이
(D2015.01.10 10:30:00
다. 다음 중 광고매체 D별 최초로 게시한 광
고명과 광고시작일자를 출력하기 위하여 아
13 다음 중 아래 TAB1을 보고 각 SQL 실행결
래 ( @) )에 들어갈 SQL로 옳은 것은?
과를 가장 올바르게 설명한 것을 고르시오,
광고매체
팡고매케0
TAB1
광고매체명
COL1
COL2
a
『없Jㄴㄴ
b
C
3
d
4
t〕
갸
①SELECT COL2 FROM TAB1 WHERE
COL1 = 'b",
=> 실행결과가 없다(공집합)
.
②SELECT ISNULL(COL2, 'X') FROM
TAB1 WHERE COL1 = 'a';
[SQL]
SELECT C.광고매쳬명, B.광고명, A.광
고시작일자
FROM 광고게시 A, 광고 B, 광고매쳬 C,
( ④ )D
WHERE A.광고시작일자 = D.광고시작일자
AND A.광고매쳬ID = D.광고매체ID
AND A.광고ID = B.광고ID
AND A.광고매쳬ID = C.광고매체ID
ORDER BY(〕
.광고매체명;
=> 실행 결과로 x를 반환한다.
③SELECT COUNT(COL2) FROM TAB1
① SELECT D.광고매쳬ID, MIN(D.광고시
WHERE COL2 = NULL;
작일자)AS 광고시작일자
=> 실행 결과는 1이다.
FROM 광고게시 D
④SELECT COUNT(COL2, 'X') FROM
TAB1 WHERE COL1 IN ('b', 'c');;
=> 실행 결과는 1이다.
WHERE D.광고매체ID = C.광고매쳬ID
GROUP BY D.광고매쳬ID
② SELECT 광고매체ID, MIN
(광고시작일
자)AS 광고시작일자
FROM 광고게시
GROUP BY 광고매쳬ID
③ SELECT MIN
(광고매체ID) AS 광고매
체ID, MIN
(광고시작일자)AS 광고시작
일자
FROM 광고게시
GROUP BY 광고ID
④ SELECT MIN
(광고매쳬ID) AS 광고매
쳬ID, MIN
(광고시작일자)AS 광고시작
일자
FROM 광고게시
ㅣ42 부록
2。
。k
23 SQLD Masterb。
15 다음 중 아래 SQL의 실행결과로 가장 적절
16 아래의 팀별성적 테이블에서 승리건수가 높
은 순으로 3위까지 출력하되 3위의 승리건수
한 것은?
가 동일한 팀이 있다면 함께 출력하기 위한
TAB1
SQL 문장으로 올바른 것은?
ID
[테이블 : 팀별성적]
A팀
120
80
200
B팀
20
180
200
C팀
10
190
999
D팀
100
100
999
E팀
110
90
F팀
100
100
G팀
70
130
SELECT ID FROM TBL
GROUP BY ID
HAVING COUNT(*) = 2
ORDER BY (CASE WHEN ID = 999
THEN 0 ELSE ID END)
① SELECT TOP(3) 팀명, 승리건수
FROM 팀별성적
ORDER BY 승리건수 DESC;
닙
∼
知 뱁
200
∼∼딛노湘泗 뻬朔
패배건수
ㅂ那 ㅡ
승리건수
교므모 緇腿센媛 므錯
팀별
沁羈
100
予
ㅁ 8 欠 눈 獅鉀법繼隅
100
(D SELECT TOP(3) 팀명, 승리건수
①
FROM 팀별성적
WHERE ROWNUM <= 3
ID
ID
ORDER BY 승리건수 DESC;
④ SELECT TOP(3) WITH TIES 팀명, 승
200
200
999
100
리건수
FROM 팀별성적
ORDER BY 승리건수 DESC;
17 다음 중 순수관계연산자에 해딩熾지 않는 것은?
① SELECT
② UPDATE
③ JOIN
(D DIVIDE
최종모의고사 ㅣ 43
缸捌
(軫 SELECT 팀명, 승리건수
略田므ㅂ 놀
FROM 팀별성적
,,
j “데이터분석온라인:
육전:
,,,,,.,,
18 다음 중 아래 테이불들을 대상으로 SQL 문
①
장을 수행한 결과로 가장 적절한 것은?
고객번호 고객영 단말게D 단말기명 0SID
1000 A1000
100
Android
12000 강감찬
NULL
NULL
NULL
NULL
13000 이순신
NULL
NULL
NULL
NULL
11000
〔테이블 : Os]
홍길동
0s명
OSID(PK)
OS명
100
Android
14000 안중근 NULL
NULL
NULL
NULL
200
OS
15000 고길동 NULL
NULL
NULL
NULL
300
Bada
16000 이대로 NULL
NULL
NULL
NULL
고객번호 고객명 단말게D 단알기명 0SID
0s명
@:)
[테이블 : 단말기]
1000 A1000
100
Android
NULL
NULL
NULL
고객번호 고객명 단말게[) 단말기명 0SID
0s명
11000 홍길동
단말기명
OSID(FK)
1000
A1000
100
2000
B2000
100
3000
C3000
200
4000
D3000
300
12000
@)
단말개D(PK)
11000
④
강감찬
홍길동
1000 A1000
100
고객번호 고객명 단알게[) 단말기명 0SID
Android
0s명
1000 A1000
100
Androd
강감찬
NULL
NULL
NULL
NULL
13000 이순신
NULL
NULL
NULL
NULL
14000 안중근
3000 C3000
200
0s
11000 홍딛농
[테이블 : 고객]
NULL
12000
고객번호
(PK)
고객명
단말게D(FK)
11000
홍길동
1000
12000
강감찬
NULL
13000
이순신
NULL
15000 고길동
4000 D4000
300
Bada
14000
안중근
3000
16000 이대로
4000 D4000
300
Bada
15000
고길동
4000
16000
이대로
4000
[SQL]
SELECT A. 고객번호, A.고객명, B.단말
기ID, B.단말기명, C.OSID, C.OS명
FROM 고객 A LEFT OUTER JOIN 단
말기 B
ON (A. 고객번호 IN (11,000, 12,000)
AND A.단말기ID = B.단말기ID)
LEFT OUTER JOIN OS C
ON (B. OSID = C. OSID)
ORDER BY A.고객번호 :
144 부록
2。
23 SQLD Masterb。
。k
19 아래의 EMP 테이블과 DEPT 테이블에서
TAB2
밑줄 친 속성은 주키이며 EMP.C는 DEPT
Cl
C2
DEPT 테이블을 LEFT, FULL, RIGHT
B
2
외부조인
(outer join)
하면 생성되는 결과
C
3
건수로 가장 적절한 것은?
D
4
와 연결된 외래키이다.
EMP 테이블과
EMP 테이블
A
SELECT *
……B∼
C
w
3
d
w
5
y
y
ON (AC1= B.C1 AND B.C2 BETWEEN
1 AND 3)
ED
DEPT 테이블
w
1
10
z
4
11
v
2
22
③ 3건, 4건, 4건
④ 3건, 4건, 5건
②
20 다음 중 아래와 같은 데이터 상황에서 SQL
의 수행결과로 가장 적절한 것은?
TAB1
Cl
C2
A
1
B
2
C
3
D
4
E
5
(표)
ED
B
2
B
2
C
3
C
3
D
4
D
4
F
5
Cl
C2
Cl
C2
A
1
B
2
B
2
C
3
C
3
D
4
F
5
Cl
C2
Cl
C2
A
1
B
2
B
2
C
3
C
3
c1
C2
…Cl
식 C2
A
1
B
2
B
2
C
3
C
3
D
4
D
4
최종모의고사 ㅣ 45
粗捌
② 4건, 5건, 3건
1
쁘刪田些ㅂ 놀
① 3건, 5건, 4건
A
C2
…
F
Cl
慟
∼
沸
D
「
C2
擁一 …
沈
灐 順 瑯硼
C…
Cl
締∼聯 ∼
b
m鮫漿 珊 縱 棚 빴 ㅇ狐
1
FROM TAB1 A LEFT OUTER JOIN
TAB2 B
,
`,데이터분석온라인:
육전문 epassbiz
21 다음 중 아래의 EMP 테이블의 데이터를 참
垣)
조하여 실행한 SQL의 결과로 가장 적절한
것은?
BBA
BBB
SMITH
CLERK
JONES
MANAGER
BBA
BBB
JONE죠
MANAGER
Sr애자
CLERK
④
SELECT ENAME AAA. JOB AAB
FROM EMP
WHERE EMPNO = 7369
UNION ALL
SELECT ENAME BBA. JOB BBB
FROM EMP
22 아래와 같은 데이터 상황에서 아래의 SQL을
WHERE EMPNO = 7566
수행할 경우 정렬 순서상 2번째 표시될 값을
ORDER BY 1, 2;
적으시오.
EMP
EMPNO ENAME
JOB I MGR HIREDATE SAL COMM DEPN0
7369 SMITH
CLERKㅣ7902 1980-12-17 800
20
7499 ALLEN SALESMANI 7698 1891-02-20 1600 300
30
7521 HADD SALESMANI 7698 1871-02-22 1250 500
30
7566 JONES MANAGER 7839 1871-04-02 2975
20
7654 MARTIN SALESMAN 7698 1981-09-28 1257 1400
30
7698 BL00E MANAGER - 7839 1981-05-01 2850
30
7782 CLANK MANAGER1 7839 1981-06-09 2450
10
7788 SCOTT ANALYST 7565 1987-07-13 3000
20
7839 KIAG ERESIDENT
10
1981-11-17 5000
7844 TURNER SALESMAN1 7698 1981-09-08 1500
0
30
7876 ADAMS CLERK 1 7788 1987-07-13 1101
20
7900 JAMES CLERK 1 7698 1981-12-03 950
30
7902 FOND ANALYST 1 7566 1981-12-03 300
-…--7934 MILLER CLERK l 7782 1982-01-23 1300
20
10
C2
1
C3
^
2
1
B
3
1
C
4
2
0
/
SELECT C3
FROM TAB1
START WITH C2 IS NULL
CONNECT BY6 PRIOR Cl = C2
0RDER SIBLINGS BY C3 DESC
23 다음 중 0racle 계층형 질의에 대한 설명으
로 가장 부적절한 것은?
① START WITH절은 계층 구조의 시작점
② ORDER SIBLING BY절은 형제 노드사
CL티:
(
諦
이에서 정렬을 지정하는 구문이다.
JONES
MANAGER
③ 순방향전개란 부모노드로부터 자식노드
AAA
AAB
JONES
MANAG타굿
SN걔자
CLERK
51해자
146 부록
Cl
을 지정하는 구문이다.
①
(Z)
TAB1
방향으로 전개하는 것을 말한다.
④ 루트노트의 LEVEL 값은 0이다.
2023 SQLD Masterbook S
24 다음 중 계층형 질의문에 대한 설명으로 가장
부적절한 것은?
26 다음 중 아래 SQL에 대한 설명으로 가장 부
적절한 것은?
① SQL Server에서의 계층형 질의문은 GTE
(Common Table Expression)* 재귀
호출함으로써 계층구조를 전개한다.
SELECT B.사원번호, B.사원명, A.부서
번호, A.부서명
, (SELECT COUNT(*) FROM 부
커 멤버를 실행하여 기본결과집합을 만들
③ 오라클의 계층형 질의문에서 WHERE 절
AS 부양가족수
은 모든 전개를 진행한 이후 필터조건으
FROM 부서 A, ;(SELECT *
로서 조건을 만족하는 데이터만을 추출하
FROM 사원
는데 활용된다.
wHKRE 입사년도 = '2014')
B
④ 오라클의 계층형 질의문에서 PRIOR 키
워드는 CONNECT BY절에만 사용할 수
있으며, 'PRIOR 자식 = 부모’형태로 사용
하면 순방향 전개로 수행된다.
攘隅잔嚥
양가족 Y WHERE
Y.사원번호 = B.사원번호)
고 이후 재귀멤버를 지속적으로 실행한다.
醜β D藏鋏-
② sQL Server에서의 계층형 질의문은 앵
[SQL]
WHERE A.부서번호 = B. 부서번호
AND EXISTS (SELECT 1 FROM A]-
g
;
X WHERE X.부서번호 = A.부서번호)
① 위 SQL에는 다중행 연관 서브쿼리, 단일
25 다음 중 아래의 SQL 수행결과로 가장 적절
한 것은?
행 연관 서브쿼리, Inline View가 사용
되었다.
WHERE D=(SELECT D FROM DEPT
WHERE E='i');
서브쿼리라고도하며, 이러한 형태의 서브
쿼리는 JOIN으로 동일한 결과를 추출할
수 있다.
③WHERE절의 서브쿼리에 사원 테이블 검
잭조건으로 입사년도 조건을 FROM절의
EMP 테이블
서브쿼리와 동일하게 추가해야 원하는 결
A
B
C
D
1
S
1
x
2
a
1
x
View)
라고도 하며, SQL 문장 중 테이블
3
b
2
y
명이 올 수 있는 곳에서 사용할 수 있다.
과를 추출할 수 있다.
@ FROM절의 서브쿼리는 동적 뷰
(Dynamic
…
DEPT 테이블
D
E
F
x
I
5
y
m
6
" ‘∼
②1
④ 3
최종모의고사 147
叔捌
FROM EMP
쁘喇田些ㅂ 蠟
②SELECT절에 사용된 서브쿼리는 스칼라
SELECT COUNT(DISCINCT Al I B)
.\i데이터분석온라인교육전문epassbiz
27 다음 중 아래의 테이블에서 SQL을 실행할
때 결과로 가장 적절한 것은?
[테이블 : 서비스]
서비스ID
가입일자
가입건수
001
2013-01-01
3
001
소계
3
서비스명
002
2013-01-02
3
001
서비스1.
002
소계
3
002
서비스2
003
2013-01-03
2
003
서비스3
003
소계
2
004
서비스4
합계
소계
8
서비쇠D
가입일자
가입건수
001
2013-01-01
3
002
2013-01-02
3
003
2013-01-03
2
합계
소계
8
서비 ID
가입일자
가입건수
@)
서비쇠D(PK)
[테이블 : 서비스가입]
회원번호〈PK) 서비쑈JD(PK)
가입일자
1
001
2013-01-01
1
002
2013-01-02
2
001
2013-01-01
2
002
2013-01-02
2
003
2013-01-03
001
2013-01-01
3
3
001
2013-01-01
001
소계
3
3
002
2013-01-02
002
2013-01-02
3
3
003
2013-01-03
002
소계
3
003
2013-01-03
2
SELECT CASE WHEN GROUPING(A.
003
소계
2
서비스II기 = 0 THEN A.서비스ID
004
[SQL]
ELSE '합계' END AS 서비스
疹)
0
004
소계
0
합계
소계
8
서비쑈ㅢ
[〕
가입일자
가입건수
001
2013-01-01
3
서비스가입 B
002
2013-01-02
3
ON (A.서비스ID = B, 서비스ID
003
2013-01-03
2
ID
,CASE WHEN GROUPING(B.7F
입일자)= 0
,COUNT(B. 회원번호)AS 가입건수
FROM 서비스 A LEFT OUTER JOIN
AND B. 가입일자 BETWEEN '201301-01' AND '2013-01-31')
GROUP BY ROLLUP (A.서비스ID, B.
가입일자)
;
148 부록
004
합계
0
소계
8
2。23SOLDMasterb。
。kii.\
28 아래와 같이 설비와 에너지사용 테이블을 이
7
① SELECT A.설비ID, B. 에너지코드, SUM
용하여 결과를 나타내려할 때 SQL으로 가장
(B.사용량)AS 사용량합계
적절한 것을 2개 고르시오.
FROM 설비 A INNER JOIN 에너지사
용량 B
〔테이블 : 설비〕
ON (A.설비ID = B.설비ID)
GROUP BY CUBE ((A. 설비ID), (B. 에
1
설비1
너지코드)
, (A. 설비ID), B.에너지코드)
)
2
설비2
3
설비3
ORDER BY A.설비ID, B. 에너지코드;
② SELECT A. 설비ID, B.에너지코드, SUM
(B.사용량)AS 사용량합계
에너지코드
사용량
1
전기
100
1
용수
200
GROUP BY CUBE (A. 설비ID, B. 에너
지코드)
1
바람
300
ORDER BY A.설비ID, B.에너지코드;
2
전기
200
③ SELECT A. 설비ID, B.에너지코드, SUM
2
용수
300
3
전기
300
ON (A. 설비ID = B. 설비ID)
(B.사용량)AS 사용량합계
FROM 설비 A INNER JOIN 에너지사
。j。
용량 B
에너지코드
사용량합계
1
바람
300
너지코드)
.())
1
용수
200
ORDER BY A. 설비ID, B. 에너지코드;
1
전기
100
④ SELECT A. 설비ID, B.에너지코드, SUM
1
NULL
600
2
용수
300
2
전기
200
2
NULL
500
3
전기
300
비ID), (B. 에너지코드)
, (A.설비ID, B.에
3
NULL
300
너지코드)
)
NULL
바람
300
ORDER BY A. 설비ID, B. 에너지코드;
NULL
용수
500
NULL
전기
600
NULL
NULL
1400
비ID, B. 에너지코드)
, (A. 설비ID, B.에
(B.사용량)AS 사용량합계
FROM 설비 A INNER JOIN 에너지사
용량 B
ON (A.설비ID = B.설비ID)
GROUP BY GROUPING SETS((A.설
최종모의고사 14?
艇捌
GROUP BY GROUPING SETS(A.설
설배D
쁘刪田므ㅂ 놀
ON (A. 설비ID = B. 설비ID)
[결과]
脇
∼
欄
용량 B
설배D
m癬∼m ㅇ嶼쌨臘 륫땄
FROM 설비 A INNER JOIN 에너지사
[테이블 : 에너지사용]
①
m
→
설비명
鞭낟樑盆졌一 椒滾殲一∼∼巒
설ㅂ∥D
纛.
데이터분석온라인:
육전.epassbiz
29
다음 중 아래와 같은 테이블에서 SQL을 실
FROM 고객 A INNER JOIN 월
행할 때 결과로 가장 적절한 것은?
별매출 B
ON (A. 고객번호 = B.고객번호)
〔테이블 : 고객]
GROUP BY A.고객번호
고객번호0기<)
월
001
흥길동
002
이순신
003
ORDER BY RNK;
①
고객번호
고객명
매출액
순위
강감찬
005
이규혁
700
1
004
이상화
004
이상화
700
1
005
이규혁
002
이순신
550
3
001
홍길동
350
4
003
강감찬
350
4
고객번호
고객명
매출액
순위
「테이븜 : 웜병매충1
월
(PK)
고객번호
(PK)
매출액
201301
001
200
201301
002
300
005
이규혁
700
1
201301
003
250
004
이상화
700
2
201301
004
300
002
이순신
550
3
201301
. 005
250
001
홍길동
350
4
201302
001
150
003
강감찬
350
5
201302
002
150
고객번호
순위
004
고객명
매출액
201302
200
201302
005
005
100
이규혁
700
1
201303
002
100
004
이상화
700
1
201303
003
100
002
이순신
550
2
201303
004
200
001
홍길동
350
3
' 201303
005
350
003
강감찬
350
4
고객번호
고객명
매출액
순위
003
강감찬
350
1
,RANK() OVER(ORDER BY 매
001
흥길동
350
1
출액 DESC) AS 순위
002
이순신
550
2
004
이상화
700
3
005
이규혁
700
3
[SQL]
SELECT 고객번호, 고객명, 매출액
FROM (
SELECT A.고객번호
,MAX(A. 고객명)AS 고객명
. SUM(B.매출액)AS 매출액
ㅣ50 부록
(Z)
(E)
\
2023 SQLD Masterbook S
30 다음 중 B_User가 아래의 작업을 수행할 수
●
33 다음 중 옵티마이저와 실행계획에 대한 설명
있도록 권한을 부여하는 DCL로 가장 적절한
으로 부적절한 것을 2개 고르시오.
것은?
① SQL 처리흐름도는 성능적인 측면의 표현
UPDATE A USE.TB A
② 규칙기반 옵티마이저에서 제일 높은 우선
순위는 행에 대한 고유주소를 사용하는
방법이다.
③ sqL 처리흐름도는 인덱스 스캔 및 전쳬
②REVOKE SELECT ON A_User. TB_A
테이블 스캔 등의 액세스 기법을 표현할
FROM B User;
가 반환된다.
', UPDATE ON A User.
④GRANT SELECT
TB A TO B User;
34 아래의 옵티마이저와 실행계획에 대한 설명
장을 실행할 때 WHERE절의 조건 등으
②Procedure, User Defined Function,
나)비용기반 옵티마이저는 테이블, 인덱
스, 컬럼 등 객쳬의 통계정보를 사용하
여 실행계획을 수립하므로 통계정보가
Trigger 객체를 PL/SQL로 작성할 수
변경되면 SQL의 실행계획이 달라질
로 대입할 수 있다.
있다.
③FL/SQL로 작성된 Procedure, User
Defined Function은 전체가 하나의 트
랜잭션으로 처리되어야 한다.
④ Procedure 내부에 작성된 절차적 코드
수 있다.
다)ORACLE의 실행계획에 나타나는 기
본적인 Join 기법으로는 NL Join,
Hash Join, Sort Merge Join 등]
있다.
라)다양한 Join 기법 중 NL Join은 DW
는 p1/sql 엔진이 처리하고 일반적인 SQL
등에서 데이터를 집계하는 업무에 많이
문장은 SQL 실행기가 처리한다.
사용된다.
32 다음 중 실행계획을 통해서 알 수 있는 정보
로 가장 부적절한 것은?
① 가, 다
② 가, 나, 다
③ 나, 다
④ 나, 다, 라
(1) 액세스 기법
(Cost)
② 질의처리 예상비용
③ 조인순서
④ 실제 처리건수
최종모의고사 ㅣ 引
細捌
① 변수와 상수 등을 사용하여 일반 SQL 문
가)ORACLE의 규칙기반 옵티마이저에서
가장 우선순위가 높은 규칙은 Single
row by rowid 엑세스 기법이다.
쁘刪田므ㅂ 擊
적절한 것은?
飇
∼
湘 驪
31 다음 중 PLISQㄴ에 대한 설명으로 가장 부
이
ㅁ ∼노溜 F 稷秘
중에서 옳은 것을 모두 묶은 것은?
짧湘
TO B User;
ㅍ∼므m m隧鞭媛 므鍵
③DENY UPDATE ON A USER.TB A
수 있다.
④ 인덱스 범위 스캔은 항상 여러건의 결과
m聊
(D GRANT SELECT', UPDATE TO B User;
mm穗欠둣 馳漆껍匹驪
SET coll='AAA'
WHERE co12=3
은 고려하지 않는다.
. ,/\
●
* 데이터분석 온라인교육전문epassbiz
35 다음 중 Join 기법에 대한 설명으로 가장 적
37 다음과 같은 데이터가 있는 테이블에서 보기
의 SQL을 실행했을 때 결과를 쓰시오
절한 것은?
(결과행의 수가
①NL Join은 선택도가 낮은
[EXAM]
적은)테이블이 선행 테이블로 선택되는
MATH
KOREAN
②Sort Merge Join은 동등 Join(Equi
90
60
Join)
에서만 사용할 수 있으므로 제약이
null
80
존재한다.
80
90
50
null
null
null
것이 일반적으로 유리하다.
③Hash Join은 결과행의 수가 큰 테이블
을 선행 테이블로 사용하는 것이 성능에
유리하다.
④Hash Join은 Sort Merge Join보다 항
SELECT COUNT(MATH + KOREAN)
상 우수한 성능을 보장한다.
+ COUNT(MATH) FROM EXAM;
36 보기에 있는 빈칸에 들어갈 내용을 작성하시오.
38 다음 SQL을 DECODE문으로 변경하시오.
SELECT
NAME,
DEFT,
POINT,
SUM(POINT) OVER (PARTITION BY
(
SELECT CASE WHEN TYPE = 1
))AS
THEN 'A' WHEN TYPE = 2 THEN 'B'
DEPT POINT FROM EMP;
ELSE 'C' END
FROM M'ZCODE;
ㅘ,,
NAME
DEPT
POINT DEPT POINT
KAIN
A
200
550
SONG
A
350
550
MAK
B
300
570
JOY
B
270
570
LAN
C
150
550
RELLA
C
400
550
3'
보기에 있는 빈칸을 채우시오.
특정 유저에게 object 권한을 부여할 때
(
) 명령을 실행시키고, 회수해야 할
때는 (
) 명렁어를 사용한다.
40 다음 보기에서 설명하는 것은?
Oracle에서 출력 rows를 설정하는 기능
이다.
Mssql에서는 top() 기능으로 대체하여 사
용할 수 있다.
152 부록
부록
제1회 정답 및 해설
露汕데이터모델링의이해
ㅣ
1
③
2
@J
3
0:)
U4
c
「5
④
6
J
7
《3:)
8
〈〕:)
09
c:)
10
④
」·`「“「「“…
“ 「「「「“「
터티의 인스턴스가 자식 엔터티와 같이 소멸되는 경우
는 비식별자관계보다 식별자 관계로 정의하는 것이 더
적합하다.
07 ③
에 따라 2차 정규화로 분리되어야 한다.
데이터모델링의 유의할 사항은 중복성, 비유연성, 비
일관성 등이다.
잊
o8a)
다량 데이터 탐색의 경우 인덱스가 아닌 파티션 및 데
02 C)
부모 엔터티에 데이터가 입력될 때 자식 엔터티0ㅔ 해
이터 클러스터링 등의 다양한 물리 저장 기법을 활용
당 값이 존재하는지의 여부와 상관없0I 입력될 수 있
는 구조로 표현되어 있기 때문oil, 고객엔터티에 새로
하여 성능 개선을 유도할 수 있다. 다만, 하나의 결과
셋을 추출하기 위해 다량의 데이터를 탐색하는 처리가
반복적으로 빈번하게 발생한다면 이때는 반정규화를
고려하는 것이 좋다.
운 고객번호 데이터를 입력하는 것은 주문 엔터티에
해당 고객번호가 존재하고 있는지의 여부와 상관없이
이전 또는 이후 위치의 레코드에 대한 탐색온 window
가능하다.
테이블 적용이 필요할 수 있음.
기본 엔터티
(키엔터티)
란 그 업무0ㅔ 원래 존재하는 정
립적으로 생성이 가능하고 자신은 타 엔터티의 부모의
역할을 하게 된다. 다른 엔터티로부터 주식별자를 상속
받지 않고 자신의 고유한 주식별자를 가지게 된다.
o9
한 테이블에서 많은 칼럼들이 존재할 경우 데이터가
물리적으로 저장되는 디스크 상에 넓게 분포할 가능성
이 커지게 되어 디스크〃0가 대량으로 발생할 수 있
고, 이로 인해 성능이 저하될 수 있음.따라서 트랜잭
04 ③
속성의 명칭은 애매모호하지 않게, 복합 명사를 사용
션이 접근하는 칼럼유형을 분석해서 자주 접근하는 칼
럼들과 상대적으로 접근빈도가 낮은 칼럼들을 구분하
하여 구체적으로 이름을 지어 전체 모델에서 유일성을
여 1:1로 테이블을 분리하면 디스크 〃○가 줄어들어
확보하는 것이 반정규화, 통합 등의 작업을 할 때 혼란
성능을 향상 시킬 수 있다.
을 방지할 수 있는 방법이 된다.
lO ④
05 C)
4개의 항목 모두 관계를 정의할 때 확인해야 하는 항
목이다.
인덱스는 값의 범위에 따라 일정하게 정렬되어 있어
상수값으로 ㅌQUAL 조건으로 조회되는 칼럼이 가장
앞으로 나오고 범위조회 하는 유형의 칼럼이 그 다음
0ㅔ 오도록 하는 것이 인덱스 엑세스 범위를 좁힐 수 있
06 ②
는 가장 좋은 방법이다.
부모엔터티의 인스턴스가 자식의 엔터티와 관계를 가
지고 있었지만 자식만 남겨두고 먼저 소멸될 수 있는
경우 비식별자관계로 연결하는 것이 적절하다. 부모엔
정답 및 해설 153
袒刪
03 ①
쁘腦田峰ㅂ >
function으로 접근가능.
집계 테이블 이외에도 다양한 유형에 대하여 반戮구화
보로서 다른 엔터티와의 관계에 의해 생성되지 않고 독
黛驟瓣爐呱媛
01 ③
r 낀H驕瑯
{관서번호}→{관리점번호, 관서명, 상태, 관서등록일
자}
인 관서번호가 다〈인 엔터티가 함수종속성의 규칙
S ,4 * 데이터분석 온라인교육전문epassbiz
1 TCL
5
2
c)
04 (二)
Q〕
;c)
03
ALTER, DROP COLUMN
7
로 컬럼 삭제 시 활용되는 문
Definition Language)
장 다음과 같다.
ALT타굿TABLE 테이블명
DROP COLUMN 컬럼명
SQL 기본 및 활용
과목 "
LCD-TV
②, ④
10
④
11
②
12
④
15
③
16
C)
17
ㅇ:)
13
C)
06
②
09
QJ
14
.:)
06 ②
②번 SQL-은 REQ_DATE 컬럼Oil NOT NU나- 제약조
건이 있지만 INSERT NT○ 구문에는 REQ_DATE
컬럼이 대입되지 않아 NULL로 입력되므로 오류가 발
생한다.
18 LEFT 〕이N 또는 LEFT OUTER 」이N
19
②
20
(j:>
21
ciD
22
(E)
23
(亘:》
24
②
25 (乙
26
(D
27 (竗
28
③
①, ③
30
③
31
④
32
c)
34
《D, ③
35
④
36
ORE
29
33
②
07 ②,@:
특성
37 LEFT OUTER 」이N 또는 LEFT JOIN
38 내부식별자
트랜잭션이 실행되기 전의 데이터베이스
내용이 잘못되어있지 않다면 트랜잭션이
일관성
실행된 이후에도 데이터베이스의 내용에
잘못이 있으면 안된다.
39 ROLE
40 실행계획
트랜잭션이 실행되는 도중에 다른 트랜잭
고립성 션의 영향을 받아 잘못된 결과를 만들어서
는 안된다.
01 TCL
Transaction를 제어하는 명령어는 ㅜCL(Transaction
Control Language)
이다.
트랜잭션이 성공적으로 수행되면 그 트랜
지속성 잭션이 갱신한 데이터베이스의 내용은 영
구적으로 저장된다.
02 c:)
NULㅗ은 공백문자
(Empty String) 혹은 숫자 0과 동
일하지 않다.
03 (j:>. ③
② SQL 문장 정상적으로 수행되지만, DEPT CODE
컬럼에 NOT NULL- 제약조건이 생성되지 않는다.
NOT NULL- 제약조건이 생성되지 않으면 명시적
으로 DEPT CODE 컬럼Oil NULL을 입력하게 되
면 NULL-이 입력되는 문제가 발생한다.
④ 테이블 생성문과 인덱스 생성문은 정상적으로 수
행되지만,테이블 생성문장에서 이미「RIMARY
KEY를 지정하였으므로 ALTER TABLㅌ 문장에서
오류가 발생한다.
설명
트랜잭션에서 정의된 연산들은 모두 성공
원자성 적으로 실행되던지 아니면 전혀 실행되지
않는 상태로 남아있어야 한다.
08 LCD-TV
ROLLBACK TRANSACTION SP2 문장에 의해
UPDATE 상품 SET 상품명 = '평면-TV WHERE 상품
D='001'이 ROLLBAC< 되었고, 첫 번째 UPDATE
문장만 유효한 상태에서 COMMIㅜ 되었으므로 첫 번째
UPDATE한 내역만 반영 된다. 그러므로 LCD-TV가
된다.
09
논리연산자의 우선순위는 NOT) AND) OR 순이다.
l0 ④
04 c)
고유키
(Unique Key)
로 지정된 모든 컬럼은 N에 값
을 가질 수도 있으므로 ③번 보기로 오류가 있다.
05 ALTER, DROP COLUMN
Table 스키마 변경 시 사용하는 SQL문은 DLL(Data
154 부록
①의 조건은 2이4년 03윌부터 泛월까지 매출금액과
2이5년 03윌부터 2이3년 12월까지의 매출금액의 합
이다.
②의 조건은 ①의 조건과 동일하다.
③의 조건은 2이4년 이월부터 12월까지의 매출금액
과 2이5년 이월부터 12월까지의 매출금액의 합이다.
(전체 데이터의 합)
2023 SQLD Masterbook
④의 조건은 2이4년"월부터 2이5년 03월까지의 매
출금액의 합이며, 연산자의 우선순위
(AND) OR) 에
의해 괄호가 없어도 된다.
11 ②
SET OPERATOR : 합집합은 내JIC刑, 교집합은
INTERSECT, 차집합은 MINUS/EXCEPT 이다.
20 D
가. 결과
Cl
Bi
C2
Al
Bi
Cl
A3
B2
C3
나. 결과
14 ③
GROUP BY를 사용할 경우 GROUP BY 표현식이 아
닌 값은 기술될 수 없다.
A
B
C
Al
Bl
Cl
A2
81
C2
A3
B2
C3
21 (D
15 ③
여러 테이블로부터 원하는 데이터를 조회하기 위해서
는 전체 테이블 개수에서 최소 N-i 개 만큼의 JOIN
조건이 필요하다.
16 ④
DBMS 옵티마이저는 From 절에 나열된 테이블이 아
무리 많아도 항상 2개의 테이블씩 짝을 지어 Join을
수행한다.
SELF JOIN은 하나의 테이블에서 두 개의 칼럼이 연
관 관계를 가지고 있는 경우에 사용함.
22 ③
'현재 부양하는 가족들이 없는 사원들의 이름을 구하
라'를 구현하는 방법은 가족 테이블에 부양사번이 없
는 사원 이름을 사원 테이블에서 추출하면 되고, SQL
문장으로 NOT EXISTS, NOT 隅, LEFT OUTER
JOIN을 사용하여 구현 할 수 있다.
23 ③
17 ③
① 두 번째 ○N 절이 B.사용시간대 BETWEEN C.시
작시간대 AND C.시작시간대 가 되어야 한다.
② 隅N타굿J(게시 구문 오류가 발생한다.
④ BETWEEN JOIN 이란 구문은 없다.구문 오류가
위의 SQL은 약관항목중 단 하나라도 동의를 하지 않
는 회원을 구하는 SQL이다. HAVING 절에서 동의여
부가 N인 데이터가 한 건이라도 존재하는 데이터를 추
출한다.
발생한다.
24 ②
② 뷰의 장점중 독립성은 테이블 구조가 변경되어도
정답 및 해설 ㅣ55
粗刪
Bl
A2
쁘喇 円므ㅂ >
Al
더瑯 며
C
C3
m
ㅇ "닢隨 旺 呻飇
SELECT AVG(COL3) FROM TAB_A: - (20 + 0)!
2건 = 10
SELECT AVG(COL3) FROM TAB_A WHERE
COL1 ) 0: - (20)/1건= 20
SELECT AVG(COL3) FROM TAB A WHERE
COL1 IS NOT NULL: - (20)/1건= 20
B
B2
ㅂ
∼
知
13 ③
A
A3
놂묘m 円耀犯ㅁ 一囊
지문 4는 CASE 문장에서 데이터가 없는 경우를 0으
로 표시해야
(ELSE 0), 다른 3개의 지문과 같은 결과
가 나온다.
山ㅐ
12 ④
19 ②
乙 드 且 보 麟겊볍匹溜
다 : 1:M 조인이라 하더라도 M쪽에서 출력된 행이 하
나씩 단일행 함수의 입력값으로 사용되므로 사용
할 수 있다.
라 : 다중행 함수도 단일행 함수와 동일하게 단일 값만
을 반환한다.
18 LEFT 」이N 또는 LEFT OUTER JOIN
A와 B를 비교해서 B의 JOIN 칼럼에서 같은 값이 있
을 때 B테이블에서 해당 데이터를 가져오고, B의
JOIN 칼럼에서 같은 값이 없는 경우는 B테이블에서
가져오는 칼럼들은 NULL 값으로 채운다. 그리고.
LEFT JOIN으로 ○UTER 키워드를 생략할 수 있다.
,
`"
데이터분석 온라인교육전문 epassbiz
뷰를 사용하는 응용 프로그램은 변경하지 않아도
된다.
25 ④
① CUBE. GROU「긔NG SETS. ROLLUP 세가지 그
룹 함수 모두 일반 그룹 함수로 동일한 결과를 추
출할 수 있다.
② 함수의 인자로 주어진 컬럼의 순서에 따라 다른 결
과를 추출하게 되는 그룹 함수는 ROLLUP 이며,
나열된 컬럼에 대해 계층 구조로 집계를 출력한다.
③ CUBE. ROLLUP. GROUPING SETS 함수들에
의해 집계된 레코드에서 집계 대상 컬럼 이외의
GROUP 대상 컬럼의 값은 NULL을 반환한다.
26 ②
① GROU
「긔NG SETS에 괄호를 사용하지 않아 월별
상퓜D별로 각각 집계되었다.
③ GROUPING SETSOㅔ 월별, 상퓜D별과 전체가
각각 집계되었다.
별, 월별로 집
(프)GROUPING SETS에(월, 상퓜D)
계되었다.
27 ③
윈도우 함수는 걸과에 대한 함수처리이기 때문에 결과
건수는 줄지 않는다.
28 ③
GROUP BY 절의 집합을 원본으로 하는 데이터를
WNDOW FUNCTION과 함께 사용한다면 GROUP
BY 절과 함께 WNDOW FUNCTION을 사용한다고 하
더라도 오류가 발생하지 않으며, 유사개수 컬럼은 상품
분류 코드로 GROUPING된 집합을 원본집합으로 하여
상품분류코드별 평균상품가격을 서로 비교하여 현재 읽
혀진 상품분류코드의 평균가격 대비 켜000 ∼ +10000
사이에 존재하는 상품분류 코드의 개수를 구한 것이다.
④Lee : REVOKE INSERT ON R FROM Kim
CASCADE
- Pan`의 권한은 CASECA[兀 명령어로 받은 권
한을 취소할 수 있다.
30 ③
Trigger는 TCL을 사용할 수 없다.
31 ④
TRIGGER는 테이블과 뷰, 데이터베이스 작업을 대상으
로 정의할 수 있으며, 전체 트랙잭션 작업0ㅔ 대해 발생하
는 TRIGGER와 각 행에 대해서 발생되는 TRIGGER가
있다』
32 ③
실행계획 즉, 실행방법이 달라진다고 해서 결과가 달
라지지는 않는다.
33 ②
34 ①, ③
② REGIST_DATE 조건이 범위 조건이고 DEPTNO
컬럼이 후행 컬럼이므로 효율적인 조건 검색을 할
수 없다.
④ b'tree inde×는 일반적으로 테이블 내의 데이터
중 10% 이하의 데이터를 검색할[대 유리하다.
35 ④
EQUI JOIN에서만 동작하는 JOIN 방식은 HA엶
JOIN이다.
36 ORE
37 LEFT OUTER 」이N 또는 LEFT J이N
29 Q). ③
① Lee : GRANT SELECT. INSERT, DELETE
ON R TO Kim WITH GRANT OPTION;
- Kim에게 테0블 Roll SELECT, INSERT, DELETE
권한을 주면서, Kim 이 다른 유저에게 테이블
R에 동일한 권한을 줄 수 있다.
② Kim : GRANT SELECT, INSERT. DELETE
ON P TO Park;
- Kim이 테이블 P에 Lee에게 받은 권한을 Park
에게 준다.
(③ Lee : REVOKE DELETE ON R FROM Kim
- Kim에서 테이블 P의 DELETE 권한을 취소한다.
ㅣ56 부록
38 내부식별자
39 ROLE
40 실행계획
ㅣ
-
부록
제2희 정답 및 해설
c
02
④
03
②
04
①
u5
②
06
④
07
①
08
④
09
④
10
②
의 본질적인 속성에 해당한다 할 수 있기 때문에 본질
식별자로 볼 수 있다.
07c:)
oia
정규화가 항상 조회 성능을 저하시킨다는 것은 잘못된
전사적 데이터 모델링이나 추상화 수준이 높고 포괄적
생각이며 기본적으로 중복된 데이터를 제거함으로씨
인 수준의 모델링이라면 개념적 데이터 모델링 이라고
조회성능을 향상 시킬 수 있음을 알아야 한다.
하고, 실제로 데이터베이스에 이식할 수 있도록 성능,
08 C)
은 반복적인 속성 나열 형태에서는 각 속성에 대해 or
02 C)
연산자로 연결된 조건들이 사용되는데, 이때 어느 하
일반적으로 사람의 눈은 왼쪽에서 오른쪽, 위쪽에서
나의 속성이라도 인덱스가 정의되어 있지 않게 되면
아래쪽으로 이동하는 경향이 있기 때문에, 데이터 모
'or' 연산자로 연결된 모든 조건절들이 인덱스를 사용
하지 않고 한 번의 전체 데이터 스캔으로 처리되게 되
하면 사람의 눈에 따라가기 편리한 데이터 모델을 작
인덱스를 생성하게 되면 검색속도는 좋아지겠지만 반
대로 너무 많은 인덱스로 인해 입력, 수정, 삭제의 성
성할 수 있다.
능이 저하되므로, 1차 정규화를 통해서 자연스럽게 문
03 ②
제가 해결될 수 있도록 해야 한다.
병원 중 S병원은 1개이므로 엔터티로 성립되지않음,
이름, 주소는 엔터티의 속성으로 인식될 수 있다. 엔터
09 c)
반정규화의 기법은 속성,관계, 테이블0ㅔ 대해서 반정
티의 자격을 갖췄다 할 수 있으므로 '환자’가 엔터티로
규화를 적용할 수 있으며, 하나의 테이블의 전체 칼럼
가장 적절하다고 할 수 있다.
중 자주 이용하는 집중화된 칼럼이 있을 때 디스크
〃○를 줄이기 위해 칼럼들을 별도로 모아 놓는 반 정
규화 기법은 테이블 추가 반정규화 기법중에서 부분테
04a)
(Derived Attribute)
이라 한다.
속성을 파생속성
이블 추가에 해당한다.
柏
데이터를 조회할 때 빠른 성능을 할 수 있도록 하기 우l
한 원래 속성의 값을 계산하여 저장할 수 있도록 만든
《z)
'='로 들어온 조건에 해당하는칼럼이 인덱스의 가장
05 ②
앞쪽에 위치할 때 인덱스의 이용 효율성이 가장 높다
고 할 수 있다.
관계의 기수성을 나타내는 개념은 관계차수에 해당된다.
06 ④
사번은 업무적으로 의미 있는 식별자로 시스템적으로
정답 및 해설 ㅣ57
叔刪
어 성능저하가 나타날 수 있게 되며, 모든 반복 속성에
쁘輜山峰ㅂ 軫
델링에서도 가장 중요한 엔터티를 왼쪽 상단에 배치하
고, 이것을 중심으로 다른 엔터티를 나열하면서 전개
티는 2개 이상의 속성과 2개 이상의 인스턴스를 가져
소위면적으로 표현될 수 있어야 비로소 기본적인 엔터
幟
∼
澔 緘
칼럼에 의한 반복적인 속성값을 갖는 형태는 속성의
원자성을 위배한 세차 정규화의 대상이 된다.이와 같
mP 노麗
∼
網
저장 등의 물리적인 성격을 고려한 데이터 모델링 방
식은 물리적 데이터 모델링이라고 한다.
驪澔 ∼
01
m珊
스의 탄생과 함께 업무적으로 부여되는 사원 인스턴스
ㅈ
一
→
ㅁ罐씬嶼 欽
→
∼
一
→
m
부여된 인조식별자가 아니라 일반적으로 사원 인스턴
데이터 모델링의 이해
緇∼∼珊 `一七潔吻鍵졉쟌慟
*
과목 l
데이터분석온라인교육전문
epassbiz
ii.
과목 "
01
재할 수 있다
④ 외래키 값이 참조 무결성 제약 받을 수 있다.
SQL 기본 및 활용
@
02
②
Q3
(j:)
04
(竗, ③
05 RENAME STADIUM TO STADIUM JSC;
05 RENAME STADIUM TO STADIUM-JSC;
06
① 07 <D 08
ci
09
A : 트랜젝션 또는 Transaction, B : 커밋 또는
Comm띠 C : 롤백 또는 R애)ack
c)
12
②
1t (乙
17
20
<2:)
21
(Z)
25
c:)
26
29
34
<표) 11
15
38
13
②
14
②
C)
18
(j:)
19
①
22
C
23
C)
24
④
c)
27
(E)
28
①
30 (乙
31
(E)
32
@:)
35
(j:)
@:)
10
36 DEPT
②,
《壞:>
④
33 ①, ④
37
5
SELECT DECODE(TYPE, 1, 'A', 2, 'B', 'C')
06 D
TRUNCATE TABLE과 DROP TABLE은 로그를 남
기지 않으므로 개발 기준과 상충된다. 지문 2는 문법
0ㅔ 맞지 않는다.
07a
특정 테이블의 모든 데이터를 삭제하고, 디스크 사용
량을 초기화하기 위해서는 ㅜRUNCATE TABLE 명령
을 사용하여야 한다.
08 ①, ④
DROP
TRUNCASE
DELETE
DDL
DD니일부 [DML
성격 가짐)
뎨,
기l
Rollback
불가능
P에ba아
(
불가능
Commit 이전
RoIlbac ( 가능
Auto
Commit
Auto Commit
사용자 Commit
테이블이 사용했던
以orage 중 최초
테이블 생성시
할당된
데이터를 모두
Delete해도
사용했던
Sorage는
Release되지
않음
FROM MYCODE
39 GRANT, REVOKE
40
rownuma
oia
· As-Is : 비절차적 데이터 조작어
(DML)
는 사용자가
무슨
(What) 데이터를 원하는 지만을 명세한다.
· To-Be : 비절차적 데이터 조작어
(DML)
는 사용자
가 무슨
(What) 데이터를 원하는 지만을 명세하지만,
절차적 데이터 조작어는 어떻게 汨ow) 데이터를 접
근해야 하는지 명세 한다. 절차적 데이터 조작어로는
PL/SQL
(오라클)
.T-SQL(SQL Server) 등이 있다.
02 ②
DELETE FR(가1T; 이후 데이터 현황
· T 테이블 : 두건 모두 삭제됨
(Cascade 옵션): 두건 모두 삭제됨
· S 테이블
(댜K: B
(Set N에 옵션): (:衲山」해당 필드
· R 테이블
칼럼)값이 N몌로 변경됨
03a》
PK = UNIQUE & NOT NULL 특징을 가짐.
UNIQUE는 테이블 내에서 중복되는 값이 없지만,
NULL- 입력이 가능하다.
04 ②, ③
① 테이블 생성시 설정할 수 있다.
② 외래키 값은 NULL 값을 가질 수 없다. - 있다
③ 한 테이블에 하나만 존재해야 한다. - 여러 개 존
158 부록
테이블이
사용했던
以orage를
모두
Release
테이블을
완전삭제함
楡orage만
남기고 R히ease
테이블을
초기상태로 만듬
데이터만 삭제
09 A : 트랜젝션 또는 Transaction
B : 커밋 또는 Commit
C : 롤백 또는 R혜back
l0 ④
① 서비스 번호 칼럼의 모든 레코드가 '001'과 같은
숫자형식으로 입력되어 있어야 오류가 발생하지
않는다.
(2) ⑧와 같이 데이터를 입력하면, 서비스명 컬럼의 데
이터에 대해서 ○RACLㅌ에서는 NULL로 입력된다.
③ ⑧와 같이 데이터가 입력되어있을 때, ORACLE에
서 데이터를 조회하려면 서비스명 IS NULL 조건
으로 조회하여OE 한다.
2023
SQLD
Masterbook길
④ (B)
와 같이 데이터가 입력되어있을 때, SQL Server
에서 데이터를 조회하려면 서비스명 = 로 조회하여
야 한다.
iia
17 ②
순수 관계 연산자에는 SELECT. PROJECT. JOIN.
DIVIDE가 있다.
lB ①
12 ③
오라클에서 날짜의 연산은 숫자의 연산과 같다. 특정 날
짜에 1을 더하면 하루를 더한 결과와 같으므로 1/24/60
=1분을 의미한다, 1/24/(60/10) = 10분과 같으므로
2이5년 1월 10일 10시에 10분을 더한 결과와 같다.
아우터 조인에서 ON절은 조인할 대상을 결정한다. 그
러나 기준 테이블은 항상 모두 표시된다. 결과 건에 대
한 필터링은 WHERE절에서 수행한다.
21 ②
바JION ALL을 사용하는 경우 칼럼 A니AS는 첫 번째
SQL 모듈 기준으로 표시되며, 정렬기준은 마지막
SQL 모듈에 표시하면 됨.
C3
A
C
[3
D
이다.
23 ④
15 ②
GROUP BY HAVING 한 결과에 대해 정렬 연산을
하는 것이다.
") 건수가 2개이며, ORDER BY절 CASE문0ㅔ 의해
999는 0으로 치환되고 그 외는 ㄸ)값으로 정렬된다.
Oracle 계층형 질의에서 루트 노드의 LEVEL 값은 1
이다.
24 ④
④ 오라클 계층형 질의문에서 「RIOR 키워드는
SELECT. WHERE 절에서도 사용할 수 있다.
16 c)
SQL Server의 ㅜOP N 질의문에서 N에 해당하는 값
이 동일한 경우 함께 출력되도록 하는 WITH TIES 옵
션을 ○RDER BY 절과 함께 사용하여야 한다.
25 c:)
EMP 테이블의 (A=1, B=a), (A=2, B=a)
인 2건이 출
력된다.
정답 및 해설 159
細刪
22 C
쁘蠟m峰ㅂ 쑈
광고게시 테이블에서 광고매체D별로 광고시작일자가
가장 빠른 데이터를 추출하는 SQL을 작성해야 한다.
①의 경우 연관 서브쿼리 활용하는 방법이지만, 이를
활용하기위해서는 WHERㅌ절에서 사용해야 한다.
③은 광괴D별로 광고매체D와 광고시작일자의 최소
값을 출력하므로 틀린 결과이다.
c:
은 광고게시의 전체데이터에서 광고매체D의 최소
값과 광고시작일자의 최소값을 가져오므로 틀린 결과
20a
啣
14 ②
주키와 외래키는 영향을 미치지 않는다.
쨩섧ㅂ
隱NULL함수는 결과값이 NULㄴ일 경우 지정된 값을
반환한다. 칼럼의 NULL 값을 확인할 때는 ISNULL을
사용해야 한다.
19 《j:》
귿닢臘 綏
13 ⑦
WHERE 절에 A.고객번호 IN 비000. 12000) 조건
을 넣었다면 정답은 ②번이 되었을 것이나, ON 절에
A.고객번호 IN (11000. 12000) 조건을 넣었기 때문
에 모든 고객에 대해서 출력을 하되 JOIN 대상 데이터
를 고객번호 11000과 12000으로 제한되어 ①번과
같은 결과가 출력된다.
黔一詐一ㅏ佃
라인수를 구하기 위해서 함수를 이용해서 작성된 SQL
이다
· LENGTH : 문자열의 길이를 반환하는 함수
(거R
·
: 주어진 AS(게 코드에 대한 문자를 반환하는
함수 (CHR(10) → 줄바꿈)
· REPLACE : 문자열 치환하는 함수 (REPLACEM(O1,
CHR(10)) → 줄바꿈 제거)
,`
데이터분석 온라인교육전문 epassbiz
26 ③
2이4년에 입사한 사원들은 사원, 부서 정보와 부양가
족수를 추출하는 SQL이다. SELECㅜ 절에 사용된 서
브쿼리는 단일행 연관 서브쿼리로 JOIN 으로도 변경
이 가능하며, FROM절에 사용된 서브쿼리는 Inline
View 또는 Dynamic View이고, WHERE 절에 사용
된 서브쿼리는 다중행 연관 서브쿼리 이다.
27 ③
ROLLUP은 계층 구조를 가진 SUB TOTAL을 생성하
는 함수로 나열된 컬럼의 순서가 변경되면 수행 결과도
변경된다. 위의 SQL 문장은 서비=스ㅢD에 대해서 가입일
자별 가입건수 및 소계와 전체 가입건수를 구하되
Outer Join을 수행하였으므로 가입내역이 없이 서비
쑈 ID(004)
에 대해서도 SUB TOTAL을 출력하고 있다.
28 ②, ③
SQL의 결과를 보면 설베D와 에너자코드 모든 조합에 대
하여 사용량합계를 추출하고 있다. qJBE함수는 인수로
나열된 항목의 가능한 모든 조합에 대하여 GROU
「궈NG을
수행힌빠. 또한 GROURNG SETS은 사용자가 원하는
다양한 조합을 인수로 사용할 수 있다.
34 ②
NL JOIN은 데이터를 집계하는 업무 보다는 OLTP의
목록 처리 업무에 많이 사용된다. DW 등의 데이터 집
계 업무에서 많이 사용되는 JOIN 기법은 HASH JOIN
또는 SORT MERGE JOIN 이다.
35 (D
② Sort Merge Join은 비 동등 Join(NOT Equi
Join)
에서도 사용할 수 있다.
③ Hash Join은 행의 수가 작은 테이블을 선행 테이
블로 선택하는 것이 유리하다.
④ Hash Join은 Sort Merge Join보다 항상 우수한
성능을 보이지만, JOIN 대상 테이블이 JOIN KEY
칼럼으로 정렬되어 있을 때는 SORT MERGE
J이N이 더 우수한 성능을 낼 수도 있다.
36 DEPT
37 5
38 SELECT DECODE(TYPE, 1, 'A', 2, 'B', 'C') FROM
MYCODE
29 (j:)
위의 SQL은 고객별 매출액과 매출 순위를 구하되 동일
순위일 경우 중간 순위를 비워둔 데이터를 추출한다.
30 ④
권한을 부여하는 명령어는 GRANT이며, WHERE 조
건의 데이터를 찾기 위한 SELECㅜ 권한과 데이터 변
경을 위한 UPDATE 권한이 필요하다.
31 ③
RJS그로 작성된 Procedure, Wer Detined Function
은 작성자의 가준으로 트란
「잭션을 분할 할 수 있다.
32 ④
실행계획은 예상 정보이다. 실제 처리 건수는 트레이
스 정보를 통해서 알 수 있다.
33 ①, ④
① 규칙기반 옵티마이저에서 제일 낮은 우선순위는 전
체 테이블 스캔이고, 제일높은 우선순위는 ROWID
를 활용하여 테이블을 엑세스하는 방법이다.
④ 엔덱스 범위 스캔은 결과 건수만큼 반환하지만, 결
과가 없으면 한 건도 반환하지 않을 수 있다
ㅣ60 부록
39 GRANT, REVOKE
40 rownum
“‘ 2023 SQLD Masterbook,.:.,;,.,,
祈 (「
F 「‘7
초판 1소ㅐ 인쇄/2023년 02월 16일
초판 1쇄 발행/2023년 02월 24일
지 은 이 한종구
발 행 인 이재남
발 행 처 이패스코리마
서울시 영등포구 경인로 775 에이스하이테크시티 2동 1004호
전 화 1600 -0522 / 팩 스 02-6345-6701
홈페이지 www. epasskorea.corn
이 메 일 cpla@ epasskorea.corn
등록 번 호 제318-2003-000119호
(2003년 10월 15일)
※ 잘못된 책은 교환해드립니다.
※ 이 책은 저작권법에 의해 보호를 받는 저작물이므로 무단전재와 복제를
금합니다.
본 교재의 저작권은 이패스코리아에 있습니다.
씻
,
Download