728x90

 

27번

VIEW

  1. 독립성 : 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다.
  2. 편리성 : 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있다. 또한 해당 형태의 SQL문을 자주 사용할 때 뷰를 이용하면 편리하게 사용할 수 있다.
  3. 보안성 : 직원의 급여정보와 같이 숨기고 싶은 정보가 존재한다면 해당 칼럼을 빼고 생성함으로써 사용자에게 정보를 감출 수 있다.

 

 

28번

GROUP BY

GROUP BY구의 기본적인 문법을 확인하는 문제

SELECT구에는 GROUP BY절에 있는 칼럼이 나와야 한다.

 

 

29번

교차엔터디(Intersaction Entity)

M:M의 관계를 해소하려는 목적으로 만들어진 엔터티 [ex> M:M -> 1:M]

독립 엔티티[Kernel Entity, Master Entity]
사람, 물건, 장소 등과 같이 현실세계에 존재하는 엔터티

업무중심 엔터티[Transaction Entity]
Transaction이 실행되면서 발생하는 엔터티

종속 엔터티[Dependent Entity]
주로 1차 정규화로 인해 관련 중심엔티티로부터 분리된 엔터티

교차 엔티티[Intersaction Entity]
M:M의 관계를 해소하려는 목적으로 만들어진 엔터티 
ex> M:M -> 1:M

 

 

 

30번

CORRELATED SUB QUERY(상호연관 서브쿼리)

메인쿼리의 값을 서브쿼리에서 주입을 받아서 비교를 하는 것

 메인쿼리의 값을 서브쿼리에서 주입을 받아서 비교를 하는것으로 상호연관 서브쿼리(CORRELATED SUB QUERY) 이다.

SELECT A.EMPNO, A.ENAME
FROM EMP A
WHERE A.EMPNO = (SELECT 1 FROM
EMP_T B WHERE A.EMPNO = B.EMPNO);

서브쿼리에 *(A.EMPNO 값을 매번 가져와서 대입을 해야하므로성능이 매우 좋지않다.)

 

 

 

36번

SUBKPI,MAINKPI

20,10을 각각 대입

0,30을 각각 대입

SUBKPI가 0인건 없고 20인건 있어서 20,10이 TRUE로 WHERE발동

 

 

 

37번

서브쿼리 설명

  1. 서브쿼리에서는 정렬을 수행하기 위해서 내부에 ORDER BY를 사용하지 못한다.
  2. 서브쿼리에 있는 칼럼을 자유롭게 사용할수 없다
  3. 여러 개의 행을 되돌리는 서브쿼리는 다중행 연산자를 사용해야 한다.
  4. EXIST는 TRUE와 FALSE만 되돌린다

 

 

 

38번

TO_DATE(), TO_CHAR()

TO_CHAR() : 날짜/숫자형 데이터를 문자형 데이터로 변경

TO_DATE() : 문자/숫자형 데이터를 날짜형 데이터로 변환

데이트(날ㅉ) 타입을 데이트타입으로 바꾸면 에러남. 그래서 1번 안됨

T0_DATE()로 ‘YYYYMMDD’ 형식 출력가능

 

 

 

39번

FETCH(읽어오기) 위해 해야할 것은

CURSOR OPEN (*CURSOR순서 : 선언 → OPEN → FETCH → CLOSE)

CURSOR(DB의 연결 포인트, 연결점)

  • SQL 커서는 Oracle 서버에서 할당한 전용 메모리 영역에 대한 포인터이다.
  • 질의의 결과로 얻어진 여러 행이 저장된 메모리상의 위치
  • 커서는 SELECT 문의 결과 집합을 처리하는데 사용된다.

 

명시적 커서

사용자가 직접 정의해서 사용하는 커서이고 묵시적(암시적) 커서는 데이터베이스가 내부적으로 사용하는 커서이다.

모든 CURSOR는 사용하기 전에 반드시 선언을 해주어야 한다

 

 

 

42번

NESTED LOOP JOIN

RANDOM ACCESS로 인해 부하가 걸림

 

HASH JOIN

- 조인 컬럼의 인덱스가 존재하지 않을 경우에도 사용할 수 있다.
- 해시 함수를 이용하여 조인을 수행하기 때문에 '='로 수행하는 조인으로 동등 조건에만 사용가능
- 해시 함수가 적용될 때 동일한 값을 항상 같은 값으로 해싱됨이 보장된다.
- HASH JOIN 작업을 수행하기 위해 해시 테이블을 메모리에 생성해야 한다.
- 메모리에 적재할 수 있는 영역의 크기보다 커지면 임시 영역(디스크)에 해시 테이블을 저장한다.
- HASH JOIN을 할 때는 결과 행의 수가 적은 테이블을 선행 테이블로 사용하는 것이 좋다.
- 선행 테이블을 Build input이라 하며, 후행 테이블을 Prove input이라 한다.

 

 

 

43번

2,3차 정규화

 2차 정규화 → 3차 정규화(종속 존재를 분해) 학번,코스코드(FK),평가코드(FK) = 3개

 

 

45번

ROLE

ROLE은 데이터베이스에서 OBJECT(테이블, 프로시저, 뷰) 등의 권한을 묶어서 관리할 수 있다.

 

 

49번

레코드

레코드 = 데이터가 들어가있는 행(ROW)

SQLD39_42 테이블의 COL1 은 {1, 1, 2, 3, 3} 이렇게 5개가 있습니다.COL1 을 하나씩 불러오면

문제 WHERE 조건이 A.COL1 = B.COL1 이므로A.COL1 = 1 일때 B.COL1 = 1 인 레코드 →2개

