본문 바로가기
SQLD :

SQLD : 문제 풀이 개념 간단 정리 [2]

by 밍코딩코 2024. 5. 22.

80점을 목표로


2. 성능 데이터 모델링에서 고려해야 할 사항
- 정규화를 수행하여 데이터베이스 모델의 유연성을 확보
- 데이터베이스의 전체 용량, 월간, 연간 증감율 예측
- 애플리케이션의 트랜잭션의 유형 ( CRUD : CREATE, READ, UPDATE, DELETE )을 파악
- 합계 및 정산 등을 수행하는 반정규화를 수행
- 기본키, 외래키, 수퍼타입, 서브타입 등 조정
- 성능관점에서 데이터 모델을 검증하고 확인
 
5. 릴레이션 정규화 목적
- 중복을 제거하여 모델의 독립성 향상
- 갱신 이상이 생기지 않도록
- 정보의 손실을 막음
- 정보의 보안을 목적으로 하는것은
 
7. 한개의 엔터티는 두개 이상의 인스턴스의 집합
엔터티는 관계를 두개이상 가질 수 있음
한개의 엔터티는 두개 이상의 속성을 갖는다
한개의 속성은 한개의 속성값을 갖는다
 
9. ERD 표기법 - IE 표기법 = 1:N 관계에서 N쪽에 새발을 표시 / 선택, 필수 참여관계 = 선택 참여 O / 필수 참여 |


12. JOIN
대용량 데이터를 조인할 때 후행 테이블에 인덱스가 없으면 Nested Loop Join 사용해서는 안된다
- 후행 테이블에는 조인을 위한 인덱스가 생성되어 있어야 한다.
 
21. 
SUM(SAL)
  OVER(PARTITION BY JOB
                     ORDER BY EMPNO RANGE
               BETWEEN UNBOUNDED PRECEDING              = 두번 나오므로 문법오류.
               AND UNBOUNDED PRECEDING
             ) SAL3
- FOLLOWING = 시작부터 끝까지 전체 합계
- CURRENT ROW = 누적 합계
- OVER절 = 누적, 순위, 퍼센트, 평균, 총합 등의 데이터를 통계 또는 집계
- WINDOW FUNCTION = 윈도우 함수에는 OVER 문구가 필수 포함
 
22. PL/SQL은 절차형 언어 / 내부에서 테이블 생성 가능하다 - 테이블 생성 이유는 임시 테이블로 잠깐 사용하기 위한 용도
 
26. ORDERS 테이블에는 CUSTOMERS 테이블에 존재하는 않는 고객ID가 있다
SELECT * FROM ORDERS
WHERE NOT EXISTS (SELECT * FROM CUSTOMERS WHERE CUSTOMERS.ID = ORDERS.ID);
- EXISTS = 존재하는 / NOT EXISTS = 존재하지 않는


30. SQL이 데이터베이스에서 실행될 때 실행 절차 및 방법을 표현하여 DBA에게 알려준다
옵티마이저의 종류를 확인할 수 있는 RULE, COST가 표현되고 SQL이 내부적으로 어떤 방식으로 실행되었는지 확인 할 수 있다 = 실행계획
- 옵티마이저 : SQL의 실행계획 수립, SQL 실행하는 데이터베이스 관리 시스템의 소프트웨어
 
31. 파티션 인덱스는 파티션 키에 대해서 인덱스를 생성할 수 있고 파티션 키에 대해 생성한 인덱스를 GLOBAL 인덱스라 한다. 파티션이란 어떤 기준으로 분할하는 것
 
35. SEL JOIN
- 동일한 테이블에서 발생하는 조인을 의미함
- FROM절에 동일한 테이블명이 두번 이상 나타남
- SELF JOIN을 하기 위해 동일한 테이블을 두번 이상 사용하므로 FROM 절에 별칭을 사용해야함
 
42. SQL문 실행 순서
FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
 
43. 순수 관계 연산자
- 관계형 데이터베이스에 적용할 수 있또록 개발한 관계 연산자를 의미한다
- SELECT, JOIN, PROJECT, DIVISION


44. ROW_NUMBER()
- 중복값이 있어도 고유 등수를 부여한다 (1, 2, 3, 4)
RANK : 중복값은 중복등수, 등수 건너뛴다 (1, 1, 1, 4)
DENSE_RANK : 중복값은 중복등수, 등수 안건너뜀 (1,1, 2, 3)
 
45. ORACLE SQL문과 SQL Server SQL이 같은 의미가 되도록..
[ORACLE]
CREATE TABLE TEAM_EMP
AS SELECT * FROM EMP;
 
[SQL Server]
SELECT * ( INTO TEAM_EMP ) FROM EMP;
- 테이블 복사
 
46. SQL 1과 같은 출력이 나오도록 SQL 2 수정
[SQL1]
SELECT COL1, COL2, COUNT(*)
FROM TEST46
GROUP BY ROLLUP(COL1, COL2);
 
[SQL2]
SELECT COL1, COL2, COUNT(*)
FROM TEST46
GROUP BY GROUPING SETS((COL1, COL2),(COL1),());
- GROUPING SETS은 여러 그룹질의를 UNION ALL과 같은 결과를 만들어서 소계, 합계를 집계한다.
 
50. TEST50 테이블에 5건의 행이 있을때
[SQL]
SELECT COUNT(*) FROM TEST50
( CROSS JOIN ) TEST50;
 
[RESULT]
COUNT(*)
--------------------
                  25
- CROSS JOIN을 하면 5 * 5 = 25

'SQLD :' 카테고리의 다른 글

SQLD : 문제 풀이 개념 간단 정리 [3]  (1) 2024.05.23
SQLD : 문제 풀이 개념 간단 정리 [1]  (4) 2024.05.19