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

 

WINDOW FUNCTION

SELECT WINDOW_FUNCTION (ARGUMENTS)
OVER ( [PARTITION BY 컬럼] [ORDER BY 절] [WINDOWING 절] )
FROM 테이블 명

WINDOW_FUNCTION : 기존에 사용하던 함수(SUM, AVG 등등)도 있고, 새롭게 WINDOW 함수용으로 추가된 함수도 있음.

ARGUMENTS(인수) : 윈도우함수를 사용할 때 설정이 필요한 경우 옵션으로 사용 (함수에 따라 0 ~ N개의 인수가 지정될 수 있음)

PARTITION BY 절 : 컬럼 선택은 옵션으로 전체 조회된 행에 대해 소그룹을 지정한 컬럼으로 만들 수 있다.

ORDER BY 절 : 해당 컬럼에 대해서 정렬

WINDOWING 절 : 함수의 대상이 되는 행 기준의 범위를 강력하게 지정할 수 있음.

    1)ROWS : 물리적인 결과 행의 수

    2)RANGE : 논리적인 값에 의한 범위

 

둘 중의 하나를 선택해서 사용가능

다만, WINDOWING 절은 SQL SERVER에서 지원X

 

 

윈도우 함수(WINDOW FUNCTION) 종류

1.그룹 내 순위(RANK) 관련 함수

2.그룹 내 집계(AGGREGATE) 관련 함수

3.그룹 내 행 순서 관련 함수

4.그룹 내 비율 관련 함수

5.선형 분석을 포함한 통계 분석 관련 함수

https://rise-up.tistory.com/724

 

[SQL] 윈도우 함수(WINDOW FUNCTION) 종류

윈도우 함수(WINDOW FUNCTION) 종류 WINDOW FUNCTION 탄생 배경 PL/SQL, SQL/PL, T-SQL, PRO*C 같은 절차형 프로그램을 작성하거나, INLINE VIEW를 이용해 복잡한 SQL 문을 작성해야 하던 것을 부분적이나마 행과..

rise-up.tistory.com

 

 

 

WINDOW 절

ROWS |  RANGE BETWEEN
UNBOUNDED PRECEDING | CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING
AND
UNBOUNDED FOLLOWING | CURRENT ROW | VALUE_EXPR PRECEDING/FOLLOWING

ROWS : 물리적인 ROW 단위로 행 집합을 지정 ( 현재행을 기준으로 몇개의 행을 포함하는지 )

RANGE : 논리적인 상대번지로 행 집합을 지정 ( 현재행을 기준으로 어떤 값의 범위를 포함하는지 )

BETWEEN~ AND 절 : 윈도우의 시작과 끝 위치를 지정UNBOUNDED PRECEDING : PARTITION의 첫 번째 로우에서 윈도우가 시작

UNBOUNDED FOLLOWING : PARTITION의 마지막 로우에서 윈도우가 시작

CURRENT ROW : 윈도우의 시작이나 끝 위치가 현재 로우

 

 

자료출처

https://dataonair.or.kr/

 

728x90
반응형
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

 

34번

고객.고객ID에 c001만 들어가있으므로

주문.고객ID에 들어갈 수 있는건 c001이랑 null만 가능

따러서 c002가 들어가있기 떄문에 제약조건 위반으로 에러발생

 

35번

Cross Join 과 Natural Join 은 Where 절에서 조건을 걸 수 없다

 

36번

PK에 의해 테이블을 분할하는 방법(파티셔닝)

1개 테이블에 많은 데이터가 저장됐을 때, 논리적으로는 1개 테이블이지만 물리적으로 여러 테이블로 분리

LIST PARTITION

LIST ( 대량 데이터 / 특정컬럼(생성일자) 없음 / PK )

 

 

42번

MERGE 에서의 DELETE 구문은 DELETE 단독 구문이 아닌 UPDATE 구문에 종속됨 UPDATE 실행된 건에 한해서 DELETE 구문이 수행된다

MERGE INTO

하나의 쿼리문으로 INSERT, UPDATE, DELETE 작업을 해야 하는 경우