A.COL1 = 1 일때 B.COL1 = 1 인 레코드 →2개
A.COL1 = 2 일때 B.COL1 = 2 인 레코드 →1개
A.COL1 = 3 일때 B.COL1 = 3 인 레코드 →2개
A.COL1 = 3 일때 B.COL1 = 3 인 레코드 →2개

 

 

 

추천 강의자료

39회 상 : https://www.youtube.com/watch?v=SENIt9GFMV8

39회 하 : https://www.youtube.com/watch?v=9Kgmxr3PCsY&list=PLSiY9ClhS7WnWW6EfWlCz-P1Br3mGjFqw&index=4

 

 

연관 링크

 

 

자료 출처
https://yunamom.tistory.com/265

yurimac님 pdf 정리 자료

https://velog.io/@dongchyeon/오라클Oracle-그룹-함수-ROLLUP-CUBE-GROUPING-등

 

728x90
반응형

'SQL > SQLD 공부노트' 카테고리의 다른 글

[SQL][SQLD] 기출 39회 1~25번  (1) 2022.09.17
[SQL][SQLD] 기출 38회 1~50번  (0) 2022.09.14
[SQL][SQLD] 기출 35회 31~50번  (0) 2022.09.13
[SQL][SQLD] 기출 35회 1~30번  (1) 2022.09.13
[SQL][SQLD] 기출 34회 30~50번  (0) 2022.09.12
728x90

 

1-9번

 

SELECT 1의미

해당 테이블이 가지고 있는 조건을 만족하는 개수의 행만큼 출력

 

릴레이션(관계)

DB에서 정보를 구분하여 저장하는 기본 단위

DB테이블

ERD에서 네모칸 하나가 릴레이션임

 

 

식별자 분류

  • 대표성여부 → 주, 보조
  • 스스로 생성여부 : 내부, 외부
  • 속성의 수 : 단일, 복합
  • 대체여부 : 본질,인조

 

 

ERD 작성순서

  1. 엔터티 그림
  2. 엔터티 배치
  3. 엔터티 관계설정
  4. 관계명 기술
  5. 관계의 참여도 기술
  6. 관계필수여부 기술

 

10번

비즈니스 프로세스에 의하여 만들어지는 식별자로 대체여부로 분리되는 식별자

→ 주식별자

 

식별자 분류

1.대표성여부 분류

주식별자, 보조식별자

  • 주식별자 : 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자, 타 엔터티와 참조관계를 연결O
  • 보조식별자 : 구분자이나 대표성X, 참조관계 연결X

 

2.스스로생성여부

내부식별자, 외부식별자

  • 내부 : 스스로 생성되는 식별자
  • 외부 : 타 엔터티로부터 받아오는 식별자

 

3.속성의 수

단일식별자, 복합식별자

  • 단일 : 하나의 속성으로 구성
  • 복합 : 2개 이상의 속성으로 구성

 

4.대체 여부

본질식별자, 인조식별자

  • 본질 : 업무에 의해 만들어지는 식별자
  • 인조 : 인위적으로 만든 식별자

 

※ 주식별자 도출기준

  1. 해당 업무에서 자주 이용되는 속성임
  2. 명칭, 내역 등과 같이 이름으로 기술되는 것들은 X
  3. 복합으로 주식별자로 구성할 경우 너무 많은 속성X -> 너무 많으면 인조식별자 생성한다.

 

 

12번

COALESCE()

NULL 값이 아닌 첫번째 값을 반환

행(row)으로 진행

SELECT COALESCE(COL1,COL2*50,50) FROM SQLD_39_12

COL1 을 기준 ( 100, 3000, 50)COL1(100)    → 100COL1(NULL) → COL2(60) * 50 →3000COL1(NULL) → COL2 = NULL 이므로 → 50

 

13번

INDEX 생성

CREATE index [인덱스이름] on [테이블이름] (컬럼명);

ex)

CREATE index indmember on T_MEMBER(kind);

 

14번

9-3인데 MINUS는 중복제거하므로 3 3두개인게 3하나만 가게되므로 5가 됨

 

15번

SORT MERGE JOIN

조인되는 N개의 테이블을 모두 정렬한 후에 조인을 수행

해당 테이블의 인덱스가 없을때 수행

병렬구조로 정렬함

각 데이터에 대하여 sort(정렬)를 병렬로 1,2번을 진행하고 후에 merge해서 합침

 

 

16번

LPAD 사용 이유

트리 구조에서 정렬 시에, 공백으로 계층구조 분류를 잘 보이기 위함

 

 

 

17번

순위함수

  1. RANK 함수는 동일순위 처리가 가능하다.
  2. DENSE_RANK 함수는 RANK 함수와 같은 역할을 하지만 동일 등수 순위에 영향이 없다.
  3. ROW_NUMBER 함수는 특정 동일 순위가 부여되지 않는다

 

 

18번

GROUPING SETS 함수

원하는 부분의 소계만 손쉽게 추출하여 계산할 수 있는 함수

참조 : https://velog.io/@dongchyeon/오라클Oracle-그룹-함수-ROLLUP-CUBE-GROUPING-등

 

 

21번

ORDER SIBLINGS BY

ORDER SIBLINGS BY 를 수행하면 전체 테이블이 아니라 계층형으로 된 데이터값(특정 칼럼) 기준으로 정렬된다.

(1) NOT IN (3) 이므로 3이 포함되면 전개를 멈춤

(2) CONNECT BY PRIOR ID = PARENT_ID (부모 ID 를 기준으로 자식 ID 를 검색) 순반향

(3) NO CYCLE 옵션을 사용할 수 있다.

 

 

22번

INDEX RANGE SCAN

최대값을 쉽게 검색 가능

 

 

24번

문자의 길이 : CHAR vs VARCHAR

