저자직감 동영상 감의 「> 이패스비즈 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일) ※ 잘못된 책은 교환해드립니다. ※ 이 책은 저작권법에 의해 보호를 받는 저작물이므로 무단전재와 복제를 금합니다. 본 교재의 저작권은 이패스코리아에 있습니다. 씻 ,