이럴 때에는 MERGE 문을 사용하면 간단하게 쿼리문을 작성

출처 :&nbsp;https://mine-it-record.tistory.com/261

 

 

43번

ABS(-3.8), FLOOR(3.8), TRUNC(3.8), ROUND(3.8)

내림, 반올림들 매개변수에 지정 자리수 없으면 소수점에서 기능실행

EX)ROUND(3.85,1)이여야 5를 반올림해서 3.9가됨

TRUNC 인자 O

FLOOR 인자 X

 

 

 

45번

계층형 쿼리 : 순방향, 역방향

 

46번

오라클 아닌 SQL SERVER기준 쿼리문

// SQL SERVER기준
ALTER TABLE DEPT ALTER COLUMN VARCHAR(30) NOT NULL;

 

47번

ALTER로 DEFAULT값을 지정해줬어도 해당 컬럼값에 NULL을 넣는다고 하면 DEFAULT가 안들어가고 NULL값이 그대로 들어가며,

(CO1)처럼 값 하나만 지정하고 다른 컬럼값을 지정안하면 이때 DEFAULT값이 들어간다

 

 

 

 

연관 링크

 

 

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

yurimac님 pdf 정리 자료

 

728x90
반응형
728x90

 

업무분석을 통해 바로 정의한 속성을 기본속성(Basic Attribute), 원래 업무상 존재하지는 않지만 설계를 하면서 도출해내는 속성을 설계속성(Designed Attribute), 다른 속성으로부터 계산이나 변형이 되어 생성되는 속성을 파생속성(Derived Attribute)이라고 한다.

 

1.기본속성

업무로부터 추출한 모든 속성이 여기에 해당하며 엔터티에 가장 일반적이고 많은 속성을 차지한다. 코드성 데이터, 엔터티를 식별하기 위해 부여된 일련번호, 그리고 다른 속성을 계산하거나 영향을 받아 생성된 속성을 제외한 모든 속성은 기본속성이다. 주의해야 할 것은 업무로부터 분석한 속성이라도 이미 업무상 코드로 정의한 속성이 많다는 것이다. 이러한 경우도 속성의 값이 원래 속성을 나타내지 못하므로 기본속성이 되지 않는다

 

2.설계속성

업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성이다. 대개 코드성 속성은 원래 속성을 업무상 필요에 의해 변형하여 만든 설계속성이고 일련번호와 같은 속성은 단일(Unique)한 식별자를 부여하기 위해 모델 상에서 새로 정의하는 설계속성이다.

 

3.파생속성

다른 속성에 영향을 받아 발생하는 속성으로서 보통 계산된 값들이 이에 해당된다. 다른 속성에 영향을 받기 때문에 프로세스 설계 시 데이터 정합성을 유지하기 위해 유의해야 할 점이 많으며 가급적 파생속성을 적게 정의하는 것이 좋다.

 

 

 

자료출처

https://dataonair.or.kr/db-tech-reference/d-guide/sql/?mod=document&uid=327

728x90
반응형
728x90

 

 

윈도우 함수(WINDOW FUNCTION) 종류

 

WINDOW FUNCTION 탄생 배경

PL/SQL, SQL/PL, T-SQL, PRO*C 같은 절차형 프로그램을 작성하거나, INLINE VIEW를 이용해 복잡한 SQL 문을 작성해야 하던 것을 부분적이나마 행과 행간의 관계를 쉽게 정의하기 위해 만든 함수가 WINDOW FUNCTION

윈도우 함수를 활용하면 복잡한 프로그램을 하나의 SQL 문장으로 쉽게 해결 가능

벤더별로 지원하는 함수에는 차이가 있다.

 

1.그룹 내 순위(RANK) 관련 함수

RANK, DENSE_RANK, ROW_NUMBER 함수

ANSI/ISO SQL 표준과 Oracle, SQL Server 등 대부분의 DBMS에서 지원

 

2.그룹 내 집계(AGGREGATE) 관련 함수

UM, MAX, MIN, AVG, COUNT 함수

ANSI/ISO SQL 표준과 Oracle, SQL Server 등 대부분의 DBMS에서 지원