CHAR는 길이가 서로 다르면, 짧은 쪽에 공백(space)를 추가하여 같은 값으로 판단한다.

VARCHAR(가변길이 문자형 : 입력한 크기만큼 할당 )는 같은 값에서 길이만 서로 다를 경우, 다른 값으로 판단함

예) CHAR(5)으로 칼럼을 생성하고 입력값이 3개의 문자일때 'abc' → 'abc  ' 와 같은식으로 나머지 2개는 공백으로 입력된다.

문자형과 숫자형을 비교 시 문자형을 숫자형으로 묵시적 변환하여 비교

연산자 실행 순서는 괄호, NOT, 비교연산자, AND, OR순

 

 

 

 

추천 강의자료

39회 상 : https://www.youtube.com/watch?v=SENIt9GFMV8

39회 하 : https://www.youtube.com/watch?v=9Kgmxr3PCsY&list=PLSiY9ClhS7WnWW6EfWlCz-P1Br3mGjFqw&index=4

 

 

연관 링크

 

자료 출처
https://yunamom.tistory.com/265

yurimac님 pdf 정리 자료

https://velog.io/@dongchyeon/오라클Oracle-그룹-함수-ROLLUP-CUBE-GROUPING-등

 

728x90
반응형

'SQL > SQLD 공부노트' 카테고리의 다른 글

[SQL][SQLD] 기출 39회 26~50번  (0) 2022.09.18
[SQL][SQLD] 기출 38회 1~50번  (0) 2022.09.14
[SQL][SQLD] 기출 35회 31~50번  (0) 2022.09.13
[SQL][SQLD] 기출 35회 1~30번  (1) 2022.09.13
[SQL][SQLD] 기출 34회 30~50번  (0) 2022.09.12
728x90

 

2번

성능 데이터 모델링 고려사항

  1. 정규화를 수행하여 데이터베이스 모델의 유연성을 확보
  2. 데이터베이스의 전체 용량, 월간, 연간 증감율을 예측 3)애플리케이션의 트랜잭션의 유형(CRUD: Create Read Update Delete)을 파악
  3. 합계 및 정산 등을 수행하는 반정규화 수행(성능향상을 위한 튜닝)
  4. 기본키와 외래키, 수퍼타입과 서브타입 등을 조정
  5. 성능관점에서 데이터 모델을 검증하고 확인

 

개념적 모델링

개체와 개체들 간의 관계에서 ER다이어그램을 만드는 과정

요구분석 단계에서 정의된 핵심 개체와 그들 간의 관계를 바탕으로 ERD를 생성하는 단계

    - 사용자 관점에서 데이터 요구사항을 식별

논리적 모델링

ER다이어그램을 사용하여 관계 스키마 모델을 만드는 과정

개념 설계에서 추상화된 데이터를 구체화하여 개체, 속성을 테이블화하고 상세화 하는 과정

    - M:N 관계해소, 식별자 확정, 정규화, 무결성 정의 등을 수행

물리적 모델링

관계 스키마 모델의 물리적 구조를 정의하고 구현하는 과정

논리적 설계 단계에서 표현된 데이터(ERD)를 실제 컴퓨터의 저장장치에 어떻게 표현할 것인가 (관계형 데이터베이스로 전환)   

    - 데이터가 물리적으로 저장되는 방법을 정의하는 것

 

 

 

5번

릴레이션(관계)

DB에서 정보를 구분하여 저장하는 기본 단위

DB테이블

ERD에서 네모칸 하나가 릴레이션임

 

 

11번

계층형 쿼리

PRIOR

 

 

12번

JOIN 설명

Nested Loop Join : 랜덤 엑세스 (Random Access) 발생 → 시스템 부하有

Sort Merge Join : 정렬을 유발하여 조인하는 형태를 사용

Hash Join : 정렬작업이 없어 정렬이 부담되는 대량배치작업에 유리

 

 

14번

DDL DML DCL TCL

DDL(데이터 정의어)
CREATE, DROP, MODIFY(오라클), ALTER(SQL서버), RENAME, TRUNCATE

DML(데이터 조작어)
SELECT, INSERT, DELETE, UPDATE

DCL(데이터 제어어)
GRANT, REVOKE

TCL(트랜잭션 제어어)
COMMIT, ROLLBACK, SAVE POINT

 

15번

NULL 카운트 YES or NO

대신 count(*) / count(1) 과 count(name) 은 다르다.

NULL 값을 포함하냐 마냐의 차이가 있다.

count(*) 과 count(1) 은 NULL 값인 컬럼도 포함하지만,

count(name) 은 NULL 값인 컬럼은 포함하지 않는다.

 

그룹바이 밴 1,2,3 하나씩으로 축약됨

1은 조조 하나라 1

2는 여포,유비니까 2

3은 관우 하니니까 1

 

 

17번

IN

IN() 연산자 : 안에 NULL이 있어도 비교연산 수행X

 

 

18번

ROLLUP & CUBE & GROUPING SETS

 

1)ROLLUP 

 

2)CUBE 

 

3)GROUPING SETS

 

 

21번

SUM(급여) OVER() : 전체 급여의 합계

AVG(급여) OVER() : 평균 급여

UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING →시작부터 끝까지의 전체 합계

UNBOUNDED PRECEDING AND CURRENT ROW →누적 합계

 

OVER절

누적, 순위, 퍼센트, 평균, 총합 등 데이터를통계 or 집계 를 만들어주는 절

단일함수와 집계함수가 같이 올 수 없기 때문에, 서브쿼리를 사용하는 경우가 많은데요다수의 집계결과가 필요할 때 여러 서브쿼리와 그룹바이로 인해 복잡한 쿼리를 OVER 절을 사용하면 간단하게 작성할수있습니다.

※ SQL Server의 경우

