728x90
반응형
SMALL

*Youtube Link - https://www.youtube.com/watch?v=OFqWRsoSsy8&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=21

 

41. INTERSECT

1. UNION ALL

2. UNION

3. MINUS (sql server EXCEPT)

4. INTERSECT

42. Window Function

보기 1번은 내가 데이터를 보고 싶은데 이런 데이터를 줘

이것 저것 비교 출력해주는 최적의 방안을 구한다.

보기 2번은 RANGE BETWEEN / ROWS BETWEEN이 된다.

보기 3번은 GROUP BY는 행이 줄어들지만, WINDOW FUNCTION은 행이 줄어들지 않는다.

보기 4번은 같이 실행은 되지만 의미가 있는 데이터가 나오지는 않는다.

43. GROUP BY

COUNT(GRADE)를 하면 NULL은 제외하고 출력을 한다.

WHERE GRADE IN ('차장', '부장', '널'); 은 이 '널'은 의미가 없는 데이터이기 때문에 NULL을 제외하고 샌다.

그리고 COUNT(*) FROM EMP GROUP BY GRADE;를 하면 이렇게 사원, 대리, 과장, 차장, 부장 그리고 NULL 까지 수가 같이 조회가 된다. GRADE가 NULL인 값까지 같이 조회가 된다.

44. LAG() 함수

LAG(컬럼, 오프셋, 디폴트) 로 구성되어 있다.

컬럼의 오프셋 만큼의 이전 행의 값을 출력한다. 만일 없으면 NULL을 입력하는데 디폴트 값이 있으면 디폴트 값을 입력한다.

45. 중복 테이블 추가

A 시스템과 B시스템이 있는데 서로 동일한 테이블의 구조를 갖은 테이블 A,C가 있다.

이렇게 GRANT 권한을 주어서 A시스템의 C테이블에 접속을 한다.

그래서 B시스템의 A테이블과 A시스템의 C테이블을 원격 조인을 하려고 한다.

그런데 B시스템에서 그냥 C테이블을 갖고 와서 중복 테이블을 만드는 것이다.

이러한 기법을 중복 테이블 추가라고 한다.

46. UPPER

문자열을 대문자로 바꿔준다.

전부 바꿔준다.

'12#3가나abc' -> '12#3가나ABC'

47. LEAD()

LEAD(SAL) -> LEAD(SAL,1)

기본 디폴트 값은 1이다.

48. UNION

UNION은 중복을 제거한다.

UNION ALL은 중복을 제거하지 않는다.

답은 2번이다.

49. NULL

날짜 더하기 NULL을 하면

NULL은 산술/비교 자체가 아얘 안 되므로

NULL이 출력된다.

50. CUBE

GROUP BY를 진행하고

전체 1건 

DNAME별 소계 3건

JOB별 소계 5건

그리고 DNAME, JOB을 GROUP BY한 결과 9건

더해서 총 18건이 나온다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*Youtube Link - https://www.youtube.com/watch?v=1XYh_WGmTTU&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=20

 

31. FULL OUTER JOIN

예시 데이터를 만들어서 확인하는 것이 좋다.

A테이블에는 1,2,3 그리고 B테이블에는 2,3,4 이렇게

2,3 겹치는 데이터를 포함해서 만들어주는 것이 좋다.

답은 4번이다.

32. 그룹 함수

33. LIKE

문자열은 대소문자를 구분한다.

34. 물리적 테이블 명

숫자로 시작하면 안된다.

_,$,#만 가능하다.

숫자도 사용 가능하다.

문자로 시작해야 한다.

대소문자 구별된다.

35. 내장 함수

ROUND(숫자, m) - 반올림 함수, 소수점 m자리까지 반올림한다. m의 기본값은 0이다.

CEIL - 올림 함수

TRUNC - 테이블 내용 삭제 함수

NULLIF - A,B가 같으면 NULL 아니면 A를 반환한다.

36. 오류

1번이 답이다.

1. INSERT INTO T_ORDER VALUES (2, SYSDATE-1, 'ABC');

이면 컬럼명을 적어주지 않으면 오류가 발생한다.

DEFAULT 값이 있더라도 오류가 발생한다.

