데이터베이스2025. 2. 26. 16:11

시험을 준비하면서 핵심적인 부분만 노트를 하여 공개한다.

 

SQLD / SQLP 공통 : 제2과목은 SQL 기본 및 활용 이다.

 

 

2과목. SQL 기본 및 활용

- SQL 기본
- SQL 활용
- 관리 구문

 

 

 

 

 

 

 

DDL
- 데이터 정의어 (Data Definition Language)
- CREATE, ALTER, DROP, RENAME, TRUNCATE

DML
- 데이터 조작어 (Data Manipulation Language)
- SELECT, INSERT, UPDATE, DELETE, MERGE

DCL
- 데이터 제어어 (Data Control Language)
- GRANT, REVOKE

TCL
- 트랜잭션 제어어 (Transaction Control Language)
- COMMIT, ROLLBACK, SAVEPOINT

 

 

 

MS-SQL 은 자동 커밋으로, begin tran 을 사용하지 않으면, DML 문장이 바로 커밋된다.
오라클 은 반대로, DML 문장 사용후, commit / rollback 을 하지 않으면, Lock 이 걸린다.



제약조건

PK (Primary Key)
- 데이터를 고유하게 식별하기 위한 기본키, NULL 값은 불가

Unique Key
- 데이터를 고유하게 식별하기 위한 고유키로, NULL 값은 제약 대상에서 제외

NOT NULL
- NULL 값을 금지

CHECK
- True / False 의 논리식으로 값의 범위를 지정

FK (FOREIGN KEY)
- 테이블간의 관계에서 기본키를 다른 테이블의 외래키로 지정하여 사용




함수

ABS
- 절대값 : 음수 -> 양수

FLOOR
- 내림 함수
- 3.14 => 3, -3.14 => -4

TRUNC
- 숫자 : 지정한 자리수(없으면 소수점) 을 날려버리는 함수
- 날짜 : 날짜의 시간을 날려 버림, YY : 년도 빼고 나머지 절사, MM : 년/월 빼고 나머지 절사
- 3.14 => 3, -3.14 => -3

ROUND
- 반올림

TO_NUMBER, TO_DATE, TO_CHAR
- 숫자, 날짜, 문자 변환

LOWER, UPPER
- 소문자, 대문자 변환

SUBSTR, LENGTH
- 문자열 자르기, 문자열 길이

LTRIM, RTRIM, TRIM
- 문자열 왼쪽 공백 제거, 오른쪽 공백 제거, 양쪽 공백 제거

COALESCE
- COALESCE(v1, v2, v3) : 앞에서 부터 NULL 이 아닌 최초값

NVL
- NVL(expr, v1) : expr 이 NULL 이면 v1, NULL 이 아니면 expr

NVL2
- NVL2(expr, v1, v2) : expr 이 NULL 이면 v2, NULL 이 아니면 v1

ISNULL
- MSSQL 함수, NVL 과 동일

NULLIF
- NULLIF(expr, v1) : expr 과 v1 이 같으면 NULL, 같지 않으면 expr

DECODE
- DECODE(expr, c1, v1, c2, v2, v3) : expr 이 c1 이면 v1, c2 일때 v2, 그외에는 v3

LPAD, RPAD
- 왼쪽에 문자 채우기, 오른쪽에 문자 채우기
- LPAD('ABCD', 10, ' ') =>  '      ABCD' => 왼쪽에 스페이스를 채워서 10자리 문자로 만든다.

집계함수
- COUNT, SUM, AVG, MAX, MIN, STDDEV, VARIAN
- 갯수, 합계, 평균, 가장큰값, 가장작은값, 표준편차, 분산
- NULL 은 제외된다.


CASE 문
- case expr when 1 then '참' else '거짓' end : expr 이 1이면 참 아니면 거짓
- case when expr <= 10 then '참' else '거짓' end : expr 이 10 이하면 참, 아니면 거짓


GROUP BY / HAVING
- 집계함수 Count 에서 데이터가 없으면 0 이 나오지만, having 절에 의해 데이터가 없으면, no records 이다.


ORDER BY
- 기본정렬은 오름차순 ASC 이고, 내림차순은 DESC 이다.
- 오라클은 NULL 이 가장 큰 값으로 간주하여, 오름차순에서 가장 아래에 위치한다.
- MSSQL 은 NULL 이 가장 작은 값으로 간주하여, 오름차순에서 가장 위에 위치한다.