집계 함수는 OVER 절 내의 ORDER BY 구문을 지원X

 

27번

ANY

다수의 비교값 중 하나라도 만족하면 TRUE

<>(같지않은),

 

28번

인덱스(INDEX)

인덱스에 대해서 연산을 하면 인덱스가 변형이 되므로 인덱스를 사용할수가 없다.
CREATE [UNIQUE] INDEX [스키마명.]인덱스명
ON [스키마명.]테이블명 (컬럼1 [, 컬럼2, 컬럼3, ...])

 

30번

실행계획(Execution Plan)

실행계획이란 SQL을 실행하기 위한 절차와 방법을 의미

  • SQL개발자가 SQL을 작성하여 실행할 때, SQL을 어떻게 실행할 것인지를 계획하게 된다. 즉, SQL실행계획을 수립후 SQL을 실행
  • 옵티마이저는 SQL의 실행계획을 수립하고 SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어

 

 

 

43번

순수 관계 연산자

관계형 데이터베이스에 적용할 수 있도록 개발한 관계 연산자

(DELETE 포함X)

 

 

46번

ROLLUP == GROUPING SETS

롤업과 같은 그루핑셋 코드

GROUP BY ROLLUP(COL1, COL2)
GOURP BY GROUPING SETS(COL1, COL2),(COL1),()

 

일정부분만 세면 합계 1000,2000,3000

해당 컬럼 다 합하면 소계 6000

 

 

※ 서브쿼리 위치에 따른 이름 및 반환형태

SQL 서브쿼리 SELECT, FROM, WHERE

  1. SELECT 절 서브쿼리 : 스칼라 서브쿼리
  2. FROM 절 서브쿼리 : 인라인뷰 서브쿼리
  3. WHERE 절 서브쿼리 : 중첩 서브쿼리

 

 

50번

CROSS JOIN

CROSS JOIN의 결과 개수는 두 테이블의 행의 개수를 곱한 개수가 된다.

CROSS JOIN

상호 조인이라고도 불리며,

한 쪽 테이블의 모든 행들과 다른 테이블의 모든 행을 조인시키는 기능

이러한 CROSS JOIN을 카테시안 곱 (Cartesian Product)라고도 한다

 

 

 

 

연관 링크

 

자료 출처
[SQLD] 38회 기출 문제 ( 50문제 / 정답 ) + 해설추가 (tistory.com)

yurimac님 pdf 정리 자료

유투버 곰사원님 pdf 정리 자료

https://dataonair.or.kr/

https://ryean.tistory.com/10

https://mjn5027.tistory.com/51

 

 

 

728x90
반응형

'SQL > SQLD 공부노트' 카테고리의 다른 글

[SQL][SQLD] 기출 39회 26~50번  (0) 2022.09.18
[SQL][SQLD] 기출 39회 1~25번  (1) 2022.09.17
[SQL][SQLD] 기출 35회 31~50번  (0) 2022.09.13
[SQL][SQLD] 기출 35회 1~30번  (1) 2022.09.13
[SQL][SQLD] 기출 34회 30~50번  (0) 2022.09.12
728x90

 

 

 

31번

EXTRACT

0이 들어가면 0빼고 값을 가져옴

 

 

34번

단일행 서브쿼리

  • 서브쿼리의 실행 결과가 항상 1건 이하인 서브쿼리
  • 항상 비교연산자와 함께 사용된다.
  • 비교연산자 뒤에는 단일행이 와야 하는데 뒤에 GROUP BY DEPT는 다중행 함수로 멀티행을 반환하여 에러가 발생함.

 

다중행 서브쿼리

  • 서브쿼리의 실행 결과가 여러 건인 서브쿼리
  • 메인 쿼리의 조건 절에 여러 칼럼을 동시에 비교할 수 있다.
  • 서브쿼리와 메인쿼리의 칼럼 수와 칼럼 순서가 동일해야 한다.

 

ANY & ALL

IN

다수의 비교값과 비교하여 비교값 중 하나라도 같은 값이 있다면 true

조건절에서 사용

ANY

다중행 연산자. 조건을 만족하는 값이 하나라도 있다면 결과 리턴

다수의 비교값 중 한개라도 만족하면 true

IN 과 다른점은 비교 연산자를 사용

ALL

다중행 연산자. 모든조건을 만족하는 결과를 리턴

전체 값을 비교하여 모두 만족해야만 true

비교 연산자와 ANY
최소한 하나라도 만족하는 것
> ANY : 최소값 보다 크면
>= ANY : 최소값보다 크거나 같으면
< ANY : 최대값보다 작으면
<= ANY : 최대값보다 작거나 같으면
= ANY : IN과 같은 효과
!= ANY : NOT IN과 같은 효과

비교 연산자와 ALL
ANY와는 반대되는 개념입니다. 모든 조건에 만족 되는것
> ALL : 최대값 보다 크면
>= ALL : 최대값보다 크거나 같으면
< ALL : 최소값보다 작으면
<= ALL : 최소값보다 작거나 같으면
= ALL : SUBSELECT의 결과가 1건이면 상관없지만 여러 건이면 오류가 발생합니다.
!= ALL : 위와 마찬가지로 SUBSELECT의 결과가 여러 건이면 오류가 발생

 

 

37번

다중입력 쿼리문

Case문과 동일하게 수행되며 WHEN을 만족하면 종료한다.

그래서 T1행에는 2, 3 T2행에는 NULL, T3행에는 1이 입력된다

COL1

1 2 3

INSERT FIRST
	WHEN COL1 >= 2 THEN INTO T1 
	WHEN COL1 >= 3 THEN INTO T2 
	ELSE INTO T3
SELECT*FROM SQLD_37;

 

 

38번

