sqld 자주 틀리는 오답.
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가 더 우수한 성을을 낸다.