목록분류 전체보기 (73)
으나님의 잡다한 개발상식
- COUNT(*) : NULL값을 포함한 모든 행의 수 계산 - COUNT(컬럼명) : NULL값을 제외한 행 수 계산
1. NVL - NULL이면 다른 값으로 바꿈 NVL(컬럼명, 바꿀 값) EX) NVL(MGR,0) : MGR이 NULL이면 0으로 변환 2. NVL2 - NULL일 때와 NULL이 아닐 때 지정한 값으로 변환 NVL2(컬럼명, 바꿀 값1, 바꿀 값2) EX) NVL2(MGR, 1, 0) : MGR이 NULL이 아니면 1, NULL이면 0을 반환 3. NULLIF - 두 개의 값이 같으면 NULL, 같지 않으면 첫 번째 값 반환 NULLIF(값1, 값2) EX) NULLIF(EXP1, EXP2) : EXP1과 EXP2의 값이 같으면 NULL을, 같지 않으면 EXP1을 반환 4. COALESCE - NULL이 아니면 값을 반환 COALESCE(컬럼명, 값) EX) COALESCE(MGR, 1) : MGR이..
- SELECT 문을 사용할 때 ORDER BY를 통해 오름차순(ASC) 혹은 내림차순(DESC)로 정렬할 수 있다. - ORDER BY가 정렬을 하는 시점은 모든 실행이 끝난 후 데이터를 출력하기 바로 전이다. - ORDER BY는 정렬을 하기 때문에 데이터베이스 메모리를 많이 사용한다. 즉 대략의 데이터를 정렬하게 되면 정렬로 인한 성능 저하가 발생한다. - ORACLE 데이터베이스는 정렬을 위해서 메모리 내부에 할당된 SORT_AREA_SIZE를 사용한다. 만약 SORT_ARIA_SIZE가 너무 작으면 성능 저하가 발생한다. - 정렬을 회피하기 위해 인덱스(INDEX)를 생성하여 사용할 수 있다.
DELETE FROM 테이블명; TRUNCATE TABLE 테이블명; - 테이블의 모든 데이터 삭제 - 데이터가 삭제되어도 테이블 용량은 감소하지 않음 - 테이블의 모든 데이터를 삭제 - 데이터가 삭제되면 테이블의 용량도 초기화됨 ORCLE DB는 저장공간을 할당할 때 EXTENT 단위로 할당하는데, 테이블에 데이터가 입력되면 EXTENT에 저장하게 된다. 만약 EXTENT의 크기가 MAX_EXTENTS를 넘기게 되면 용량 초과 오류가 발생하게 된다. DELETE문은 데이터를 삭제하여도 테이블 용량이 초기화되지 않으며 삭제 여부만 표시한다.
데이터베이스에 데이터를 입력하면 로그파일에 그 정보를 기록한다. CHECK POINT라는 이벤트가 발생하면 로그파일의 데이터를 데이터 파일에 저장한다. NOLOGGING 옵션은 로그파일의 기록을 최소화시켜서 데이터 입력(INSERT) 시 성능을 향상시키는 방법이다. NOLOGGING 옵션은 BUFFER CACHE라는 메모리 영역을 생략하고 기록한다. ALTER TABLE 테이블명 NOLOGGING;
1. 테이블명 변경 ALTER TABLE 원래 테이블명 RENAME TO 바꿀 테이블명; EX) ALTER TABLE EMP RENAME TO NEW_EMP; 2. 컬럼 추가 ALTER TABLE 테이블명 ADD(컬럼명 타입 ...); EX) ALTER TABLE EMP ADD (AGE NUMBER(2) DEFAULT 1); 3. 컬럼 변경 ALTER TABLE 테이블명 MODIFY (바꿀 컬럼명 타입 ...); EX) ALTER TABLE EMP MODIFY (ENAME VARCHAR2(40) NOT NULL); 4. 컬럼 삭제 ALTER TABLE 테이블명 DROP COLUMN 컬럼명; EX) ALTER TABLE EMP DROP COLUMN AGE; 5. 컬럼명 변경 ALTER TABLE 테이블명 ..