Min IT's Devlog

[SQLD]SQL 자격검정실전문제 2과목 오답노트 본문

자격증/SQLD(완료)

[SQLD]SQL 자격검정실전문제 2과목 오답노트

egovici 2022. 3. 6. 18:50

7.  ALTER 

ALTER TABLE ALTER COLUMN의 형태는  ALTER COLUMN은 SQL Server에서 사용하는 형태로 

ALTER TABLE 테이블명 ALTER COLUMN 칼럼명 도메인

형식으로 하나씩 작성해야하며 이때 칼럼명과 도메인을 ()를 이용하여 묶지 않으며 Oracle처럼 한 번에 여러 칼럼을 변경하는 것이 불가능하다.

 

cf) Oracle의 경우

ALTER TABLE table_name
MODIFY (
    column_name_1 action,
    column_name_2 action,
    ...
);

으로 ALTER TABLE 테이블명 MODIFY(칼럼명 도메인)의 형태로 한번에 여러 개의 칼럼에 대한 변경이 가능하다.

 

19.  참조동작

DELETE/ MODIFIED Action:  CASCADE, SET NULL, SET DEFUALT, RESTICT

CASCADE: 연쇄작용으로 연결되어 있는 PK 삭제시 같이 삭제

RESTRICT: Child 테이블에 PK로 연결되어 있지 않는 경우에만 삭제허용

 

INSERT Action: AUTOMATIC, SET NULL, SET DEFAULT, DEPENDENT

AUTOMATIC: 현재 생성할 FK가 부모테이블에 PK로 존재하지 않으면 부모테이블에 PK 자동 생성후 INSERT

DEPENDENT: 현재 생성할 자식테이블의 FK가 부모테이블에 PK로 존재할 경우에만 INSERT 허용

 

23. 테이블의 삭제

테이블 내용 삭제 - DELETE FROM table_name;  // Rollback 가능

테이블 초기화 - TRUNCATE TABLE table_name;  // 로그를 남기지 않고 초기화, Rollback 불가

테이블 정의 자체 삭제 - DROP TABLE table_name; // Rollback 불가

 

28. 트랜잭션의 격리성이 낮은 경우 발생하는 문제

Dirty Read - 다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는 것

Non-Repeatable Read - 한 트랜잭션 내에서 같은 쿼리를 두번 수행했는데 중간에 다른 트랜잭션이 값을 수정하거나 삭제하여 두 쿼리가 다르게 나타나는 현상

Phantom Read - 한 트랜잭션 내에서 같은 쿼리를 두번 수행했는데 첫번째 쿼리에서 없던 레코드가 두번째 쿼리에서 발생하는 현상

Lost Update - 다수의 transaction이 동시에 실행되는 환경에서 Update 연산을 연속으로 수행하면 먼저 실행된 Update연산이 오버라이팅되는 현상

 

29. Commit 반영

ORACLE

- DDL의 경우 자동 Commit, DCL의 경우 사용자가 commit를 사용하여 Commit

- 만약 DCL을 한 후 Commit을 하지 않고 DDL을 시행시 DCL이 자동으로 Commit됨.

 

SQL Server

- 일반적으로 DDL이나 DCL의 경우 모두 Auto Commit됨

- Auto Commit을 FALSE로 설정하는 경우 DDL과 DCL모두 Commit을 사용해야 Commit이 이루어짐

 

37. Insert를 통해 ''의 값을 넣었을 때 처리 차이점

INSERT INTO table_name VALUES (1, '');

Oracle

- ''의 경우 실제로 DB에 입력되는 것은 (1, NULL)로 입력이 됨

- IS NULL로 검색

 

SQL Server

- ''의 경우 그대로 (1,'')로 입력이 됨

- column_name = ''로 검색

 

39. TO_DATE

TO_DATE('201501','YYYYMM') = 2015년 1월1일 0시

 

52. GROUP BY 절과 HAVING 절의 특성

1. GROUP BY 절을 통해 소그룹별 기준을 정해서 SELECT절에 집계함수 사용

2. 집계함수는 NULL을 제외하고 수행

3. GROUP BY 절에는 ALIAS명을 사용할 수 없음

4. 집계함수는 WHERE절에 사용할 수 없음

5. WHERE절은 전체 데이터를 GROUP을 나누기 전에 행들을 미리 제거시킴

6.GROUP BY 절에 의해 소그룹별로 만들어진 집계 데이터 중, HAVING의 조건에 따라 해당하는 내용만 남김

7. HAVING 절은 일반적으로 GROUP BY 절 뒤에 위치

8. GROUP BY 절을 사용하는 경우 ORDER BY 절에 집계함수 사용 가능

 

52. ROWNUMS VS TOP

- Rownums의 경우 where절에 쓰이며 무작위로 위에서부터 몇개를 뽑아오는 형태

-> 정렬한 다음에 가져오고 싶다면 inline view로 정렬해놓고 rownums 사용하기

- top은 정렬해서 상위 몇개 가져오는 형태로 select절에 쓰임

-> 반드시 order by와 같이 사용해야하며 사용하지 않으면 rownums과 같은 효과

 

 

70. Where 절 & on절 & using 절

- Using 절의 경우 join에 참여한 행의 경우 alias나 테이블명을 앞에 붙일 수 없으며 단순히 이 칼럼을 사용하세요 느낌

 

USING (COLUMN_NAME)

ON (TABLE_NAME.COLUMN_NAME = TABLE2_NAME.COLUMN_NAME) == WHERE

 

 

72. OUTER JOIN에서의 ON절

- Outer Join에서 On에 join조건이 아닌 일반적인 조건이 들어오게 되면 이에 해당하는 조건에 대해서만 join이 이루어지게 됨

 

90. 계층형 질의문

오라클에서는 PRIOR 키워드는 Select WHERE 절에서도 사용이 가능

 

 

125. 절차형 SQL 모듈

1. 저장형 프로세저는 SQL을 로직과 함께 DB에 저장해놓은 명령문의 집합

2. 저장형 함수는 다른 SQL문을 통해 호출되고 그 결과를 리턴하는 SQL의 보조적 역할

3. 트리거는 특정한 테이블에 DML문이 수행시 DB에서 자동으로 동작하도록 작성

 

데이터의 무결성과 일관성을 위해 사용자 정의 함수를 사용한다 > 트리거의 용도

 

138, 139. 인덱스

1. 인덱스의 순서와 쿼리에서의 조건 검색 순서가  일치해야 유리

2. 인덱스 순서는 동등 검색 조건이 범위 검색 조건보다 먼저 와야함

3. 일반적으로 B+Tree 인덱스라 보고 B+Tree는 물리적으로는 정렬되어 있지 않아 결과값이 적은 질의에 적합

 

B- tree Index

- DBMS에서 가장 범용적으로 사용하고 있음

- 검색하기 쉽고 빠르다.

- 결과값이 적은 질의에 적합하다

- 일치 및 범위 검색에 적절한 구조이다.

 

Clustered Index

- 범위 질의에 유리

- Order by절이 자주 사용되는 경우

- Join으로 자주 사용되는 칼럼

 

141. 옵티마이저

NL Join - OLPT 등의 목록 처리 업무

Hash Join, Sort Merge Join - DW등의 집계 업무

Comments