STRING_SPLIT

조회된 skills 컬럼의 쉼표(',') 구분자를 잘라서 해당 개수만큼 행으로 변환한다.

FROM절에서 해당 함수를 사용할 수 있다.

 

 

40번

ROLLUP & GROUPING SETS

GROUP BY GROUPING SETS (a, (a, b))

  = GROUP BY a, ROLLUP(b)

GROUP BY GROUPING SETS ((a, b, c), (a, b), (b), ())

  = GROUP BY ROLLUP (b, a, c)

 

○ 그룹 소계 함수 비교

  1. ROLLUP 은 단계별 합계
  2. CUBE 는 가능한 모든 조합별 합계
  3. GROUPING SETS 는 지정한 조합별 합계
  4. 괄호는 묶음 처리

 

○ 사용 예시

1.ROLLUP(a, b, c) <- 우측 항목을 하나씩 단계별로 제거

  • (a, b, c)
  • (a, b)
  • (a)
  • ()

2.CUBE(a, b)

  • (a, b)
  • (a)
  • (b)
  • ()

3.ROLLUP(a, (b, c), d) <- (b,c) 를 한 묶음으로 처리

  • (a, (b, c), d)
  • (a, (b, c))
  • (a)
  • ()

4.GROUPING SETS (a, (b, c))

  • (a)
  • (b, c)

 

 

45번

HASH JOIN

Equal Join(동등 조인)에서만 가능

대용량 처리에 유리

각 테이블에 INDEX가 반드시 필요한 것은 아니다.

데이터 건수가 적은 테이블을 선행 테이블로 두는 것이 유리하다

정렬 작업이 없어 정렬이 부담되는 대량배치작업에 유리

 

 

46번

ROLLUP & GROUPING SETS

ROLLUP(상품명) = GROUPING SETS(상품명),()

 

GROUP BY ROLLUP(상품명)

=GROUP BY GROUPING SETS(상품명),()

 

 

연관 링크

 

자료 출처
[SQLD] 35회 기출 문제 ( 50문제 / 정답,해설포함 ) (tistory.com)

yurimac님 pdf 정리 자료

유투버 곰사원님 pdf 정리 자료

https://carami.tistory.com/18

https://m.cafe.naver.com/sqlpd/24282

728x90
반응형

'SQL > SQLD 공부노트' 카테고리의 다른 글

[SQL][SQLD] 기출 39회 1~25번  (1) 2022.09.17
[SQL][SQLD] 기출 38회 1~50번  (0) 2022.09.14
[SQL][SQLD] 기출 35회 1~30번  (1) 2022.09.13
[SQL][SQLD] 기출 34회 30~50번  (0) 2022.09.12
[SQL][SQLD] 기출 34회 1~29번  (0) 2022.09.12
728x90

 

 

2번

분산 데이터베이스(분산DB)

분산데이터베이스는 데이터의 무결성을 완전히 보장하는 것이 불가능

분산 DB(곰사원 p7)

  1. 여러 곳으로 분산되어있는 DB를 하나의 가상 시스템으로 사용할 수 있도록 한 DB
  2. 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터집합

 

분산 DB 장단점

- 장점 : 지역 자치성, 신뢰성 가용성, 효용성 융통성, 빠른 응답속도, 비용절감, 각 지역 사용자 요구 수용

- 단점 : 비용증가, 오류의 잠재성 증대, 설계 관리의 복잡성, 불규칙한 응답 속도, 통제의 어려움, 데이터 무결성 위협

 

 

3번

외부, 개념, 내부 스키마

모든 사용자관점을 통합한 조직 전체 관점의 통합적 표현

모든 응용시스템들이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 DB에 저장되는 데이터와 그들 간의 관계를 표현하는 스키마

 - 외부 스키마 : 사용자 관점

 - 개념 스키마 : 통합 관점

 - 내부 스키마 : 물리적 관점

 

 

4번

관계 표기법

관계를 표기법은 관계명관계차수관계선택사양 세 가지로 이루어져 있다

 

1)관계명(Membership)

엔터티가 관계에 참여하는 형태를 지칭

관계명은 엔터티간 관계에 맺어진 형태 뜻한다.

관계가 시작되는 쪽을 "관계시작점(The Beginning)"이라 칭하며 받는쪽을 "관계끝점(The End)"라고 칭한다.

또한 관점에 따라 능동적(Active)이거나 수동적(Passive)으로 명명된다.

 

2)관계차수(Degree/Cardinality)

관계차수란 두 엔터티간 관계에서 수행되는 경우의 수를 뜻한다.

 

3)관계선택사양(Optionality)

관계에서 항상 참여하는지 아니면 참여할 수도 있는지를 나타내는 방법따라 필수참여 관계(Mandatory), 선택참여 관계(Optional)로 나뉜다.

고객과 주문 엔터티 관계를 살펴보자. 3명의 손님의 가게에 들어왔다. 하지만 2명의 손님만 주문을 시킬 경우도 있다.

주문은 꼭 손님에 의해서 수행이 되지만, 손님은 주문을 시킬수도 있고 안 시킬수도 있다.

이처럼 주문은 손님에의해 수행이 될수도 있고 안 될수도 있어서 선택참여 관계이고 주문된 항목은 꼭 손님에 의해서 수행이 되어져야 하므로 필수참여 관계이다.

선택참여관계일 경우 ERD에서 관계를 나타내는 선에서 선택참여하는 엔터티쪽에 원을 표시해야한다.

 

※ ERD(ER 다이어그램)

ERD는 ER 다이어그램이라고도 부르는데 E는 개체(entity)라는 의미고 R은 관계(relation)라는 의미

개체는 정보를 저장하고 관리하기 위한 집합이자 식별 가능한 것

 