SELECT 실행순서
5. SELECT
1. FROM
2. WHERE
3. GROUP BY
4. HAVING
6. ORDER BY



TOP N 쿼리

MSSQL
select top 10 * from order by col1

Oracle
select *
from (
     select *
      from
      order by col1
)
where rownum <= 10




INNER JOIN
- 조건에 일치하는 행만 반환한다.
from A inner join B on A.col1 = B.col1
from A join B on A.col1 = B.col1
from A, B where A.col1 = B.col1

- using 사용
from A join B using(col1)


OUTER JOIN
- Join 조건에 일치하는 행과, 일치하지 않는 행도 반환한다.

 


left outer join

from A left outer join B on A.col1 = B.col1
from A left join B on A.col1 = B.col1
from A, B where A.col1 = B.col1(+)

- 조건에 일치하는 행과 왼쪽 테이블 기준으로 오른쪽에는 일치하지 않는 행도 반환한다.
- A, B 테이블에 일치하는 데이터와, A에만 있고 B에는 없는 행도 반환


right outer join

from A right outer join B on A.col1 = B.col1
from A right join B on A.col1 = B.col1
from A, B where A.col1(+) = B.col1

- 조건에 일치하는 행과 오른쪽 테이블 기준으로 왼쪽에는 일치하지 않는 행도 반환한다.
- A, B 테이블에 일치하는 데이터와, B에만 있고 A에는 없는 행도 반환


full outer join

from A full outer join B on A.col1 = B.col1


- 조건에 일치하는 행과 양쪽 테이블의 조건에 일치하지 않는 행도 반환한다.
- A, B 테이블에 일치하는 데이터와, A에만 있고 B에는 없는 행, B에만 있고 A에는 없는 행도 반환


NATURAL JOIN
- A, B 테이블에 같은 이름의 모든 컬럼이 자동으로 연결된다.
- SELECT 절에 EMP.col 테이블명을 지정해서 쓰면 오류가 발생한다.

from A natural join B


CROSS JOIN
- join 조건이 없는 경우, 테이블간에 모든 데이터 조합으로 행을 반환한다.
- M * N 의 행 조합

from A cross join B



집합 연산자

UNION
- 합집합, 중복데이터는 제외

UNION ALL
- 합집합, 중복데이터 유지

INTERSECT
- 교집합, 중복데이터는 제외

EXCEPT (오라클 MINUS)
- 차집합
- A 에서 B 의 데이터를 제외한 결과



계층형질의

START WITH
CONNECT BY

조직도와 같은 Tree 구조의 데이터를 조회할 때 사용한다.

가상컬럼
level : 해당 행이 ROOT 데이터이면 1, 하위 데이터이면 2, 그 하위이면 +1 씩 증가
connect_by_isleaf : 해당 행이 LEAF 데이터 이면 1, 아니면 0
connect_by_iscycle : 중복 참조이면 1, 아니면 0 : 현 데이터의 하위 데이터가, 하위 데이터의 현데이터로 지정한 경우, 무한 루프에 빠지게 된다.

select level, ( lpad(' ', 4 * (level-1)) || empno ) as empno
, connect_by_isleaf as isleaf
from emp
start with empno is null
connect by prior mgr = empno;

start with 조건에는 root 노드를 지정하고
connect by 에는 하위노드를 찾는 방법을 지정한다.

prior 에 지정된 컬럼에서 상대편 컬럼으로 찾아간다.

CONNECT BY PRIOR 하위 컬럼 = 상위 컬럼 : 상위 -> 하위로 가는 순방향 전개
CONNECT BY PRIOR 상위 컬럼 = 하위 컬럼 : 하위 -> 상위로 가는 역방향 전개

ORDER SIBLINGS BY
- order by 와 같이 정렬을 수행하나, 같은 level 간의 정렬 순위를 지정한다.

NOCYCLE
- connect by NOCYCLE prior mgr = empno
- 데이터 입력실수로, 이전에 전개된 데이터가 다시 나타나는 현상이 발생하면 무한루프에 빠지게 된다.
- 이전에 전개된 데이터가 다시 나오면 전개를 멈추는 옵션.



