테이블 만들기
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 ‘남자’;
'Backend > db' 카테고리의 다른 글
SQL연습_기초문제 (0) | 2018.08.18 |
---|---|
제약조건(추가,삭제,(비)활성화,확인) (0) | 2018.08.17 |
DML,DDL,DCL (0) | 2018.08.17 |
SQL 문장 작성법 (0) | 2018.08.17 |
SQL 이란 무엇인가. (0) | 2018.08.17 |
#IT #먹방 #전자기기 #일상
#개발 #일상