STUDY/SQLD

sqld 자주 틀리는 오답.

02:00AM 2021. 11. 18. 16:03

1장 SQL 기본

- SQL Server는 여러개의 컬럼을 동시에 수정하는 구문은 지원하지 않는다.

- SQL Server 에서 괄호를 사용하지 않는다.

 

자주 나옴.

ALTER TABLE '테이블명' 

   ADD CONSTRAINT '_PK명' 

   PRIMARY KEY ('컬럼명')

 

-고유키 (Unique Key)로 지정된 모든 컬럼은 null 값을 가질수도 있다.

 

--------------------------------------------------------------------

-삽입 컬럼을 명시하지 않는경우 모든 컬럼을 삽입해야한다.

Q CREATE TABLE T1

( COL1 NUMBER PRIMARY KEY,

  COL2 NUMBER NOT NULL,

  COL3 VARCHAR2(1)

)

 

INSERT INTO T1 VALUES(100,200);  X

INSERT INTO T1 (COL1,COL2) VALUES (100, 200); O

INSERT INTO T1 VALUES (100,200,'t'); O

-------------------------------------------------------------------

- TRUNCATE TABLE T1 / DROP TABLE T1 로그를 남기지 않는다.

- DELETE TABLE T1 : 삭제데이터에 대한 로그를 남긴다.

 

- Dirty Read :  다른 트랜잭션에 의해 수정되었고, 아직 커밋하지 않은 데이터를 읽음.

 

-참고

DROP TRANCATE DELETE
DDL DDL DML
ROLLBACK 불가능 ROLLBACK 불가능 COMMIT 이전 ROLLBACK 가능.
AUTO COMMIT AUTO COMMIT 사용자 COMMIT
정의자체를 삭제 최초 초기상태 데이터만 삭제.

 

오라클 / SQLServer 비교

- 오라클은 DDL(CREATE, ALTER, DROP, RENAME) 수행후 자동 Commit.

- SQLServer은 이와 반대로 DDL 수행후 자동 Commit하지 않는다.

 

-null 값이 포함된 4칙연산(+,-,*,/) 결과는 null이다.

 

 

 

2장

## Trigger

## Procedure

 

#### 계층형쿼리.

 

 

3장 SQL 최적화 기본원리

 

##실행계획.

- 실행계획.. 실행방법이 달라진다고 결과가 달라지지 않는다.

- 실행계획을 읽는 순서는 위에서 아래로, 안에서 밖으로 읽는다.

- 실행계획은 예상정보이다. 처리결과를 바로 알수 없다. 트레이스 정보를 통해서 알수 있다.

 

- 인덱스(Index)는 조회만을 위한 오브젝트이다. 삽입,삭제,갱신에서는 오히려 부하를 가중한다.

 

## NLJ 과 SMJ 차이를 구별할것!

 

### NLJ(Nested Loop Join)

- 랜덤 엑세스 방식.

- 유니크 인덱스를 활용하여 수행시간이 적게 걸리는 소량 테이블을 조인할때 적합.

 

### SMJ(Sort Merge Join)

- 스캔방식. 넓은 범위의 데이터 처리.

- 비 동등Join(Non- Equi Join)에서 사용할 수 있다.

## Hash Join

- 인덱스를 사용하지 않기 때문에 조인 컬럼의 인덱스가 존재하지 않을 경우에도 사용할수 있다.

- 동등조인(Equi Join)에서만 사용할수 있다.

- 행의 수가 작은 테이블을 선행 테이블로 선택하는것이 유리하다.

- 일반적으로 SMJ보다 성능이 좋지만 Join 대상 테이블이 Join Key 컬럼으로 정렬되어 있을땐

SMJ가 더 우수한 성을을 낸다.