[Oracle] 테이블 생성 및 컬럼 데이터 타입 / 기본키, 외래키 제약조건

EUN JY·2022년 8월 11일
1

Database

목록 보기
6/21

1. 테이블

1-1. 테이블 생성

CREATE TABLE [테이블명] 
(
    [컬럼명] NUMBER(10) NOT NULL 
    , [컬럼명] VARCHAR2(20)
);
-- 삭제 : DROP TABLE USER_INFO;

1-1-1. 기본키 생성

  • 테이블을 생성하면서 PK 지정 (컬럼 옆에 옵션 추가)
CREATE TABLE TAB1(
    COL1 NUMBER NOT NULL PRIMARY KEY,
    COL2 VARCHAR2(10)
);
  • 테이블을 생성하면서 PK 지정 (하단에 제약 조건 추가)
CREATE TABLE TAB1(
    COL1 NUMBER NOT NULL,
    COL2 VARCHAR2(10),
    CONSTRAINT PK_TAB1 PRIMARY KEY(COL1)
    -- CONSTRAINT [PK명] PRIMARY KEY([PK 컬럼명])
);
  • 테이블 생성 후 PK 지정
ALTER TABLE TAB1
ADD CONSTRAINT PK_TAB1 PRIMARY KEY(COL1);

1-1-2. 기본키 삭제

ALTER TABLE TAB1
DROP CONSTRAINT PK_TAB1;

1-1-3. 외래키 생성

  • 테이블을 생성하면서 FK 지정
/*
CREATE TABLE TAB1(
    COL1 NUMBER NOT NULL PRIMARY KEY,
    COL2 VARCHAR2(10)
);
*/
CREATE TABLE TAB2 (
    COL3 NUMBER NOT NULL PRIMARY KEY,
    COL4 NUMBER NOT NULL,
    COL5 VARCHAR2(10),
    CONSTRAINT FK_TAB2 FOREIGN KEY(COL4) REFERENCES TAB1 (COL1)
    -- CONSTRAINT [FK명] FOREIGN KEY([FK 컬럼명]) REFERENCES [PK가 있는 테이블] ([PK 컬럼명])
);
  • 테이블 생성 후 FK 지정
ALTER TABLE TAB2
ADD CONSTRAINT FK_TAB2 FOREIGN KEY(COL4) REFERENCES TAB1 (COL1);

1-1-4. 외래키 삭제

ALTER TABLE TAB2
DROP CONSTRAINT FK_TAB2;

1-1-5. 제약조건 확인

SELECT * FROM ALL_CONSTRAINTS WHERE TABLE_NAME = '[테이블명]';

1-2. 컬럼 데이터 타입

1-2-1. 문자 데이터 타입

  • CHAR(n) : 고정길이 문자(최대 2000byte, 디폴트값 1byte)
  • VARCHAR2(n) : 가변길이 문자(최대 4000byte, 디폴트값 1byte)
  • NCHAR(n) : 고정길이 유니코드 문자(최대 2000byte, 디폴트값 1byte, 다국어 입력 가능)
  • NVARCHAR(n) : 가변길이 유니코드 문자(최대 2000byte, 디폴트값 1byte, 다국어 입력 가능)
  • LONG : 최대 2GB 크기의 가변길이 문자형
  • CLOB : 대용량 텍스트 데이터 타입(최대 4GB)
  • NCLOB : 대용량 텍스트 유니코드 데이터 타입(최대 4GB)

1-2-2. 숫자 데이터 타입

  • NUMBER(P,S) : 가변숫자(최대 22byte, P : 1~38, 디폴트값 38 / S : -84~127, 디폴트값 0)
  • FLOAT(P) : NUMBER 의 하위 타입(최대 22byte, 이진수 기준, P : 1~128, 디폴트값 128)
  • BINARY_FLOAT : 32비트 부동소수점 수(최대 4byte)
  • BINARY_DOUBLE : 64비트 부동소수점 수(최대 8byte)

1-2-3. 날짜 데이터 타입

  • DATE : 연, 월, 일, 시, 분, 초까지 입력(BC 4712년 1월 1일부터 9999년 12월 31일)
  • TIMESTAMP : 연, 월, 일, 시, 분, 초 + 밀리초까지 입력 가능

1-2-4. LOB 데이터 타입

  • 대용량 데이터를 저장할 수 있는 데이터 타입을 LOB(Large Object) 이라고 함
  • CLOB : 문자형 대용량 객체 고정길이와 가변길이 문자집합 지원
  • NCLOB : 유니코드를 지원하는 문자형 대용량 객체
  • BLOB : 이진형 대용량 객체(그래픽, 이미지, 동영상 등의 데이터 저장 시 사용)
  • BFILE : 대용량 이진 파일에 대한 위치, 이름 저장

1-3. 컬럼 제어

  • 컬럼 추가 : ALTER TABLE [테이블명] ADD([컬럼명] [데이터타입, 사이즈]);
  • 컬럼 수정 : ALTER TABLE [테이블명] MODIFY([컬럼명] [데이터타입, 사이즈]);
  • 컬럼 삭제 : ALTER TABLE [테이블명] DROP COLUMN [컬럼명];
  • 컬럼명 변경 : ALTER TABLE [테이블명] RENAME COLUMN [기존 컬럼명] TO [변경 컬럼명];
profile
개린이

0개의 댓글