서브쿼리
- 괄호로 묶인 SELECT 절

단일행 서브쿼리
- 결과행이 1개만 나오는 서브쿼리
- select 쿼리 안에 단일 값 조회시 사용되거나, wehere 절의 비교 연산자 등에 온다.

다중행 서브쿼리
- 결과행이 n 개 나오는 서브쿼리
- from 절의 쿼리에 오거나, where 절의 in , all, any, some, exists 등에 온다.



뷰(VIEW)

독립성 - 테이블구조가 변경되어도, 뷰를 사용하는 응용프로그램은 변경할 필요가 없다.
편리성 - 복잡한 질의나 자주 사용하는 질의를 뷰로 만들면, 쿼리가 간단해 진다.
보안성 - 숨기고 싶은 정보는 제외하고, 정보(컬럼) 를 제공할 수 있다.



그룹 함수

ROLLUP
- 지정된 컬럼의 소계와 합계를 구하는 함수
- 인수의 순서에 따라 결과가 달라진다.

group by rollup(dname, job)
- dname 별 소계, 전체 합계를 구한다.

 


CUBE
- 가능한 모든 조합의 소계와 합계를 구한다.
- 인수의 순서는 상관이 없다.

group by cube(dname, job)
- 모든 dname 별 소계, job 별 소계, 전체 합계를 구한다.


GROUPING SETS
- 소계 / 합계를 직접 선택하여 지정할 수 있는 함수
- () 또는 null 을 쓰면 전체 합계를 구한다.

group by grouping sets( (dname, job), (dname), () )
- 이렇게 쓰면 group by rollup(dname, job) 과 동일하다.

group by grouping sets( (dname, job), (dname), (job), () )
- 이렇게 쓰면 group by cube(dname, job) 과 동일하다.

 


GROUPING 함수
- select 절에서 해당 행이 소계에 사용된 행인지 여부를 판단할 때 사용한다.

select (case when grouping(job) = 1 then 'JOB합계' else job end )
- 부서별 모든 소계행인경우, JOB합계로 표시하고, 아닌경우 job 명칭을 표시한다.




Window 함수

partition by

sum(sal) over(partition by deptno)

sum(sal) over(partition by deptno group by emp range between unbounded preceding and current ro)

rows
- 물리적인 결과 행의 수를 지정한다.

range
- 논리적인 값에 의한 범위를 지정한다.

n preceding
- n 개 앞의 행

unbounded preceding
- 첫번째 행

n following
- n 개 뒤의 행

unbounded following
- 마지막 행

current row
- 현재 행



RANGE UNBOUNDED PRECEDING
SUM(sal) OVER(partition by mgr order by sal range unbounded preceding)
= RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 와 동일하다.
- 파티션 내에서 첫번째 행 부터 현재 행까지의 합계 즉 누적합을 표시

ROWS BETWEEN 1 PRECEDING AND 1  FOLLOWING
SUM(sal) OVER(partition by mgr order by sal rows between 1 preceding and 1 following)
- 현재행+앞에1행+뒤에1행 합계

RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
SUM(sal) OVER(partition by mgr order by sal range between current row and unbounded following)
- 현재행부터 마지막 행까지 합계



CTE(Common Table Expression)
- 일시적인 결과 세트를 정의하고 이를 나중에 쿼리에서 참조할 수 있게 하는 방법

CTE와 서브쿼리의 차이점
- 가독성: CTE는 복잡한 쿼리를 여러 부분으로 나누어 가독성 높여준다.
- 재사용성: CTE는 동일한 쿼리 내에서 여러 번 재사용 가능
- 성능: CTE와 서브쿼리의 성능 차이는 데이터베이스 시스템과 쿼리의 복잡도 따라 다름
- CTE는 재귀적 쿼리에 유리


WITH kor_restaurants AS (
     SELECT *
      FROM restaurants 
      WHERE rest_type = 'kor'
)

재귀적 CTE

WITH cte (n) AS 
(
      SELECT 1
      UNION ALL
      SELECT n+1 FROM cte WHERE n < 5
)



NTILE
- 전체건수를 지정한 건수로 N등분

LAG
- N개 앞의 행 값 조회

LEAD
- N개 뒤의 행 값 조회