SYSDATE - 1을 하면 어제 날짜가 이렇게 들어가 있다.

그리고 C4에 DEFAULT값인 1000이 들어가 있다.

DELETE T_ORDER; 이렇게 FROM을 생략해도 된다. 하지만 관례상 써주는 것이 좋다.

37. ORDER BY

ORDER BY에서 명칭도 사용이 가능합니다.

숫자와 컬럼을 혼용하여 사용할 수 있다.

SELECT 절에서 사용하지 않은 컬럼도 ORDER BY 절에서 사용할 수 있다.

오라클은 ORDER BY를 할 때 NULL은 가장 뒤로 밀린다.

그래서 DESC를 하면 NULL이 가장 위로 올라온다.

SQL SERVER는 ORDER BY를 하면 가장 작다고 판단된 NULL이 가장 먼저 나온다.

ORDER BY의 DEFAULT는 오름차순(ASC)이다.

답은 4번이다.

38. 비동등 조인

먼저 크로스 조인을 하고

그 상태에서 조인의 조건과 동일한 값을 조회하면 된다.

그러면 이렇게 T_ORDER를 JUMUN별로 SUM한 값이 어떤 등급에 속하는지를

조회하는 결과를 얻을 수 있다.

40. 실행순서

1. NULL은 연산이 안 되므로 AVG를 할 때 빼고 계산을 한다. 그래서 10이다.

2. SELECT 하기 전에 WHERE가 먼저 실행된다. 그래서 COL1>0 인 것들 중에서 AVG(COL3)를 한다. 그래서 20이다.

3. WHERE COL1 IS NOT NULL 이므로 COL1이 NULL인 행은 뺀다. 그리고 COL3의 평균값을 조회를 한다. 이 때 NULL은 연산이 불가능하므로 뺀다. 20이다.

그래서 정답은 3번이다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*Youtube Link - https://www.youtube.com/watch?v=gZ42zHGUFdQ&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=19

 

21. CUBE 문제

정답은 1번이다.

 

22. CUBE

정답은 1번이다.

ROLLUP은 전체와 소계를 구한다.

ROLLUP, CUBE, GROUPING SETS는 여러 컬럼에 대해서도 사용할 수 있다.

ROLLUP 보다 CUBE가 더 시스템 부하를 많이 시킨다.

23. COUNT()

정답은 3번이다.

24. 트랜잭션

원자성은 모두 성공하거나 전혀 실행되지 않아야 한다. 성공하면 커밋 실패하면 롤백이 되는 것이다.

일관성은 트랜잭션 실행 전 DB 내용이 정상이라면 트랜잭션 이후에도 DB 내용이 정상이어야 한다. 제약 조건을 통해서 db 내용이 정상일 수 있도록 지킬 수 있다.

고립성/격리성은 트랜잭셩 실행 도중 다른 트랜잭션이 영향을 주면 안된다.

지속성은 트랜잭션이 성공적으로 수행되면 영구적으로 DB에 저장되어야 한다. 커밋을 했으면 db에 영구반영이 되어야 한다는 의미이다.

고립성/격리성의 예이다.

sqldeveloper 창을 두개를 열었다.

두 명의 사용자가 사용을 하는 것이다.

한 명은 데이터를 update하고 아직 commit은 하지 않았다.

다른 한명은 똑같은 데이터를 update를 하고 있다. 그러면 계속 기다리고 있다.

왼쪽 사용자가 롤백을 하면

오른쪽에서 바로 처리가 되는 것을 볼 수 있다.

고립성/격리성이 지켜져야 동시에 데이터를 바꿀 때 이상해지지 않는다.

25. COUNT() 및 DISTINCT

정답은 4번이다.

26. LEFT OUTER JOIN

정답은 1번이다.

27. 윈도우 함수 - 순위

정답은 2번이다.

파티션에 대해서 순위를 계산한다.

파티션에는 ORDER BY가 들어간다.

또한 WINDOWING 절이 들어간다.

WINDOWING 절의 DEFAULT는 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW가 들어간다.

-> 정렬된 결과의 처음부터 현재 행까지 

- WINDOWING 절의 구조

[블로그 참고]https://lee1535.tistory.com/19

