데이터베이스/SQLD

3-2 DDL

Frankie 2022. 9. 19. 15:07

1. 데이터 유형

1) CHARACTER

- s는 기본 길이 1바이트

- 최대 길이 Oracle 2000바이트, SQL Server 8000바이트

- 고정 길이를 갖고 있음.

 

2) VARCHAR

- 가변 길이 문자열 정보

- Oracle은 VARCHAR2, SQL Server는 VARCHAR

- s는 최소 길이 1바이트, 최대 길이 Oracle 4000바이트, SQL Server 8000바이트

- 할당된 변수값의 바이트만 적용(Limit 개념)

 

3) NUMERIC

- 정수, 실수 등의 숫자 정보

- Oracle은 NUMBER, SQL Server는 10가지 이상의 숫자 타입 보유

 

4) DATETIME

- 날짜와 시각 정보

- Oracle은 DATE, SQL Server는 DATETIME

 

CHAR 유형

'AA' = 'AA   ' -> 공백 추가해 같은 길이가 되도록 비교

 

VARCHAR 유형

'AA' != 'AA   ' -> 공백도 하나의 문자로 취급

 

2. 테이블 생성

- 테이블 명 단수형 권고

- 한 테이블 내에서 칼럼명 중복 x

- 칼럼에 대해서 다른 테이블까지 고려하여 데이터베이스 내에서 일관성 있게 사용하는 것 좋다(데이터 표준화 관점)

- 테이블과 칼럼명은 반드시 문자로 시작

- A-Z, a-z, 0-9, _, $, # 문자만 허용

- 테이블 생성시 대/소문자 구분 x

- 문자 데이터 유형은 반드시 가질 수 있는 최대 길이 표시

 

제약조건: 사용자가 원하는 조건의 데이터만 유지하기 위한 즉, 데이터의 무결성을 유지하기 위한 테이블의 특정 칼럼에 설정하는 제약(PK, UNIQUE KEY, NOT NULL, CHECK, FK)

* UNIQUE KEY(고유키): 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키, 단 NULL은 고유키 제약 대상 X

* CHECK: 입력할 수 있는 값의 범위 등을 제한. TRUE or FALSE로 평가 가능한 논리식 지정

 

테이블 구조 확인

- Oracle: "DESCRIBE 테이블명;"

- SQL Server": "sp_help 'dbo.테이블명'"

 

CTAS(Create Table ~ As Select ~) 기법 사용시 기존 테이블의 제약조건 중에 NOT NULL만 새로운 복제 테이블에 적용이 되고, 기본키/고유키/외래키/CHECK 등의 다른 제약 조건은 없어진다는 점이다.

 

3. 테이블 수정

 

1) 컬럼 추가

ALTER TABLE 테이블명

ADD 추가할 컬러명 데이터유형(데이터크기);

 

2) 컬럼 삭제

ALTER TABLE 테이블명

DROP COLUMN 삭제할컬럼명;

 

3) 컬럼 수정: 컬럼의 데이터 유형, 디폴트값, NOT NULL 제약조건에 대한 변경을 포함 가능

ALTER TABLE 테이블명

MODIFY (컬럼명1 데이터 유형 [DEFAULT 식] [NOT NULL],

                컬럼명2 데이터 유형 ```);

 

- 해당 컬럼의 크기를 늘릴 수는 있지만 줄이진 못한다

- 해당 컬럼이 NULL값만 가지고 있거나 테이블에 아무 행도 없으면 컬럼의 폭을 줄일 수 있다.

- 해당 컬럼이 NULL 값만을 가지고 있으면 데이터 유형 변경 가능

- 해당 컬럼의 DEFAULT 값을 바꾸면 변경 작업 이후 발생하는 행 삽입에만 영향을 미치게 된다.

- 해당 컬럼의 NULL 값이 없을 경우에만 NOT NULL 제약 조건 추가 가능

 

4) 컬럼 이름 변경

ALTER TABLE 테이블명

RENAME COLUMN 변경해야 할 컬럼명 TO 새로운 컬럼명;