SQL Server의 경우, 집계 함수는 뒤에서 설명할 OVER 절 내의 ORDER BY 구문을 지원X

 

3.그룹 내 행 순서 관련 함수

FIRST_VALUE, LAST_VALUE, LAG, LEAD 함수

Oracle ONLY 지원

  1. FIRST_VALUE, LAST_VALUE 함수
    • MAX, MIN 함수와 비슷한 결과를 얻을 수 있음
  2. LAG, LEAD 함수는 DW에서 유용하게 사용되는 기능

 

4.그룹 내 비율 관련 함수

CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT 함수

  1. CUME_DIST, PERCENT_RANK 함수
    • ANSI/ISO SQL 표준과 Oracle DBMS에서 지원
  2. NTILE 함수
    • ANSI/ISO SQL 표준에는 없지만, Oracle, SQL Server에서 지원
  3. RATIO_TO_REPORT 함수
    • Oracle ONLY 지원
    • 현업에서 유용한 기능

 

5.선형 분석을 포함한 통계 분석 관련 함수

Oracle의 통계 관련 함수

CORR, COVAR_POP, COVAR_SAMP, STDDEV, STDDEV_POP, STDDEV_SAMP, VARIANCE, VAR_POP, VAR_SAMP, REGR_(LINEAR REGRESSION), REGR_SLOPE, REGR_INTERCEPT, REGR_COUNT, REGR_R2, REGR_AVGX, REGR_AVGY, REGR_SXX, REGR_SYY, REGR_SXY

 

 

자료출처

https://dataonair.or.kr/db-tech-reference/d-guide/sql/?pageid=3&mod=document&uid=351

728x90
반응형
728x90

 

[관련] 개념 설명

https://rise-up.tistory.com/719

 

계층형 쿼리(Hierarchical Query) 동작순서 + 설명

 

SQLD 자격검정 실전문제 P95/89

1.START WITH 라인을 먼저 뽑아냄

→ 001 홍길동,005이병헌

 

2.ORDERBY절

1번에서 뽑아낸 걸 오더바이절 조건대로 다시 정렬

 

3.CONNECT BY PRIOR

이전(PRIOR) 사원번호가 매니저사원번호인 ROW(행)을 찾아라

사원번호 = 매니저번호 조건에서 이전 사원번호가 001 홍길동이었으므로, 매니저사원번호가 001인 것들을 추려냄

 

4.AND 입사일자 BETWEEN ‘2013-01-01’ AND ‘2013-12-31’

입사일자 날짜 조건을 줘서 한번 걸러내므로 강감찬 탈락

003 이순신, 004 이민정만 추가

 

5.ORDER SIBLINGS BY

사원번호로 정렬

001 003 004 005 정렬이 맞으므로 순서 변화X

 

 

6.여기까지해서 또 계층 내려갈게 있는지 확인하려면, 매니저사원번호가 003,004인게 있는지 봐야한다

없으므로 내려갈 계층 더 없음. 이 계층은 여기서 끝

 

7.CONNECT BY PRIOR 사원번호 = 매니저사원번호

005 이병헌에서 매니저사원번호가 005인 ROW(행)을 찾아야한다

006,007,008이 존재함

 

 

8. AND 입사일자 BETWEEN ‘2013-01-01’ AND ‘2013-12-31’

AND의 입사일자 조건에 006,007,008 전부안맞아서 추가되는거 없음

 

9.결과값 도출

 

※만약 여기서 DESC로 정렬하고 싶으면 결과는?

DESC로 정렬하면 레벨1부터 정렬을 다시 해줘야하니 005가 맨 앞

다음 레벨2인 004가 003 위로가게됨

 

 

자료출처

https://www.youtube.com/watch?v=boNut__USIU&list=PLyQR2NzLKOCZU_jjLAdebyx9oE9dvvsrE&index=9 

https://www.youtube.com/watch?v=U4MlOLK2E9M&list=PLyQR2NzLKOCZU_jjLAdebyx9oE9dvvsrE&index=10 

https://yunamom.tistory.com/269?category=1006373#answer2

728x90
반응형

+ Recent posts