RANK() 함수는 동일한 순위는 동일한 값이 부여된다.

DENSE_RANK() 함수는 동일한 순위를 하나의 건수로 보아 다음 순위는 +1이 온다.

ROW_NUMBER() 함수는 고유한 순위가 부여된다.

29. 트랜잭션

똑같은 이름으로 T1이라는 SAVEPOINT에 저장을 했기 때문에

T1이 두번째 T1으로 변경된다.

답은 2번이 된다.

30. AUTO COMMIT

오라클의 경우 DEFAULT로 AUTO COMMIT = FALSE 이고 DML은 직접 커밋 그리고 DDL은 자동 커밋이 된다.

그러나 SQL SERVER의 경우 DEFAULT로 AUTO COMMIT = TRUE이다. 그래서 DML도 자동 커밋 그리고 DDL도 자동 커밋이다.

SQL SERVER를 AUTO COMMIT = FALSE로 바꾸면 DML 직접 커밋 그리고 DDL도 직접 커밋이 된다.

1. SQL SERVER의 경우 AUTO COMMIT이 FALSE인데 ROLLBACK을 하면 UPDATE구 뿐만 아니라 그 위의 CREATE구도 롤백된다.

2. 오라클의 경우 ROLLBACK을 하면 UPDATE구가 취소된다.

3. 오라클에서 ROLLBACK을 하면 테이블 생성은 롤백되지 않고 UPDATE구만 롤백된다. 마지막 커밋 시점은 CREATE 구까지가 된다.

4. AUTO COMMIT이 FALSE인 경우에 해당한다. 

답은 3번이다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*Youtube Link - https://www.youtube.com/watch?v=7bzILN8y5K0&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=18

 

11. TRUNCATE 문제

답은 1번이다.

DDL -> 자동 커밋

CREATE, ALTER, DROP, TRUNCATE는 자동 커밋된다.

테이블 용량이 줄어든다.

테이블 구조는 남아있다.

ROLLBACK할 수 없다.

TRUNCATE는 테이블을 초기 상태로 되돌린다.

12. 서브쿼리 (인라인뷰)

GROUP BY C1의 경우 C1을 SELECT에 사용할 수 있다.

그러나 다른 컬럼을 SELECT할 경우 크기가 맞지 않아 SELECT가 안 된다.

서브쿼리의 인라인뷰는 가상의 테이블처럼 사용한다.

그래서 애스터리크로 출력을 했으므로 N2를 ORDER BY 절에서 사용할 수 있다.

답은 4번이다.

ORDER BY 그리고 숫자가 나오면 

해당 숫자의 컬럼을 SELECT에서 찾아본다.

13. 프로시저와 트리거

프로시저는 우리가 만들면서 COMMIT과 ROLLBACK을 할 수 있다.

하지만 트리거는 자동실행되므로 COMMIT과 ROLLBACK이 불가능하다.

프로시저와 트리거도 생성하면 소스코드가 저장된다.

저장되는 공간이 이렇게 따로 있다.

프로시저와 트리거도 CREATE구로 만든다.

프로시저는 EXECUTE, EXEC 명령어로 실행한다. 그러나 트리거는 자동실행된다.

14. 계층형 쿼리

정답은 3번이다.

빈칸은 NULL값이다.

CONNECT_BY_ISLEAF는 자식이 있으면 0을 단말이면 1을 반환한다.

LEVEL이 1이면 최상위 계층이다.

15. ORDER BY

정답은 1번이다.

SELECT * FROM 야구선수 

애스터리크를 사용했으므로 모든 컬럼이 조회된다. 이 컬럼들을 ORDER BY에서 사용할 수 있다.

17. NULL 연산

SELECT SUM(C1 + C2 + C3 + C4) FROM Mytext17;

을 수행하면 컬럼에 하나라도 NULL이 들어가 있으면

연산이 제대로 수행될 수 없어 NULL을 반환한다.

집계 함수는 NULL을 무시한다.

정답은 3번이다.

18. NULL 함수

19. 계층형 쿼리

- 보기1

계층형 쿼리는 먼저 테이블을 구하고 WHERE절이 사용된다.