5번

분산 DB

 

 

12번

NATURAL JOIN

두 테이블 간의 동일한 이름을 갖는 모든 컬럼들에 대해 EQUI(=) JOIN(등가)을 수행한다.

NATURAL JOIN 은 USING, ON 과 같이 사용x

sql server 에서는 지원x

별도의 JOIN 컬럼을 지정하지 않아도 두 개 테이블에서 DEPTNO라는 공통된 컬럼을 자동으로 인식하여 조인 처리한다.

조인 처리된 컬럼은 같은 데이터 유형이어야 한다.

ALIAS나 테이블명과 같은 접두사를 붙일 수 없다.

출력 순서

*(아스트로)를 사용하면 (별도 순서를 지정하지 않으면) NATURAL JOIN 의 기준이 되는 컬럼이 다른 컬럼보다 먼저 출력된다.

NATURAL JOIN 은 조인에 사용된 같은 이름의 컬럼을 하나로 처리하지만, INNER JOIN은 별개의 컬럼으로 표시

 

EQUI JOIN(등가조인)

= 비교

2개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용, 대부분 PK, FK의 관계를 기반

SELECT PLAYER.PLAYER_NAME 
FROM PLAYER

위 SQL처럼 컬럼명 앞에 테이블명을 기술해줘야함

 

NON EQUI JOIN(비등가 조인)

범위 비교

2개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용

‘=’ 연산자가 아닌 BETWEEN, >, <= 등 연산자 사용

SELECT E.ENAME, E.JOB, E.SAL, S.GRADE 
FROM EMP E, SALGRADE S

 WHERE E.SAL BETWEEN S.LOSAL AND S.HSAL;

최소 (급여등급) 최대

위는 E의 SAL의 값을 S의 LOSAL과 HSAL 범위에서 찾는 것

 

22번

RANGE , UNBOUNDED PRECEDING

UNBOUNDED PRECEDING은 end point에서 사용될 수 없다.

RANGE BETWEEN start_point AND end_point

  • start point는 end_point와 같거나 작은 값이 들어간다.
  • Default값은 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW가 된다.
  • UNBOUNDED PRECEDING : start_point만 들어갈 수 있으며 파티션의 first row가 된다.
  • UNBOUNDED FOLLOWING : end_point만 들어갈 수 있으며 파티션의 last_row가 된다.
  • CURRENT ROW : start_point, end_point 둘 다 가능하다. 윈도우는 CURRENT ROW에서 start하거나 end한다.

 

 

23번

인덱스(INDEX)

인덱스 중 B-트리 인덱스는 Equal 조건뿐 아니라, BETWEEN, > 과 같은 연산자로 검색하는 범위 검색도 사용가능

 

인덱스의 특징

  • 인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 색인과 유사한 개념이다.
  • 인덱스는 테이블을 기반으로 선택적으로 생성할 수 있는 구조이다.
  • 인덱스의 기본적인 목적은 검색 성능의 최적화이다.
  • 검색 조건을 만족하는 데이터를 인덱스를 통해 효과적으로 찾을 수 있도록 돕는다.
  • DML작업은 테이블과 인덱스를 함께 변경하므로 느려지는 단점이 존재한다.
  • 인덱스 데이터는 인덱스를 구성하는 칼럼의 값으로 정렬을 수행한다.

 

 

25번

PL/SQL

  1. 변수와 상수 등을 사용하여 일반 SQL 문장을 실행할 때 WHERE절의 조건 등 으로 대입할 수 있다.
  2. Procedure, User Defined Function, Trigger 객체를 PL/SQL로 작성 할 수 있다.
  3. Procedure 내부에 작성된 절차적 코드는 PL/SQL 엔진이 처리하고 일반적인 SQL 문장은 SQL 실행기가 처리한다.

 

 

 

26번

Lock/Unlock

Lock/Unlock은 병행성 제어(동시성) 기법

무결성 : 데이터 임의 갱신으로부터 보호해야 하는 것.

제약조건을 넣어서 무결성을 보장하거나, Triger 로직 안에 검사 기능을 넣을 수도 있고, 개발자의 코딩에서 로직을 넣을 수도 있다.

 

 

연관 링크

 

자료 출처
[SQLD] 35회 기출 문제 ( 50문제 / 정답,해설포함 ) (tistory.com)

yurimac님 pdf 정리 자료

유투버 곰사원님 pdf 정리 자료

728x90
반응형

'SQL > SQLD 공부노트' 카테고리의 다른 글

[SQL][SQLD] 기출 38회 1~50번  (0) 2022.09.14
[SQL][SQLD] 기출 35회 31~50번  (0) 2022.09.13
[SQL][SQLD] 기출 34회 30~50번  (0) 2022.09.12
[SQL][SQLD] 기출 34회 1~29번  (0) 2022.09.12
[SQL][SQLD] 기출 30회 25~50번  (0) 2022.09.11
728x90

 

 

30번

ORACLE과 SQL SERVER(MS SQL)의 COMMIT

오라클의 경우 DDL은 autocommit true false 보다 윗개념으로 쿼리문 실행되면 바로 커밋이 된다

auto commit false로 설정 영향x

 

Oracle 의 경우

기본 값이 auto commit off

ddl 이 일어날 경우 묵시적 commit이 됨 (설정 불가)

 

Sql Server 의 경우

기본 값이 auto commit on

false 가 될 경우 ddl 도 묵시적 commit 이 되지 않음

  1. SQL 서버의 경우, AUTO COMMIT 꺼두면 UPDATE, CREATE 모두 취소되고 다시 테이블이 생성되지 않음
  2. 오라클은 DDL의 AUTO COMMIT이 기본이기 때문에 CREATE 취소되지 않고, UPDATE도 취소 X

 

 

 

