SQL

SQLD 대비 오답노트

softPattern 2024. 3. 4. 21:15

테이블 권한

테이블에 대한 권한은 각 테이블의 소유자가 가지고 있기 때문에 소유자로부터 권한을 받지 않으면 다른 유저의 테이블에 접근할 수 없다.

 

Nested Loop 방식의 조인 절차

1.선행 테이블에서 조건을 만족하는 첫 번째 행을 찾음

2.선행 테이블의 조인 키를 가지고 후행 테이블에 조인 키가 존재하는지 찾으러 가서 조인을 시도

3.후행 테이블의 인덱스에서 선행 테이블의 조인 키가 존재하는지 확인

4.인덱스에서 추출한 레코드 식별자를 이용하여 후행 테이블을 액세스

 

Hash Join

- cpu 연산이 많이 발생되는 조인으로 조인할 때 선행 테이블의 크기가 작아야 유리한 조인이다.

- 조인 칼럼의 인덱스가 존재하지 않아도 사용할 수 있다.

- 해시 함수를 이용하여 조인을 수행하기 때문에 '='로 수행하는 조인인 동등조건에서만 사용할 수 있다.

- 해시 함수가 적용될 때 동일한 값은 항상 같은 값으로 해시됨을 보장한다.

- 해시 테이블을 메모리에 생성해야한다.

- 메모리에 적재할 수 있는 영역의 크기보다 커지면 임시 영역(디스크)에 저장한다.

- 선행 테이블을 build input, 후행 테이블은 prove input

 

Full Scan

하나의 데이터(행)을 조회하기 위해서는 인덱스를 굳이 사용하지 않고 바로 full scan하는 것이 효율적이다.

 

2차 정규형 위반 

결정자 중 일부 속성에만 함수 종속성을 가지고 있는 Partial Dependency Attribute를 갖는 것은 2차 정규형 위반이다.

 

3차 정규형 

식별자를 제외한 일반 속성 간 종속을 제거한다.

 

Sort Merge Join

테이블을 정렬한 뒤 정렬된 테이블을 병합 하며 조인한다.

 

유무형에 따른 엔터티의 분류

- 유형 엔터티 : 형태가 있음. 안정적이며 지속적으로 활용되는 엔터티(사원, 물품, 강사)

- 개념 엔터티 : 형태가 없음. (조직, 보험상품)

- 사건 엔터티 : 업무를 수행함에 따라 발생 됨.(주문, 청구, 미납)

 

발생 시점에 따른 엔터티의 분류

- 기본 엔터티 : 업무에 원래 존재하는 정보. 자신의 고유한 주식별자를 가진다(사원, 부서, 고객, 상품, 자재...)

- 중심 엔터티 : 업무의 중심적인 역할. 다른 엔터티와의 관계를 통해 행위 엔터티를 생성함(계약, 사고, 청구, 주문, 매출...)

- 행위 엔터티 : 내용이 자주 변경됨(주문목록, 사원변경이력...)

 

ALL(), ANY()

all = 모든 것이 일치(and) / any = 하나라도 일치(or)

 

정렬

- 기본적인 정렬 순서 = ASC(오름차순) / DESC(내림차순)

- SQL Server에서 오름차순 정렬은 null 값이 가장 먼저 나온다.

- Order By 절에서는 Select 절에서 사용한 alias를 사용할 수 있따 !!!

 

데이터 모델링

- 세 가지 중요 개념 : Things, Relationship, Attributes

- 실제 DB 구축 시 참고되는 모델은 물리적 데이터 모델링

- 개념-논리-물리 순으로 추상화 수준이 낮다

- 논리 모델링의 외래키는 물리 모델에서 반드시 구현되진 않는다.

 

Count(*) / Count(컬럼 or 표현식)

- Count(*) : null을 포함한 모든 행 수 출력

- Count(컬럼 or 표현식) : null을 제외한 행 수 출력

 

Rank() / Dense_Rank()

- Rank() : 중복 등수는 하나의 등수로 표현하며 등수를 건너 뛴다. ( 1, 2, 2, 4)

- Dense_Rank() : 중복 등수여도 등수를 건너 뛰지 않는다. (1, 2, 2, 3)

 

Ceil() / Floor()

- Ceil(34.1) -> 35 : 같거나 큰 정수

- Floor(34.1) -> 34 : 같거나 작은 정수

 

ABS() / SIGN()

- ABS() : 절대값

- SIGN() : 양수이면 1, 음수이면 -1, 0이면 0 

 

ERD 작성순서

- 그림

- 배치

- 관계 설정

- 관계명 

- 참여도 

- 필수여부 

 

기타

- From 절에서 Alias를 사용하였다면, Select절에서는 무조건 alias 명칭을 사용하여야한다 !