다음 오른쪽 그림과 같이 계층형으로 쿼리가 조회된다.

- 보기2

이렇게 더이상 계층 조건에 맞지 않으면

계층을 중단하고 테이블을 반환한다.

- 보기3

먼저 START WITH 행을 써주고

조건에 부합하지 않다면

그대로 이 한 줄만 출력된다.

결과값과 동일하므로 답은 3번이다.

19. ROLLUP

GROUP BY ROLLUP은 계층적으로 구한다.

ROLLUP은 GROUP BY EMPNO, DEPTNO 그리고 GROUP BY EMPNO 그리고 GROUP BY 전체 

이렇게 해서 각 그룹별 연봉 합계와, 직원번호별 연봉 합계와, 전체 연봉 합계를 구할 수 있게 된다.

정답은 1번이다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

*Youtube Link - https://www.youtube.com/watch?v=x_SSdptNWGo&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=17

 

1. 도메인 문제

예를 들어 CREATE TABLE COL1 NUMBER(10) NOT NULL이면

NOT NULL을 보고 도메인이라고 한다.

입력받을 수 있는 값의 범위를 셋팅을 한 것이다.

엔터티(개념적 모델링) : 테이블(물리적 모델링) : 릴레이션(논리적 모델링)

속성 : 컬럼

도메인 : 제약조건

릴레이션에서 모든 속성의 도메인은 원자적(Atomic)이어야 한다.

2. IE 표기법

고객 엔터티의 고객번호가 내부 식별자라면

계좌마스터 엔터티에서 고객번호(FK)는 외부 식별자이다.

답은 2번이다.

주식별자는 고객번호(PK)를 말하고 보조식별자는 주민등록번호와 같은 것을 말한다.

단일 식별자는 고객 엔터티의 고객번호 즉 하나의 식별자만 존재하는 것을 말하며

계좌마스터 엔터티는 계좌번호와 고객번호 이 두개를 식별자로 두므로 복합 식별자라고 부른다.

본질 식별자는 회원 ID 등을 말하며 인조 식별자는 0001, 0002, 0003과 같은 편의, 임의의 일련번호를 말한다.

3. 주식별자 도출기준과 특징

주민등록번호를 왜 주식별자로 두지 않느냐

왜 고객번호를 주식별자로 두느냐의 문제이다.

업무에서 자주 쓰이는 속성이어야 한다.

명칭, 이름 등은 피해야 한다.

속성의 수가 많아서는 안된다. 복합 식별자는 최소여야 한다.

인스턴스를 유일하게 식별해야 한다.

주식별자 속성이 많아선 안 된다.

주식별자는 가급적 변하면 안 된다.

주식별자는 값이 꼭 입력되어야 한다.

4. 엔터티

엔터티는 2개 이상의 속성과 2개 이상의 인스턴스가 있어야 한다.

이름은 속성이다.

회원은 엔터티에 부합하다.

A 쇼핑몰의 경우 A 쇼핑몰이라고 한정이 되어 있다. 그냥 쇼핑몰이었다면 엔터티었겠지만 A 쇼핑몰 하나는 엔터티가 될 수 없다. 인스턴스이다.

배송지 주소는 속성이다.

5. 주식별자

주 식별자는 NULL 값을 가질 수 없다.

6. 반정규화

논리적 모델링 때는 정규화를 진행합니다.

그리고 물리적 모델링 때 테이블을 설계하다가 성능을 고려하면 반정규화를 진행하게 됩니다.

주로 파티셔닝 또는 인덱스로 성능을 해결을 한다.

테이블을 나눈다.

그러나 그 외에도 방법이 없다면 데이터 보안성을 위해서 반정규화를 한다.

답은 2번이다. 

7. ERD

고객의 고객번호가 주문의 주식별자의 조합으로 사용되고 있다.

값이 필수이며 NULL값이 입력되서는 안 된다.

이를 강한 식별자 관계라고 한다.

하나의 배송지정보에는 여러개의 주문이 들어갈 수 있다.

그리고 하나의 제품은 여러 주문에 포함될 수 있다. 하나의 드라이기를 여러명이 주문할 수 있다.

8. 테이블에 대한 관계

다대다 M:N 관계이다.