34번

테이블명 & 컬럼명 규칙

1)테이블명 네이밍

테이블 명은 다른 테이블의 이름과 중복x

반드시 문자로 시작해야한다

  • A-Z , a-z , 0-9 , _ , $ , #만 사용 가능

 

2)컬럼명 네이명

테이블 내의 칼럼명은 중복x

각 컬럼들 , 로 구분되고 ; 로 끝난다.

칼럼 뒤에 데이터 유형은 꼭 지정되어야 한다

반드시 문자로 시작해야한다

  • A-Z , a-z , 0-9 , _ , $ , #만 사용 가능

 

 

37번

오더바이(ORDER BY) 특징

1)SELECT 구문에 사용되지 않은 컬럼도 OERDER BY 구문에서 사용할 수 있다

2) ORDER BY 1, COL1 과 같이 숫자와 컬럼을 혼용하여 사용할 수 있다

3) ORACLE 은 NULL 을 가장 큰 값으로 취급하여 ORDER BY 시 맨 뒤로 정렬되고 SQL SERVER 반대로 가장 앞으로 정렬한다

 

 

39번

Hash Join

Hash Join 은 정렬 작업이 없어 정렬이 부담되는 대량배치작업에 유리

Equal Join(동등 조인)에서만 가능

대용량 처리에 유리

각 테이블에 INDEX가 반드시 필요한 것은 아님

데이터 건수가 적은 테이블을 선행 테이블로 두는 것이 유리

정렬 작업이 없어 정렬이 부담되는 대량배치작업에 유리

 

 

40번

최상위 관리자가 나올려면 left outer join 이 되어야 함. 최상위 관리자는 manager_id 가 null 이거나 없기 때문.

 

41번

INTERSECT

결과의 교집합으로 중복된 행을 하나의 행으로 표시한다 

결과의 교집합으로 중복된 행모두 포함한다

 

 

42번

window function

Sum,max, min 등과 같은 집계 window function을 사용할 때 window 절과 함께 사용하면 집계의 대상이 되는 레코드 범위를 지정할 수 있다

  1. Partition by 와 Group by 는 파티션 분할한다는 점에서 유사
  2. 집계 Window Function(sum, max, min)을 Window절과 함께 사용하면 레코드 범위(집계대상) 지정가능
  3. Window Function 으로 결과 건수 줄지 않음
  4. group by, Window Function 병행 불가

 

 

44번

ORDER SIBLINGS BY

같은 레벨 내에서 정렬

Start with SUPER_ID IS NULL

  • (1, NULL, A) 선택(루트 LEVEL1)

CONNECT BY PRIOR ID = SUPER_ID

  • ID가 자식 SUPER_ID 가 부모 / ID=2,3은 SUPER_ID=1 의 자식 / ID=4는 SUPER_ID=2의 자식

ORDER SIBLINGS BY 는 같은 레벨 내에서 정렬

  • ID=2,3은 둘다 LEVEL=1 이므로 정렬, CODE DESC 코드 뒷순서 부터 정렬

 

46번

INITCAP

첫 번째 문자만 대문자로 변환

 

 

48번

AND OR 우선순위

AND가 OR보다 우선 연산이므로 AND부터 먼저 해주면

SALARY > 200 조건만 만족해서 3임

NOT - AND - OR 순으로 연산

 

 

49번

NTILE

전체 건수를 인수값으로 N등분함

https://goldswan.tistory.com/25

NTILE(4) OVER (ORDER BY COL1) AS VAL 
FROM SQLD_34_X7

 

 

50번

LAG & LEAD

이전 N번째 행을 가져옴

(해당 쿼리를 보면 두번째 이전의 salary 값을 가져오므로 답은 2 가 된다.)

DEPARTMENT_ID 그룹, SALARY 오름차순 정렬

https://gent.tistory.com/339

 

LAG 함수 : 이전 행의 값을 리턴

LEAD 함수 : 다음 행의 값을 리턴

**LAG**(expr [,offset] [,default]) **OVER**([partition_by_clause] order_by_clause)
**LEAD**(expr [,offset] [,default]) **OVER**([partition_by_clause] order_by_clause)

expr : 대상 컬럼명

offset : 값을 가져올 행의 위치 기본값은 1, 생략가능

default : 값이 없을 경우 기본값, 생략가능

partition_by_clause : 그룹 컬럼명, 생략가능

order_by_clause : 정렬 컬럼명, 필수

 

 

연관 링크

 

자료 출처
[SQLD] 34회 기출 문제 ( 50문제 / 정답,해설포함 ) (tistory.com)

yurimac님 pdf 정리 자료

 

728x90
반응형
728x90

 

10번

엔터티 특징

  1. 엔터티는 2개 이상의 속성으로 구성
  2. 엔터티를 설명하고, 인스턴스의 구성요소이다. O
  3. 하나의 속성은 하나의 값을 갖는다.
  4. 속성의 특성 : 기본 속성 (모든 일반적 속성)
    • 설계 속성 (새로 만든다.)
    • 파생 속성 (영향을받아 발생, 빠른 성능, 계산)

 

 

11번

TRUNCATE TABLE 명령어

특정 로우(row)를 선택하여 지울 수 없다

 

12번

ORDER BY

 

 

13번

PROCEDURE & TRIGGER 

PROCEDURE 는 COMMIT, ROLLBACK 명령어를 사용할 수 있다.

TRIGGER 는 COMMIT, ROLLBACK 명령어를 사용할 수 없다.

 

 

16번

Nested Loop Join & Sort Merge Join &  Hash Join

WHERE 절에 별도의 조건절이 없을 경우 NESTED LOOP JOIN 이 반드시 좋다고 할 수 없음