where in (list) 에서 list 에 null 이 있으면, 실제 null 인 데이터는 제외 된다.
- where ID in (1, 2, null) : ID 가 null 인 데이터는 제외되고, 1이나 2인 데이터만 조회된다.



순위

ROW_NUMBER()
- 1,2,3 순차적으로 순위를 매김

RANK()
- 1,1,1,4,5,6 동일 값이면 같은 순위를 갖고, 다음순위는 건너뜀.

DENSE_RANK()
- 1,1,1,2,3,4 동일 값이면 같은 순위를 갖고, 다음순위로 넘어감.




PIVOT
- 행을 열로 변환한다.

SELECT *
FROM 테이블
PIVOT ( 그룹합수(집계컬럼) FOR 피벗컬럼 IN (피벗컬럼값 AS 별칭 ... )

SELECT job, d1, d2, d3 
FROM emp PIVOT ( 
      SUM(sal) FOR deptno IN ('10' AS d1, '20' AS d2, '30' AS d3) 
)


UNPIVOT
- 열을 행으로 변환한다.


SELECT *
FROM 테이블
UNPIVOT ( 컬럼별칭(값) FOR 컬럼별칭(열) IN (피벗열명 AS '별칭', ... )

SELECT col_nm, col_val
FROM emp UNPIVOT (
      col_val FOR col_nm IN (col1, col2, col3)
)

 

 

 

Posted by 헝개
데이터베이스2025. 2. 25. 17:15

시험을 준비하면서 핵심적인 부분만 노트를 하여 공개한다.

 

SQLD / SQLP 공통 : 제1과목은 데이터 모델링의 이해 이다.

 

 

1과목. 데이터 모델링의 이해

- 데이터 모델링의 이해
- 데이터 모델과 SQL

 

 

 

 

 

엔터티
- 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적, 영속적으로 존재하는 단위
- 인스턴스의 집합

속성
- 엔터티에서 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위
- 엔터티에 속하는 개체들의 특성
- 엔터티를 설명하고 인스턴스의 구성요소가 된다.
- 하나의 속성은 하나의 속성값을 가진다.

관계
- 엔터티와 엔터티의 관계
- 두개의 엔터티로부터 인스턴스를 연관짓는 행위
- 인스턴스 간에 논리적인 연관관계로 존재 또는 행위로서 연관성이 부여된 상태



도메인
- 속성이 가질 수 있는 값의 범위
- 엔터티 내에서 속성에 대한 데이터 타입, 크기, 제약사항을 지정하는 것.



엔터티 분류

유형무형에 따른 분류
- 유형 엔터티 : 물리적인 형태가 있고, 지속적으로 활용 : 사원, 상품
- 개념 엔터티 : 물리적인 형태가 없고, 겨념적 정보로 구분 : 조직, 보험
- 사건 엔터티 : 업무에서 발생되는 자료 : 주문, 수강

발생시점에 의한 분류
- 기본 엔터티 : 업무에 독립적으로 존재하는 정보 : 사원,부서,고객,상품 등
- 중심 엔터티 : 기본엔터티에서 발생하는, 업무의 중심이 되는 엔터티 : 계약,주문 등
- 행위 엔터티 : 2개이상의 부모엔터티로부터 발생 : 주문내역,계약변경이력 등



스키마
외부 스키마 : 데이터베이스의 사용자 관점
개념 스키마 : 통합 관점, 데이터베이스 관리자 관점
내부 스키마 : 물리적 관점, 시스템 설계자 관점


관계(Relationship) 표기법
- 관계명
- 관계차수 : 1:1, 1:N, N:N
- 관계선택사양 : 필수, 옵션

식별자
- 엔터티를 대표하는 속성으로, 인스턴스를 구분할 수 있다.

주식별자/보조식별자
- 주식별자 : 유일성, 최소성, 존재성, 불변성을 만적하는 대표 식별자
- 보조식별자 : 유일성은 만족하지만 대표성을 만족하지 못하는 식별자

내부식별자/외부식별자
- 내부식별자: 엔터티 내부에서 스스로 생성되는 식별자
- 외부식별자: 다른 엔터티와 관계로 생성되는 식별자

단일식별자/복합식별자
- 단일식별자 : 하나의 속성
- 복합식별자 : 2개 이상의 복합 속성

본질식별자/인조식별자
- 본질식별자 : 비지니스 프로세스에서 만들어지는 식별자
- 인조식별자 : 인위적으로 만들어지는 식별자




데이터베이스 모델링의 특징
- 추상화, 단순화, 명확화

모델링의 3단계
- 개념적 모델링 : 추상적, 업무 중심적, 포괄적인 수준의 모델링
- 논리적 모델링 : 세부속성,식별자,관계를 표현, 정규화
- 물리적 모델링 : 데이터베이스 성능을 고려한 설계


정규화
- 데이터의 일관성, 유연성, 중복을 제거하고 데이터를 분해를 하는 과정
- 이상현상을 제거하는 설계 기법이다.

제1정규화
- 속성의 원자성 확보 : 속성은 하나의 속성값을 가져야 한다.
- 기본키(PK) 설정

제2정규화
- 기본키 중에 특정컬럼에만 종속된 경우, 부분 함수 종속성 제거

제3정규화
- 이행함수 종속 제거


이상현상
- 삽입이상 : 데이터 삽입시, 의도치 않은 값들도 삽입 되는 현상
- 갱신이상 : 데이터 수정시, 일부 데이터만 갱신되어, 데이터의 일관성 유지가 안되는 현상
- 삭제이상 : 데이터 삭제시, 의도와 다른 값들이 삭제되는 현상


반정규화
- 데이터베이스의 성능 향상을 위해 데이터의 중복을 허용하거나, 조인을 줄이는 목적으로 하는 성능 향상 방법


 
분산데이터베이스
- 병렬처리로 빠른 응답이 가능, 용량확장이 쉬움
- 보안이나 무결성이 안좋다. 여러 네트워크에 분산되어 관리와 통제가 어렵다.




트랜잭션의 4가지 특징 (ACID)
- 원자성 (Atomicity) : 분해가 불가능한 업무의 최소단위로, 전부 처리되거나, 전부 처리되지 않아야 한다.
- 일관성 (Consistency) : 트랜잭션 결과로 데이터베이스 상태가 모순되지 않아야 한다.
- 격리성 (Isolation) : 트랜잭션의 중간 값에 다른 트랜잭션이 접근할 수 없다.
- 영속성 (Durability) : 트랜잭션의 결과가 데이터베이스에 영속적으로 저장된다.



NULL 값
- 아직 정해지지 않은 미지의 값

NULL 비교는 IS NULL / IS NOT NULL 을 사용한다.

where in (list) 에서 list 에 NULL 이 있으면, 실제 NULL 인 데이터는 제외 된다.
- where ID in (1, 2, NULL) : ID 가 NULL 인 데이터는 제외되고, 1이나 2인 데이터만 조회된다.


NULL 과의 연산은 NULL 이 된다.
NULL + 10 => NULL

집계함수에서 NUL 값이 있다면 제외된다.
- SUM, COUNT 등

 

Posted by 헝개
책책책2025. 2. 23. 15:20

 

 

 

 

 

이 책은 SQLD 시험을 준비하기 위한 수험서이다.

출판사로부터 도서를 제공받아서 서평을 작성하고 있지만, "객관적인 관점" 에서 사실적으로 작성할 것이다.

 

이책은 기존에 출판된 책을, 2025년에 개정판으로 내놓은 책이다.

2024년부터 SQLD 시험의 커리큘럼에 약간의 변화가 생겼기에, 새로 변경된 항목에 따라 책도 2025년 개정판으로 출판된 책이다.

 

 

 

 

 

 

변화된 사항으로는 과목 및 문항수는 동일하지만,

 

1. 각 과목의 주요항목에 변화가 생겼고,

2. 단답식 문항이 없어졌다.

 

 

 

이 책은 약 430페이지 정도인데, 두깨가 다른 책에 비해 얇다. 아주 얇다.

책을 펼쳐보면, 얇은 종이가 사용된 점이 바로 느껴진다.

 

살짝 뒷면이 비쳐지기는 하지만 큰 문제는 없고, 종이 질이 안좋다거나 하지는 않다.

가벼워서 가지고 다니기에는 좋을 수 도 있겠다.

 

장점으로는 책 가격을 낮출 수 있었던 것 같다.

페이지 수에 비해, 다른책들보다는 다소 저렴한 가격이 책정되었다.

 

폰트나 폰트사이즈도 적당하고, 표 형태도 깔끔하다.

 

커리큘럼에 있는 ERD 표나 삽입 이미지는 직접 제작한 것인지 깔끔한 편이다.

다만, 모의고사에 나오는 ERD 이미지는 인터넷에서 그대로 복사해서 넣었는지, 퀄러티가 좋지 않다.

 

 

 

SQLD 시험이 문제은행으로 출제되는 문제도 아니고,
데이터베이스 모델링부터 쿼리를 읽고 이해하는 것까지
전체적인 데이터베이스 초증급 수준의 개발 실력을 검증하는 시험이다 보니,

이 책에서도 단순히 문제를 보고 답을 잘 찾는 방법을 가르쳐 주는 것이 아니라,
이해를 하고 문제를 풀어 나갈 수 있도록 해주고 있다.

 

 

 

 

[SQLD 실습 환경 준비하기]

 

실제로 PC 에 데이터베이스를 설치하는 방법부터 설명을 해주고 있고,

설치가 어려울 경우, 온라인으로 쿼리를 테스트 할 수 있는 방법을 안내해주고 있다.

 

다만, 이 책이 개정판인데 실습환경 따라하기를 해보면, 이전 버전의 내용을 그대로 옮겨넣은 듯 하다.

(리비전이 되지 않았다.)

 

 

PART 01 데이터 모델링의 이해

 

PART 02 SQL 기본 및 활용

 

PART 03 실전 모의고사

 

 

충 3개의 파트로 나뉘어져 있다.

 

책 구성은 과목별로 PART 01, 02 로 나눠져 있고, PART 03 은 모의고사 5회분이 제공된다.

 

 

PART 01 데이터 모델링의 이해

  • Chapter 01 데이터 모델링의 이해
  • Chapter 02 데이터 모델과 성능 (SQLD 커리큘럼은 데이터 모델과 SQL 이다.)
  • 출제예상문제

 

PART 02 SQL 기본 및 활용

  • Chapter 01 SQL 기본 (SQLD 커리큘럼의 관리 구문 항목이 SQL 기본에 들어있다.)
  • Chapter 02 SQL 활용
  • 출제예상문제

 

 

각 과목, 과목을 학습을 하고 나서, 과목별로 예상문제를 풀어보는 형태이다.

 

모든 학습이 끝나면, 모의고사를 풀어보면서, 자신의 실력을 확인 또는 검증해 볼 수 있는,

정석대로 시험을 준비하는 사람에게 잘 맞는 구조로 책이 구성되어 있다.

 

아쉬운 점은 출제예상문제가 과목별로 구분되어 있는데,

이를 Chapter 별로 분리해서 각 Chapter 가 끝나면, 예상문제를 풀어볼 수 있도록 했으면 좋지 않았을까 싶다.

 

또, 아쉬운 점은 문제의 정답이 문제 바로 아래에 나와 있다는 점이다.

이렇게 되면, 문제를 푸는게 아니라 문제와 정답을 동시에 볼 수 밖에 없다.

 

 

 

[실전모의고사]

 

전체적으로 커리큘럼과 예상문제까지 풀어보고 나서,

실제 시험에 앞서 자신의 실력을 검증하는 것이 바로 모의고사 라고 할 수 있다.

 

아쉬운 점은, 이 책에 실린 실전 모의고사는 인터넷에 떠도는 기출문제 라는 점이다.

 

기출 문제를 풀어보면 분명히 시험에 도움이 되는것은 자명하다.

또한, 이 책에만 있는 문제풀이를 볼 수 있는 점도 상당히 도움이 될 것이다.

 

그렇지만,

2024년 부터 시험 커리큘럼에 약간의 변화가 있었고, 단답식 문제도 사라 졌는데,

이책의 모의고사는 그에 따른 변화를 주지 못했다는 점이다.

(저작권은 모르겠지만) 인터넷에 있던 기출문제기 때문에, 오타나 틀린 답도 있다.

 

 

 

SQLD 자격증 수험서로써, 이 책에 시험에 필요한 모든 커리큘럼과 범위를 포함하고 있기 때문에,

따로 인터넷을 찾아보거나 다른 책을 참조 할 필요 없이

이 책 한권으로 SQLD 자격증을 따는데는 무리가 없을 것으로 생각된다.

(비 전공자라도 자격증을 따는데 많은 도움이 될 것으로 보인다.)

 

 

 

책을 받고나서,

우선 모의고사 5회분을 풀어보고, 책의 오류 부분을 아래에 정리해뒀다.

개정판을 내놓으면서, 오타나 잘못된 답에 대해서 수정이 되지 않은 부분이 아쉽다.

 

 

 

 

[오류표]

 

페이지번호 위치 오류 수정
269 10번문제 가. 항목 회원변호 회원번호
274 27번문제 보기4번 KING 은 최상위 계층이다. A 는 최상위 계층이다.
274 28번문제 정답 2번 정답 1번, 2번
MS-SQL 은 정답이 1번, Oracle 에서는 2번이다.
문제에서는 DBMS 가 Oracle 이라는 설명이 없다.
279 42번 문제 정답 2번 정답 2번, 4번
보기 4번의 RESULT 는 아래와 같아야 정답이 2번이다.
MANAGER A
SALESMAN C
보기 4번의 SELEC ⇒ SELECT
291 26번 문제 문제 예시 테이블 오류 SQLD_26_04 테이블표가 빠져있다.
295 33번 문제 정답 2번 정답 1번, 2번
MS-SQL 은 정답이 1번, Oracle 에서는 2번이다.
문제에서는 DBMS 가 Oracle 이라는 설명이 없다.
299 46번 문제 UPPER(sqldeveloper) UPPER(’sqldeveloper’)
302~303 05번, 09번 문제 같은 모의고사 회차에 동일한 문제가 2번 나와있다.  
310 23번 문제 보기 3번 DCL : ROLLBACK TCL : ROLLBACK

정답이 4번이 되려면, 3번은 TCL 이 되어야 한다.
312 27번문제 SQL 코드 CONNECT BY PRIOT CONNECT BY PRIOR
357 41번 문제 ERD 그림에 오류가 있다. 고객테이블에 주문ID(FK) 가 들어있고,
주문테이블에는 고객ID 가 2개가 들어 있다.
370 32번 문제 해설 RTIM 오른쪽 공백 제거 : ‘EBAC’ RTIM 오른쪽 공백 제거 : ‘ EBAC’
394~395 44번 문제 해설 정답 C 정답 D

[Result]
A
C
B

가 아니라.


[Result]
A
C
B
D

이다.
397, 398 3번 문제, 4번 문제 해설 그 없무에 그 업무에
403 20번 문제 해설 정답 4 정답 3
426 15번 문제 해설 정답 2 정답 3
보기 1번의 ISNULL 은 oracle 이 아닌 mssql 의 함수이고, 파라미터도 2개만 써야 한다.
보기 2번의 nvl 은 파라미터가 3개라서 오류가 나고, 2개로 고친다면, 앞에 20 * 0.1 이라 결과는 12가 나온다.
보기 3번 nvl2 가 정답이다.
429 33번 문제 해설 정답 2 정답 1, 2 모두 정답
보기 1번 alter column 은 ms-sql
보기 2번 modify 는 oracle
문제에 DBMS 특정이 없기 때문에, 1, 2번 모두 정답이다.
430 41번 문제 해설 정답 3 정답 1,3,4
1번은 고객테이블 컬럼이 3개인데, 2개만 넣어서 오류
3번은 주문에 고객ID 가 있어야하는데 NULL 을 넣어서 오류
4번은 주문테이블은 컬럼이 4개인데, 3개만 넣어서 오류
431 47번 문제 해설 정답 RIGHT OUTER JOIN 정답 2
객관식 문제이기 때문에 2번이 정답
431 49번 문제 해설 정답 9 정답 2
객관식 문제이기 때문에 2번이 정답

 

 

 

 

 

"김앤북 출판사로부터 도서를 제공받아 이 서평을 작성하였음을 알려드립니다."

 

'책책책' 카테고리의 다른 글

아가씨와 밤, 기욤 뮈소  (0) 2019.04.10
파이 이야기 (라이프 오브 파이), 얀 마텔  (0) 2019.03.28
주홍글자, 너새니얼 호손  (0) 2019.02.18
고양이, 베르나르베르베르  (0) 2019.01.28
그 후에, 기욤 뮈소  (0) 2019.01.22
Posted by 헝개