답은 3번이다.

9. 테이블에 대한 이상현상

답은 2번이다.

갱신을 할 경우 유비의 스마트폰 뿐만 아니라 다른 사람들의 스마트폰의 정보도 같이 변경해주어야 데이터의 무결성을 지킬 수 있다.

10. 엔터티 속성

답은 2번이다.

하나의 속성은 하나의 속성만 들어가야 한다.

속성명은 명사를 사용하여야 한다.

오늘 배송된 상품 이렇게 서술식으로 속성명을 사용해선 안 된다.

다 나누어 주어야 한다. 시간, 상품명, 배송 여부 등

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

* Youtube Link - https://www.youtube.com/watch?v=n95a3PgW1tQ&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=13

 

11. 스칼라 서브쿼리 문제

스칼라 서브쿼리에서 ORDER BY는 문법에러

ORDER BY 1은 첫번째 열을 기준으로 오름차순 정렬한다.

서브쿼리에서 여러 개의 행이 반환되면 IN, ANY, ALL과 같은 다중행 서브쿼리 함수를 사용해야 한다.

그러면 이렇게 위 그림처럼 들어갔다는 의미이다.

- 스칼라 서브쿼리: SELECT 절에서 사용하는 서브쿼리

- 인라인뷰 서브쿼리: FROM 절에서 사용하는 서브쿼리

- 중첩 서브쿼리: WHERE 절에서 사용하는 서브쿼리

서브쿼리는 메인쿼리의 컬럼을 모두 사용할 수 있다.

메인쿼리에서는 서브쿼리의 컬럼을 사용할 수 없다.

12. ROLLUP 문제

정답은 (2)이다.

2.은 잘못되었다.

DNAME, YEAR별 소계도 같이 출력되고

DNAME별 소계 결국 총계도 같이 출력된다.

ROLLUP은 소계를 출력하는 함수입니다.

 

13. 실수 함수

- FLOOR() 함수: 실수 내림 함수

- CEIL() 함수: 실수 올림 함수

- ROUND() 함수: 실수 반올림 함수

- TRUNC() 함수: 실수 버림 함수

두번째 옵션은 소수점 자리 수를 의미한다.

14. SQL문의 실행 순서

정답은 (2)이다.

 

15. Oracle과 SQL Server

오라클은 AUTO COMMIT이 FALSE이다. (DDL은 자동 COMMIT, DML은 직접 COMMIT)

SQL SERVER는 AUTO COMMIT이 TRUE이다. (DML, DDL 자동 COMMIT)

정답은 (4)이다.

원래 SQL은 BEGIN TRANSACTION과 COMMIT (TRANSACTION)이 존재한다.

이를 명시적 TRANSACTION이라고 한다.

TRANSACTION은 처리과정을 의미한다.

16. SQL문 실행 계획을 읽는 순서

정답은 (1)이다.

17. PL/SQL에서 FETCH 이후에 수행해야 하는 것

정답은 (3)이다.

커서는 반복작업을 위한 단위이다.

SQL문은 데이터를 가져오기 위한 절차를 기술하지 않는다.

하지만 PL/SQL을 통해서 SQL을 절차적으로 사용할 수 있다. (PL: PROCEDURAL LANGUAGE)

DECLARE는 변수를 선언하는 부분이다.

SELECT employee_id, first_name, last_name, salary FROM HR.employees WHERE salary > 14000;

의 결과(테이블)을 CURSOR emp_cursor IS 의 emp_cursor로 저장한다.

이렇게 커서와 자료형 변수들을 만들어 준다.

BEGIN 부터 로직이 실행된다.

OPEN emp_cursor; 는 CURSOR를 열겠다는 의미이다.

FETCH는 CURSOR의 데이터 결과(테이블)을 하나씩 꺼내서 사용하겠다는 의미이다.

그래서 변수에 하나 하나씩 넣어주는 것이다.

그리고 이 변수들을 활용한 로직 처리가 가능할 것이다.

로직이 종료되면

CLOSE emp_cursor; 로 CURSOR를 닫아주어야 한다.

닫는 이유는 자원 낭비를 방지하기 위함이다. (메모리 부족 현상 방지)