Nested Loop Join Sort Merge Join   Hash Join
랜덤 액세스 등가, 비등가 조인 가능 등가조인만 가능
대용량 sort 작업 유리 조인키 기준 정렬 대량 작업 유리, 함수처리

 

 

19번

계층형 쿼리(계층형 질의)

1-4번 전부 PRIOR구문에서 AND조건이 안맞아서 추가 되는게 없고 START WITH에서 추가된 최상위 계층만 남는다.

3번 B A 2 1 / 나머지 : D B 4 2

 

 

20번

ROLLUP & CUBE & GroupingSets

ROLLUP은 인수 순서가 중요(ID 총합과 전체 총합 출력) CUBE는 ID총합,DPET_NM 총합, 전체총합 GroupingSets는 총합 X

ROLLUP : 인수 순서중요(계층적), Order by 로 정렬

CUBE : 모든값에 다차원집계 생성 / 시스템에 많은 부하

GroupingSets : 인수 순서무관 (평등)

SELECT ID, DEPT_NM, SUM(SALARY) 
FROM SQLD_34_20
GROUP BY ROLLUP(ID,DEPT_NM);

쿼리문 결과

GROUP BY로 묶어서 123만 나오는게 아닌

롤업 특성상 각 합계랑 소계도 나와서 7행(row)이 나온다

 

 

22번

ROLLUP & CUBE & GroupingSets

ROLLUP : 인수 순서중요(계층적), Order by 로 정렬

CUBE : 모든값에 다차원집계 생성 / 시스템에 많은 부하

GroupingSets : 인수 순서무관 (평등)

 

 

23번

SELECT COUNT(*) 
FROM SQLD_34_23 
HAVING COUNT(*) > 4

HAVING절에서 조건 만족이 안되서 FROM절에서 들어가는 값이 없고 테이블에 조회 되는게 없으므로 SELECT절 COUNT에 들어가는 값 자체가 없으므로 공집합(ROW 0)이 뜨게됨

 

 

연관 링크

 

자료 출처
[SQLD] 34회 기출 문제 ( 50문제 / 정답,해설포함 ) (tistory.com)

yurimac님 pdf 정리 자료

 

728x90
반응형
728x90

 

 

정규화

함수의 종속성을 이용해 무손실 분해한다.

(입력/수정/삭제 성능 향상)

반정규화 : 조인성능 향상

 

7번

반정규화 대상

1)자주 사용되는 테이블에 접근하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우

2) 테이블의 대량의 데이터가 있고 대량의 데이터 범위를 자주 처리하는 경우에 처리범위를 일정하게 줄이지 않으면 성능을 보장 할 수 없을 경우

3) 통계성 프로세스에 의해 통계 정보를 필요로 할 때 별도의 통계 테이블을 생성해야 하는 경우

 

9번

분산 데이터베이스(분산DB)

 

분산 DB  논리적으로 같은 시스템, 물리적 분산, 데이터 무결성 해침
분할 투명성 분할되서 여러군데 저장
위치 투명성 저장장소 명시 불필요, 데이터베이스의 실제 위치를 알 필요없이 단지 데이터베이스의 논리적인 명칭만으로 엑세스 할 수 있다.
지역사상 투명성 지역 DBMS와 물리적 DB 사이 Mapping 보장
중복 투명성 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용 가능하다.
장애 투명성 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 트랜잭션을 정확하게 처리한다.
병행 투명성 다수의 트랜잭션이 동시에 실현되더라도 그 결과는 영향을 받지 않는다.

 

10번

Row Chaining & Row migration

row 의 길이가 너무 길때 여러 블록에 걸쳐서 저장한다

 

Row Chaining 로우 체이닝

로우의 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태

→ 1:1로 테이블 분리해 조회성능 향상

 

Row migration 로우 마이그레이션

데이터블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식

로우 체이닝과 로우 마이그레이션이 발생하여 많은 블록에 데이터가 저장되면

DB 메모리에서 디스크 I/O가 발생할 때 많은 I/O가 발생하여 성능저하 발생

트랜잭션을 분석하여 적절하게 1:1관계로 분리함으로써 성능향상이 가능하도록 해야 한다

 

 

14번

IN

col1,col2를 하나로 봐서 둘 다 만족해야 IN발동

즉 A,50 둘 다 각각 col1,2에 들어가 있는 row를 찾는건데 마지막 줄 1개이므로 답은 1

 

15번

IN

in은 null을 취급하지 않으므로

a 두개 40+50

x 한개 30

null은 카운트 안하므로 0

120

 

16번

계층구조 선행테이블

(계층구조) 선행테이블 -> 인덱스 ->조인

 

SUM은 null 카운트x

 

 

20번

Trigger (트리거)

1)DELETE ON TRIGGER 의 경우 :OLD 는 삭제 전 데이터를, :NEW는 삭제 후 데이터를 나타낸다.

2)특정 테이블에 DML문이 수행되었을 때 자동으로 동작하도록 작성된 프로그램이다.

3)UPDATE TRIGGER 에서 :OLD 에는 수정 전, :NEW 에는 수정 후 값이 들어간다.

트리거는 DB 자체에 저장, 테이블, 뷰에 사용가능

 

Procedure  Trigger
EXECUTE 명령어로 실행 자동 실행(이벤트 발생할때)
CREATE Procedure CREATE Trigger
COMMIT, ROLLBACK 가능 COMMIT, ROLLBACK 불가능
반드시 값 RETURN 필요 X DML 을 주로 사용

 

 

 

연관 링크

 

자료 출처
[SQLD] 30회 기출 문제 ( 50문제 / 정답,해설포함 ) (tistory.com)

yurimac님 pdf 자료정리

728x90
반응형

+ Recent posts