> 중요 데이터 유형
- CHARACTER(s) : 고정 길이 문자열 정보. s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 해당 할당된 변수값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워짐.
- VARCHAR(s) : 가변 길이 문자열 정보. s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 해당 할당된 변수 값의 바이트만 적용된다.
- NUMBERIC : 정수 실수 등 숫자 정보.
- DATETIME : 날짜와 시각 정보
> 문자열 유형
- VERCHAR 유형은 가변 길이이므로 필요한 영역은 실제 데이터 크기뿐이다. 그렇기 때문에 길이가 다양한 칼럼과 정의된 길이와 실제 데이터 길이에 차이가 있는 칼럼에 적합
- CHAR 유형은 문자열을 비교할 때 공백을 채워서 비교하는 방법을 사용한다. 끝에 공백만 다른 문자열은 같다고 판단.
> 테이블 생성 규칙
- 테이블명은 다른 테이블의 이름과 중복되지 않아야 한다
- 한 테이블 내에서는 칼럼명이 중복되게 지정될 수 없다
- 칼럼 뒤에 데이터 유형은 반드시 지정되어야 한다
- 테이블 명과 칼럼 명은 반드시 문자로 시작해야하고, 벤더별로 길이에 대한 한계가 있다
- 벤더에서 사전에 정의한 예약어는 쓸 수 없다.
- A-Z, a-z, 0-9, _, $, # 문자만 허용된다.
> 제약 조건의 종류
- 기본키 (PK) : 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 기본키를 정의
- 고유키 (UNIQUE) : 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 기본키를 정의. 단 NULL은 고유키 제약 대상이 아님.
- NOT NULL : NULL 값의 입력을 금지한다. 디폴트 상태에서는 모든 칼럼에서 NULL을 허가하고 있지만, 이 제약을 지정함으로써 해당 칼럼은 입력 필수가 된다.
- CHECK : 입력할 수 있는 값의 범위 등을 제한한다. CHECK 제약으로는 TRUE OR FALSE로 평가하는 논리식을 지정
- 외래키 (FK) : 관계형 데이터베이스에서 테이블 간의 관계를 정의하기 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 생성됨.
> 제약 조건
- 제약 조건은 칼럼 LEVEL 방식과 테이블 LEVEL 방식이 있고 하나의 SQL 문장 내에서 두가지 방식은 혼용해서 사용할 수 있으며, 같은 기능을 가지고 있다.
- NULL 공백이나 숫자 0과는 전혀 다른 값이며, 조건에 맞는 데이터가 없을 때의 공집합과도 다르다.
- 데이터 입력 시에 칼럼의 값이 지정되지 않을 경우 기본값을 사전에 설정 할 수 있다.
> SELECT 문장을 통해 테이블 생성 (CTAS)
- 기본 테이블을 이용한 CTAS 방법을 이용할 수 있다면 칼럼별로 데이터 유형을 다시 재정의하지 않아도 된다
- CTAS 기법 사용시 주의할 점은 기존 테이블의 제약조건 중에 NOT NULL만 새로운 복제 테이블에 적용이 되고, 기본키, 외래키, CHECK 등의 다른 제약 조건은 없어진다는 점이다.
> ALTER TABLE
> ADD 칼럼
- ALTER TABLE 테이블명
ADD (추가할 칼럼명);
- 새롭게 추가된 칼럼은 테이블의 마지막 칼럼이 되며, 칼럼의 위치는 지정할 수 없음.
> DROP 칼럼
- ALTER TABLE 테이블명
DROP COLUMN (삭제할 칼럼명);
- 한번에 하나의 칼럼만 삭제 가능, 칼럼 삭제 후 최소 하나 이상의 칼럼이 테이블에 존재햐야하고 복구 불가능.
> MODIFY 칼럼
- ALTER TABEL 테이블명
MODIFY (칼럼명1 데이텅 유형 [DEFAULT 식] [NOT NULL], ...);
> RENAME 칼럼
- ALTER TABLE 테이블명
RENAME COLUMN 변경해야할 칼럼명 TO 새로운 칼럼명;
> DROP CONSTRAINT
- ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;
> ADD CONSTRAINT
- ALTER TABLE 테이블명
RENAME COLUMN 변경해야할 칼럼명 TO 새로운 칼럼명;
> RENAME TABLE
- RENAME 변경해야할 테이블명 TO 새로운 칼럼명;
> DROP TABLE
- DROP TABLE 테이블명 [CASCADE CONSTRATINT];
> TRUNCATE TABLE
- 테이블 자체가 삭제되는 것이 아니고 해당 테이블에 들어있던 모든 행들이 제거되고 저장공간을 재사용 가능하도록 해제된다. 테이블 구조를 완전히 삭제하기 위해서는 DROP TABLE을 실행해야 한다.
- 데이터 구조의 변경 없이 테이블의 데이터를 일괄 삭제하는 명령어로 DML로 분류할 수도 있지만, 내부처리 방식이나 AUTO COMMIT 특성 등으로 인해 DDL로 분류
- DELETE 와 비교. 처리방식이 아예 다르다.
- 테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서 DELETE 보다는 시스템 부하가 적은 TRUNCATE TABLE을 권고. 단, TRUNCATE TABLE의 경우 정상적인 복구가 불가능함.
출처 : 한국데이터산업진흥원 게시자료