EXCEPTION WHEN OTHERS THAN DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM); END

명령어는 예외가 발생하면 이쪽으로 보내겠다는 명령어이다.

흐름을 알고 있으면 좋다.

18. SQL SERVER 문제

오라클에서 볼 수 없는 내용들이 나올 것이다.

오라클에는 TOP() 함수가 없다. 아쉬운 부분이다.

MySQL, MS SQL 등은 

 WITH TIES를 사용을 하면

동일한 순위 팀을 같이 뽑을 수 있다.

19. LIKE 함수

ORACLE은 regular expression이 따로 있다. regexp_like 정규식이다.

MS SERVER는 regular expression은 []를 사용한다.

K%는 K가 첫글자이고 이후에 0개 이상의 문자들이 나오는 것이다.

%K%는 K 사이에 0개 이상의 문자들이 나오는 것이다.

[__K]%는 오라클의 경우 [를 문자로 간주한다. 하지만 MS SERVER에서는 []를 regular expression으로 사용을 한다.

그래서 오라클의 경우에는 '[AAK]AA' 등을 출력할 수 있다.

MS SERVER는 _,_,K 를 _ 또는 _또는 K인 첫 글자 중 %이므로 0개 이상의 문자를 출력한다.

__K%는 K가 세번째이고, %이므로 다음이 0개 이상의 문자를 출력한다.

20. 해시 조인 문제

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

* Youtube Link - https://www.youtube.com/watch?v=qCAXD2ukvTE&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=12

 

01. 파티셔닝 기법

파티셔닝이란

어떤 테이블을 수평으로 쪼개는 것이다.

그런데 이 테이블을 물리적으로 쪼개는 것이 아니라 논리적으로 쪼갠다.

실제 테이블은 하나인데, 가상의 논리적으로 

이렇게 하나의 테이블에 마치 3개의 테이블이 있는 것 처럼 사용하겠다.

물리적으로 분할하지 않는다의 의미이다.

- range partition: 데이터 값의 범위를 기준으로 파티션을 수행 (주로 주기, 날짜 범위)

- list partition: 특정 값을 지정해서 파티션을 수행 (서울, 주기 x 항목)

- hash partition: 직접 조건으 주는 것이 아니다. 임의의 값을 주면 큰 공간안에 알아서 데이터를 저장하는 것이다.

- composite partition: 범위와 해시를 복합적으로 사용해서 파티션을 수행한다.

데이터의 삭제도 파티셔닝을 기준으로 삭제할 수 있다.

list partition의 경우 항목을 지정해서 파티션을 수행하기 때문에 쉽게 데이터를 삭제할 수 없다.

02. 속성의 특성에 따른 분류

정답은 (2)이다.

구성방식에 따른 속성의 분류도 있다.

03. 비식별 관계

직원과 직원연락처 관계는 

직원은 여러개의 직원 연락처를 갖을 수 있다.

그래서 중복을 피하여 PK를 만들기 위해

직원ID + 구분코드 (예를 들면, 집전화, 휴대폰, 회사 연락처) 등을 연결해서 유일한 식별자를 만든다.

강한 식별 관계와 약한 식별관계는 이렇다.

직원의 PK는 직원 연락처에서 반드시 갖고 있어야 하며 이 PK를 기본키로 사용을 한다.

이러한 경우 강한식별관계라고 한다.

하지만 부서의 PK는 직원에서 하나의 속성과 같다. 

이러한 경우 약한 연결 관계, 즉 비식별자관계라고 한다.

BARKER 표기법에서는 비식별자관계를 점선으로 표시하지 않는다.

BAKER 표기법에서는 1이 식별자 관계를 말한다. 1이 없으면 비식별자 관계인 것이다.

IE 표기법에서는 비식별자관계를 점선으로 표시한다.

04. ER 모델링의 표기법

05. 이상현상

정답은 (3)이다.

이상현상에는 삽입 이상현상, 갱신 이상현상, 삭제 이상현상이 있다.

예를 들어 반정규화 상태의 테이블에 P004라는 냉장고 상품만 넣고 싶은 것이다.

그런데 고객ID, 고객명은 우리가 넣고 싶지 않은 데이터인데 넣어야 하는 것이다.

하지만 테이블이 뜯어져있었다면 상품 데이터만 넣을 수 있겠죠?

이러한 경우가 삽입 이상이다.

또는 만약에 드라이기의 가격을 바꾸고 싶다면 전부 다 바꿔주어야 한다.

이를 갱신 이상이라고 한다.

또는 노트북 정보를 삭제하고 싶다. 그런데 얘기치 못하게 고객의 정보까지 삭제가 되버리는 현상을 삭제 이상이라고 한다.

06. 3차 정규화

정답은 (4)이다.

1차 정규형 도메인 원자성: 속성에 하나의 값만 있어야 한다.

2차정규형 부분 종속성 제거: 컬럼에 PK 복합속성에서 부분적으로 종속되는 컬럼은 테이블을 나누어 주는 것이다.

3차 정규형 이행 종속성 제거: 

4차 정규화 다치종속성 제거:

5차 정규화 조인 속성 제거: 

07. 키 엔터티

정답은 (1)이다.

기본 엔터티 - 독립적 엔터티

중심 엔터티 - 계좌, 주문, 취소, 체결등의 엔터티이다. 기본 엔터티와 행위 엔터티의 중간이다.

행위 엔터티 - 주문이력, 체결 이력 등이 있다.

08. 파티션 처리

정답은 (1)이다.

09. 데이터 모델링 3단계(개념-논리-물리)

재사용성이 가장 높은 것은 바로 논리적 데이터 모델링이다.

IE/BARKER -> ERD -> CREATE문 

등으로 볼 수 있다.

설계는 논리적 데이터 모델링에서 대부분 설계가 되어야 한다. 가장 중요하고 시간도 오래 걸린다.

데이터를 쪼개면서 이상이 발생하지 않도록 정규화를 수행한다.

10. 

엔터티의 개념 자체가 집합이다.

그리고 요 하나 하나의 데이터를 인스턴스라고 했다.

집합을 의미하기 위해서는 무조건 두개 이상의 인스턴스가 있어야 한다.

인스턴스는 하나 이상의 속성을 가질 수 있다.

속성에는 하나의 속성값만 있어야 한다.

 

감사합니다.

728x90
반응형
LIST
728x90
반응형
SMALL

* Youtube Link - https://www.youtube.com/watch?v=xkWzMYAqbqU&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=11

 

01. CUBE 의미

CUBE를 사용하면 결합 가능한 모든 집계를 계산한다.

예를 들어, GROUP BY CUBE(DEPTNO, JOB); 이면

부서별 합계, 직업별 합계, 부서별 직업별 합계, 전체합계가 조회되는 것이다.

 

02. CROSS JOIN 문제

CROSS JOIN은 ON 절을 사용할 수 없다.

사용하면 에러가 발생한다.

모든 경우의 수를 조회하는 조인이다.

 

03. ANSI JOIN

ORACLE의 OUTER JOIN을 ANSI JOIN으로 바꾼 결과이다.

정답은 (2)이다.

04. 키의 종류

 

정답은 (3)이다.

키는 식별자를 이야기 한다.

유일한 인스턴스를 구분할 수 있는 것이 무엇이냐

수퍼키는 유일하게 식별할 수 있는 모든 조합이다.

대신 최소성을 만족하지는 않는다.

후보키는 유일성 + 최소성을 만족한다.

후보키에는 예를 들어 CUST_ID, 주민등록번호 등이 있다.

그러면 CUST_ID를 기본키로 설정을 하면

주민등록번호 등은 대체키가 되는 것이다.

05. ROUND() 함수

반올림하는 함수이다.

ROUND(숫자, 반올림 소수 자리)는 반올림하는 함수이다.

06. 윈도우 함수

(3)은 문법에러이다.

07. 내부 식별자와 외부 식별자

정답은 (3)이다.

08. 서브쿼리 문제

상관 서브쿼리

비상관 서브쿼리

A.COL1이 1이면서 B.COL1이 1이고

동시에 A.COL2이 200이고 B.COL2이고

B.COL3 > 1400인 행을 조회한다.

 

감사합니다.

728x90
반응형
LIST

+ Recent posts