본문 바로가기

DB

SQL 마무리 정리

delete from 테이블명

 

ORACLE

DDL문장 수행 후 자동으로 COMMIT 수행

DDL문장 수행은 내부적으로 트랜잭션을 종료시킴

 

''로 입력하면 NULL로 저장됨

 

SQL Server

DDL문장 수행 후 자동으로 COMMIT을 수행하지 않음

DDL문장 수행이 트랜잭션 종료시키지 않음

''로 입력하면 ''로 저장됨(NULL로 저장되지않음)

 

NULL 

널 값은 아직 정의되지 않은 값으로  0 또는 공백과 다름( 0은 숫자, 공백은 하나의 문자)

테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 데이터 유형은 널 값을 포함할 수 있음

널 값을 포함하는 경우 결과 값도 널 값(?인 값에 숫자를 더하거나 빼는 연산의 정답을 알 수 없는 것과 같음)

결과값을 NULl이 아닌 다른 값을 얻으려면 NVL/ISNULL함수 사용(NULL값의 숫자형인 경우 주로 0, 문자형인 경우 x  같은 의미없는 문자로 바꾸는 경우가 많음)

 

 

 

연산

조건절에서 NULL값 사용하는 경우 IS NULL, IS NOT NULL 사용

(오답: <>, !=, NOT NULL)

 

내장함수(Built-in Function): 벤더에서 제공하는 함수

계산을 위해 함수에 입력되는 행 수 기준으로 단일행 함수와 다중행 함수로 나뉨

단일행 함수(Single-Row Fuction): 각각의 모든 행에 대해 함수가 계산을 수행, 인수로 들어가는 숫자만큼 결과가 나옴

다중행 함수(Multi-Row Function): 여러 개의 행(데이터)가 들어간다는 것으로 계산 결과가 단 1개, 종류는 집계함수, 그룹합수, 윈도우 함수

사용자 정의 함수(User Defined Function):

 

 

옵티마이저 O/X

1) 규칙기반 옵티마이저에서 가장 높은 우선순위 는 전체 테이블 스캔 방식이다(X)

-> 일반적으로 ROWID기반으로 스캔하는 것이 가장 높은 우선순위를 가짐

2) 인덱스는 오름차순으로 생성/정렬 된다(X)

-> 내림차순으로 생성 및 정렬 됨 

3) 인덱스 범위 스캔은 항상 복수의 결과를 출력(X)

-> 스캔 범위에 따라 단수의 결과 혹은 0건의 결과 출력도 가능

4) 같은 SQL문이더라도 실행계획이 다르면 결과가 다름(X)

-> 동일, 성능은 달라질 수 있음

5)자주 변화하는 속성을 인덱스로 설정하는 것은 좋지 않다(O)

6) 보조인덱스는 중복 데이터 입력이 불가능하다(X)

-> UNIQUE 속성을 가진 인덱스가 아니라면 중복 데이터 입력 가능

7) 인덱스를 통한 스캔은 항상 전체 테이블 스캔보다 효율적이다(X)

-> 랜덤 액세스의 경우 많은 양의 데이터를 읽을 때 부하가 커서 오히려 전체 테이블 스캔이 유리할 수 있음

8) 비용기반 옵티마이저는 항상 인덱스 스캔이 유리하다고 판단한다(X)

-> 비용기반으로 전체 스캔이 유리할 수도 있음

9) 파티션 테이블은 파티션에 대해 인덱스를 생성할 수 있다(O)

-> 파티션 키에 대해 인덱스를 생성 가능하며, 그 경우 해당 인덱스르 Global 인덱스라고 부름

10) 인덱스의 수는 데이터의 입력, 삭제, 수정 속도에 영향을 미치지 않는다

-> 인덱스의 수가 증가할 경우, 입력, 삭제, 수정 속도가 느려질 수 있음

11) 인덱스의 생성이 간읗나 캐릭터 타입은 VARCHAR와 NUMBER 뿐이다

-> VARCHAR, NUMBER, DATE, CHAR 모두 가능

12) 인덱스 종류는 순차 인덱스, 비트맵, 결합 인덱스, 클러스터, 해시 인덱스가 있다(O)

'DB' 카테고리의 다른 글

[SQL] DCL 예제  (0) 2023.03.02
📝 NoSQL이란?  (0) 2022.11.16
SQLD 자격증 문제 풀이 정리 7-8  (0) 2022.11.01
SQLD 자격증 문제 풀이 정리 5-6  (0) 2022.11.01
SQLD 자격증 문제 풀이 정리 3-4  (2) 2022.11.01