도메인의 특징
- 데이터 타입, 크기 지정
- 제약조건 지정
- PK (기본키)
- UNIQUE KIE(고유키)
- FOREIGN KEY(외래키)
- CHECK 조건 (입력값 범위제한, NULL 무시)
- NOT NULL 지정
정답 : 4번
주식별자 / 보조식별자 : 대표성 유무
내부 식별자 : 스스로 생성
외부 식별자 : 받아옴
단일 식별자 : 속성 1개
복합 식별자 : 속성 N개
본질 식별자 : 업무에 의해 생성
인조 식별자 : 인위적으로
정답 : 3번
주식별자 특징 : 유최불존
- 유일성 : 유일하게 인스턴스 구분 가능
- 최소성 : 주식별자 속성수 = 최소
- 불변성 주식별자 값은 변경 x
- 반드시 값이 들어와야함 (NOT NULL)
정답 : 4번
엔터티 : 업무상 관리하려는 대상
정답 : 2번
반정규화 종류 : 테속관 (테이블 + 속성 + 관계)
테이블
- 병합 : 1:1 / 1: M / 슈퍼 - 서브타입
- 분할 : 수직분할 (col 단위) / 수평분할 (row 단위)
- 추가 : 이부분 통중
- 이력 : 마스터테이블 레코드를 -> 이력테이블에 중복 시킴
- 부분 : 자주 이용하는거 모음
- 통계 : sum, avg 미리 수행
- 중복 : 서버 다르거나, 다른 업무면 -> 원격조인 제거
속성 : 파오이 P중
- 파생 : 미리 값 계산 -> 칼럼에 보관
- 오류 : 사용자 실수 -> 복구 (임시적 데이터 중복 보관)
- 이력 : 대량 처리 -> 기능성 칼럼 ( 최근값, 시간-종료일자)
- PK 의한 컬럼추가 : PK에 존재한 -> 일반속성으로 추가
- 중복 : 조인 처리할때 중복컬럼 위치
관계 : 중복관계
정답 4번 - FK 추가가 아닌 PK추가임
정답 4번
해쉬마크 + 까마귀발 + 점선 : 1개는 여러제품(N)을 가질 수 있다.
정답 : 3번
속성의 특징
- 엔터티는 2개 이상의 속성으로 구성
- 엔터티 설명하고, 인스턴스 구성요소이다.
- 하나의 속성은 하나의 값을 갖는다
- 속성의 특성에 따른 분류 : 기설파
- 기본 속성 : 모든 일반적 속성
- 설계 속성 : 새로 만듦 (일련번호)
- 파생 속성 : 영향을 받아 발생함, 빠른 성능, 계산 (합)
정답 : 2번
정답 : 4번
SELECT 절에 없는 애를 ORDER BY 할 수 없음.
정답 1번
TRIGGER
- 특정한 테이블에서 INSERT, UPDATE, DELETE 등의 DML문이 수행되었을때 DB에서 자동으로 동작하도록 작성된 프로그램, 사용자 호출이 아닌 DB자동 수행
- PATH를 보면 확인 가능 (-KING만 써있음)
- CONNECT_BY_LEAF는 최하위 값이면 1, 아니면 0 반환
- PRIOR 자식 = 부모 면 순방향
- LEVEL은 계층의 깊이, KING은 최상위 계층이다
정답 : 1번
WHERE 절에 별도의 조건절이 없을 경우 NESTED LOOP JOIN이 반드시 좋다고 할 수 없음
- HASH 조인(성능향상)이 NL JOIN, SORT MERGE JOIN의 대안이다
- 가장 많이 들여쓴 코드부터 실행 2 - 3- 1 - 0
- DEPARTMENT 테이블이 소량이라 먼저 실행하는게 유리
- 조인조건이 NON-EQUAL이면 MERGE JOIN (HASH JOIN X)
정답 : 3번
- SELECT SUM(COL1 + COL2 + COL3 + COL4) FROM TABLE;
- 1+1+1+1 = 4
- NULL + 1 + NULL + NULL = NULL
- 3 + NULL + 3+ 3 = NULL
- NULL + 4 + NULL + 4 = NULL
- 결과 : 4
같은 칼럼의 sum은 null을 더해도 결과 값이 null이 아니지만
다른 칼럼과의 sum은 null을 더하면 결과 값이 null
정답 2번
- sale1/2/3 중에 순서대로 비교해서 null 이 아닌 첫번째 값을 가져오고 모두 null이면 0을 리턴
SELECT COALESCE(sale1,sale2,sale3,0)- NULLIF(A, B) : A = B -> NULL 반환 A != B -> 1 반환
정답 3번
- START WITH부터 N2가 NULL인 곳 부터 선택,
- CONNECT BY PRIOR N1 = N2 (PRIOR 자식 = 부모)(N1 이전값 = N2 다음값)
- WHERE N1 = 4 이므로 3번째 ROW 선택
- C2 = 'B'인곳부터 시작
- 부모 N1 자식 N2가 같아야함
- AND C2 <> 'D' --> C2 != D
- 3번째 ROW 선택
- 2번째 ROW 선택 PRIOR C2 = 'B' 의미는 자식 C2가 B일때니까 2번째 로우
정답 2번
- GROUP BY ROLLUP
- ROLLUP은 총 합계도 나타내줌 따라서 2번이 정답
- CUBE() 일때의 결과값
- ID, DEPT_NM 각각 총합, 전체 총합 출력
정답 1번
ROLLUP : 인수 순서중요 (계층적) / 계층 간 정렬 가능(계층 내 정렬 불가, ORDER BY 사용)
CUBE : 모든 값에 다차원집계 생성 / 시스템에 많은 부하
GROUPINGSETS : 인수 순서무관(평등)
정답 : NULL (0이 아님)
정답 3번
트랜잭션 특성
- 원자성 : 트랜잭션에서 연산들이 모두 성공 OR 전혀 실행 X
- 일관성 : 트랜잭션 실행 전 DB 내용이 잘못 되지 않으면 실행 후도 잘못 되지 않아야함
- 고립성 : 트랜잭션 실행 도중 다른 트랜잭션의 영향을 받아 잘못된 결과로 만들어서는 안된다.
- 지속성 : 트랜잭션이 성공적으로 수행되면 DB의 내용은 영구적으로 저장된다.
정답 1번
1. WHERE T1.COL1 = T2.COL1(+) --> LEFT OUTER JOIN
정답 2번
- RANK() 사용하기때문에 DEPT_NM = 10 에서 1등이 2명
- SALARY = 5000이 나옴
- SALARY = 5000이 나옴
정답 4번
RATIO_TO_REPORT : 전체 SUM값에 대한 행별 칼럼값, 0~1 사이값
정답 1번
UNION 은 합집합이니 중복허용을 안함
- A,B 고객 ID, 이용 일자 중복없이 모두 선택해서 CROSS JOIN
- CROSS JOIN : 상호조인 한쪽 테이블의 모든 행들과 다른 테이블의 모든 행을 조인
정답 2번
( ) 안에 있는게 중복되는 이름 중 아이디가 제일 작은것만 남도록 하는 SQL
삭제 시키는데 제일 작은거 빼고 삭제시켜야 작은게 남음
정답 1번
- ROUND : 반올림
- CEIL : 올림 (오라클)
- CEILING : 올림 (SQL 서버)
- EXP : 익스포트
정답 1번
1. INSERT INTO 주문
-> 할때 INSERT하는 주문의 칼럼은 (4개) 근데 넣는 values에 대상은 3개밖에 없어서 에러
정답 1번
ORDER BY의 특징
- ORDER BY 의 기본 정렬은 오름차순
- SELECT 구문에 사용되지 않은 컬럼도 ORDER BY 구문에서 사용할 수 있다
- ORDER BY 1, COL1 과 같이 숫자와 컬럼을 혼용하여 사용할 수 있다
- ORACLE은 NULL을 가장 큰 값으로 취급하여 ORDER BY시 맨 뒤로 정렬되고
SQL SERVER는 반대로 가장 앞으로 정렬한다.
정답 3번
집합 연산자 종류
- 합집합 : UNION (느림)
- 중복허용 합집합 : UNION ALL(빠름)
- 차집합 :
- MINUS (오라클)
- EXCEPT(SQL 서버)- 교집합 : INTERSECT
정답
- Partition by와 Group by는 파티션 분할한다는 점에서 유사
- 집계 Window Function (sum, max, min) 쓸 때 Window절과 함께하면 레코드범위(집계대상) 지정가능
- Window Function은 순위, 합계, 평균, 행위치 조작 가능
- Window Function은 행, 행 간 관계 정의하는데 사용
- Window Function으로 결과 건수 줄지 않음
- group by, Window Function 병행 불가
정답 : 3
SELECT
COUNT(*)
FROM SQLD_34_48
WHERE SALARY > 200
OR MGR_ID IS NULL
AND CODE = 'B'
- WHERE 조건에서 NOT - AND - OR 순서로 연산한다
- 따라서 MGR_ID IS NULL AND CODE = 'B' 부터 실행한 후
- OR 조건에 따라 SALARY > 200 을 실행하므로
- 결국은 SALARY가 200이상인 애들만 뽑아낸다.
정답 : NTILE
NTILE -> 전체건수를 인수값으로 N 등분함
정답 : 2
LAG는 이전 N번째 행을 가져옴
PARTITION BY DEPARTMENT_ID
-> DEPARTMENT_ID로 그룹을 묶고, SALARY로 오름차순 정렬
봉봉님 힘내요😊