Backend/db

테이블 만들기 ( 기본 데이터 타입 , 제약조건 )

IT grow. 2018. 8. 17. 22:35
반응형

테이블 만들기

1.     이름 지정 규칙

ㄱ.   문자 , _ , $ , # 조합 ( 한글도 가능 )

ㄴ.   첫 글자는 문자로 시작

ㄷ.   예약어 사용안됨

ㄹ.   길이 제한 ( 1~30 )

 

2.     기본 데이터 타입

VARCHAR2(n)

가변 길이 문자 데이터 (4000byte)

CHAR(n)

고정 길이 문자 데이터 (2000byte)

NUMBER(p,s)

전체 p 자리 중 소수점 이하 s 자리

DATE

날짜형

LONG

가변 길이 문자 데이터 (2Gbyte)

BLOB

가변 길이 이진 데이터 (4Gbyte)

CLOB

단일 바이트 가변 길이 문자 데이터 (4Gbyte)

Tip : varchar도 현재는 varchar2와 동일하지만 ,추후에 오라클에서 별도의 데이터 타입으로 지정한다고 사용하지 말라고 권고한다.

한글은 2bytes

‘number ( 전체자릿수 , 소수점 이하 자릿수 ) : 지정된자릿수를 맞추기 위해 반올림됨

‘timestamp : date보다 정밀하다.

 

3.     제약조건

- NOT NULL

` null 값을 허용하지 않음

 ( 컬럼레벨 방식으로만 적용 )

- UNIQUE

유일하게 식별하는 값만 허용 -> 중복허용안함

 ( PRIMARY KEY와 유사하나 null값 허용됨 )

- PRIMARY KEY

` null값 허용하지 않고 유일하게 식별

 ( UNIQUE + NOT NULL )

` UNIQUE INDEX 자동생성

- FOREIGN KEY

다른 테이블의 PK를 참조

- CHECK

제한적인 입력처리

(*) DEFAULT

제약조건은 아니지만입력값이 없을 때 디폴트 설정값으로 자동 입력됨



PRIMARY KEY 지정시


1.     컬럼 레벨 제약조건 방식이다

è  CREATE TABLE table_name (

Column_name data_type [ CONSTRAINT pk_name ] PRIMARY KEY

è  );

TIp : 모든 제약 조건은 DATA DICTIONARY에 저장하는데, 제약 조건 이름을 의미 있게 부여하면 참조하기 쉽기 때문에 규칙적인 제약조건이름을 권장한다.

EX )pk_tablename_columnname or tablename_columnname_pk


2.     테이블 레벨 제약조건 방식이다

è  CREATE TABLE table_name(

Column_nam data_type,

CONSTRAINT pk_name PRIMARY KEY [ column_name ]

è  )

 

FOREIGN KEY 지정시


1.     컬럼 레벨 제약조건 방식

è  CREATE TABLE table_name(

Column_name data_type CONSTRAINT fk_name

REFERENCES ref_table_name ( ref_column_name )

è  );


2.     테이블 레벨 제약조건 방식

è  CREATE TABLE table_name(

Column_name data_type,

CONSTRAINT fk_name FOREIGN KEY (column_name)

REFERENCES ef_table_name ( ref_column_name )

è  );

 

만약 테이블 생성 후 제약조건을 추가한다면 à 테이블 수정을 해야 한다.


ALTER TABLE table_name ADD

CONSTRAINT pk_name PRIMARY KEY ( column_name );

ALTER TABLE table_name ADD

CONSTRAINT fk_name FOREIGN KEY ( column_name )

REFERENCES ref_tabe_name ( ref_column_name );


 

CHECK 지정시

EX )

Gender varchar2(10) NOT NULL

CONSTRAINT check_gender CHECK ( gender IN ( ‘남자’,’여자’) )


DEFAULT 지정시

EX )

Gender varchar2(10) DEFAULT ‘남자’ NOT NULL

# DEFAULT는 NOT NULL 과 같이 기술시 앞에 기술

 

만약 테이블 생성 후 제약조건을 추가해야 한다면 à 테이블 수정이다.

ALTER TABLE table_name

MODIFY gender DEFAULT ‘남자’;


반응형