인강은 다 들었고 무작정 기출문제를 몇개 풀어봤다.
스마트폰 때문에 집중해서 공부하는게 너무 어려워졌다. ㅠㅠ
학교 다닐 때 스마트폰이 없어서 정말 다행이었지 싶다.
이제와서 개념을 탄탄하게 잡기는 힘들고 기출에 나온 것 중 모르는 개념만 되짚어 보기로..
데이터 모델링
1) 논리 모델링의 외래키는 물리 모델에서 반드시 구현되지는 않는다. (선택사항임)
2) 실제로 데이터베이스를 구축할 때 참고되는 모델은 물리적 데이터 모델링이다.
3) 개념 모델링 -> 논리 모델링 -> 물리 모델링 단계로 갈수록 구체적이다.
4) 데이터 모델링의 3가지 요소: Thing, Attributes, Relationship 이다.
5) 개념적 모델링 : 추상화 수준이 높고, 업무 중심적, 포괄적. 전사적 데이터 모델링
논리적 모델링 : 시스템으로 구축하고자 하는 업무에 대해 key, 속성, 관계 등을 정확하게 표현. 재 사용성이 높음.
물리적 모델링 : 실제로 데이터베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계.
Rollup, cube, grouping set
GROUP BY ROLLUP(DNAME,JOB)
= GROUP BY DNAME, JOB
UNION ALL
GROUP BY DNAME
UNION ALL
모든 집합 그룹 결과
GROUP BY GROUPING SET(DNAME,JOB)
= GROUP BY DNAME
UNION ALL
GROUP BY JOB
GROUP BY CUBE(DNAME,JOB)
= GROUP BY DNAME,JOB
UNION ALL
GROUP BY DNAME
UNION ALL
GROUP BY JOB
UNION ALL
모든 집합 그룹 결과
IDENTITY & CHECK
* SQL SERVER : IDENTITY [ ( seed , increment ) ]
- SEED : 첫번째 행이 입력될 때의 시작값
- increment : 증가되는 값
- 해당 컬럼에 값을 넣을 경우 Error 발생 (Error 발생을 막기 위해서는 IDENTITY_INSERT 를 OFF 로 하면 되나 이런 경우 IDENTITY 를 쓴 의미가 없어짐
TAB_A
A IDENTITY (1,1)
B VARCHAR2(10) 인 경우
INSERT INTO TAB_A(A,B) VALUES(1,'A'); -> ERROR 발생
INSERT INTO TAB_A(B) VALUES('B'); -> OK
INSERT INTO TAB_A(B) VALUES('D'); -> OK
결과는
1, B
2, D가 됨!!
TAB_B
A CHECK (A < 5)
B VARCHAR2(10) 인 경우
INSERT INTO TAB_B VALUES(1,'A'); -> OK
INSERT INTO TAB_B VALUES(6,'D'); -> 6 때문에 CHECK 조건에 위배 돼 ERROR 발생
INSERT INTO TAB_B VALUES(NULL,'X') -> NULL은 무시하므로 INSERT 됨
결과는
1, A
NULL , X
OPTIMIZER JOIN
- NESTED LOOP JOIN :
- 선행 테이블 먼저 조회 후 그 다음 테이블 연결
- 양에 따라 처리 속도가 결정되므로 선행 테이블 크기가 작은 것이 유리
- RANDOM ACCESS 발생
- INDEX 필요, UNIQUE INDEX 유리
- 로우들간 처리, 테이블간 처리가 순차적으로 일어남
- 온라인 트랜잭션처리(OLTP)에 유용
- 중첩된 반복문과 동일한 형식, 선행 테이블의 조건을 만족하는 경우의 수만큼 반복적으로 수행
2. SORT MERGE JOIN :
- 두 테이블을 먼저 정렬 후 완료 시 병합
- 데이터 양이 많아지면 느려짐
- 임시디스크 사용
- EQUI JOIN, NON EQUI JOIN 모두 가능
3. HASH JOIN :
- EQUI JOIN만 가능
- INDEX 사용 X
- 대용량 처리에 유용
- 두 테이블을 동시에 스캔
- 작은 테이블을 HASH 메모리에 로딩하고 조인 키를 사용하여 해시 테이블 생성
- 선행 테이블에 작은 테이블이 와야함.
* 부정형 비교는 인덱스 사용 불가
EX) WHERE COL1 <> 10
SQL SERVER TOP WITH TIES
- WITH TIES : ORDER BY 조건 기준으로 TOP N 의 마지막 행으로 표시되는 추가 행의 데이터가 같을 경우 N+동일 정렬 순서 데이터를 추가 반환하도록 지정하는 옵션 (마지막 기준 공통일 경우 모두 출력)
EX) SELECT TOP(1) WITH TIES ENAME,SAL
FROM SCOTT.EMP
ORDER BY SAL DESC
-> 원래는 SAL 내림차순으로 정렬하여 상위 1개의 ENAME, SAL을 출력해야 하나 WITH TIES를 쓰고 SAL 내림차순기준 SAL 값이 중복되는게 여러개 있을 경우 모두 출력함.
NATURAL JOIN
SELECT EMP.DEPTNO, EMPNO, ENAME, DNAME FROM EMP NATURAL JOIN DEPT;
-> 위의 구문이 잘못된 이유는 NATURAL JOIN 시 사용된 열에 식별자를 넣으면 안되기 때문.
WINDOW FUNCTION
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, end_point 둘다 가능. 윈도우는 CUREENT ROW에서 start하거나 end 함
4) SUM(SAL) OVER(PARTITION BY JOB ORDER BY EMPNO RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED PRECEDING) SAL3 -> 해당 구문은 END_POINT에 UNBOUNDED PRECEDING이 와서 틀림
NON-EQUI JOIN
- 조인 조건을 제외하고 CROSS 조인 후 조인 조건을 필터로 처리하는 것이 좋음!
도메인의 특성
데이터 타입, 크기 지정
제약 조건 지정 (PK, UNIQUE KEY, FK, NOT NULL, CHECK 조건)
'열심히 직장인 > Hello World' 카테고리의 다른 글
신용장 관련 SWIFT 메세지 MT7XX - Documentary credits and guarantees 내용정리 (0) | 2024.02.01 |
---|---|
2024년 1학기 방통대 컴퓨터과학과 3학년 편입 합격! / 합격 후 해야할 일들 : 수강신청, 등록금납부 등 입학준비하기 (1) | 2024.01.25 |
Javascript / Json 데이터를 Filter, Map 하기 (0) | 2024.01.19 |
javascript 파일 저장 full Path를 이용해 파일명/저장 디렉토리 분리하기 (0) | 2024.01.05 |
자바스크립트 substr vs substring 차이 (0) | 2024.01.05 |
Java Script '/' 슬래시 치환하기 (0) | 2023.09.26 |
정보처리 기사 실기 대비 (0) | 2023.09.25 |
2022년 제3회 정보처리기사 필기 합격후기 (비전공자+벼락치기) (0) | 2022.08.15 |
비전공자 SQLD 독학 - 시험접수, 인강듣기 (1) | 2022.06.23 |
비전공자 제 45회 SQLD 독학 합격 후기 (3) | 2022.06.23 |