본문 바로가기
DataBase/Oracle

[Oracle] 오라클 테이블 생성 (CREATE, PK, COMMENT)

by 알쓸전잡 2025. 7. 20.
반응형

오라클에서 테이블 생성하는 방법은 CREATE TABLE를 사용하여 데이터 구조를 정의하면 되며,

데이터 구조를 정의할 때는 컬럼명, 데이터 타입을 기본적으로 정의하면 됩니다.

 

예제를 통해 테이블을 만드는 방법을 알려 드리겠습니다.

 

  사원(EMP) 테이블 생성 예제

 

테이블 생성 구문
테이블 생성 구문

1. 테이블 명 / 2. 컬럼명

- 반드시 문자(영문, 한글)로 시작 / 숫자, 특수문자로 시작하는 경우 에러 발생(ORA-00903)

- 테이블명, 컬럼명의 길이는 30Byte (Oracle 12c R2 부터는 128Byte 라고 하는데 간략하게 구분만 되는 컬럼명이 좋습니다.)

- 문자(영문, 한글), 숫자, 특수문자(_, $, #) 만 지정 가능 / 특수문자는 일반적으로 _ (언더바) 자주 사용

 

3. 데이터형식

- NUMBER: 가변 길이 정수 (자릿수)

※ NUNBER(5,2): 5자리의 가변 길이 정수와 2자리의 가변길이 소수 Ex) 12345, 123.01

- VARCHAR2: 가변 길이 문자 (Byte 단위)

※ 영문, 숫자, 특수문자: 1Byte, 한글: 2Byte 또는 3Byte

- DATE: 날짜 (DB마다 설정한 기본 형식으로 설정)

※ 추후 작성 예정인 데이터 형식 편 참고

4. 기본값

- 테이블에 값(ROW)을 입력(INSERT)할 때 NULL 또는 해당 컬럼을 선언하지 않는 경우 기본으로 생성되는 값

※ 생략 가능

5. NULL

- NOT NULL 선언하면 해당 컬럼은 NULL 값 불가능

- 해당 컬럼이 PK로 지정되었다면 자동으로 NOT NULL 선언

※ 생략 가능 (선언하지 않으면 기본값 NULL 허용)

 

테이블 생성

CREATE TABLE EMP (
    EMPNO      NUMBER(4)       DEFAULT 7000     NOT NULL,
    ENAME      VARCHAR2(100)                    NOT NULL,
    JOB        VARCHAR2(100),
    MGR        NUMBER(4),
    HIREDATE   DATE,
    SAL        NUMBER(10),
    COMM       NUMBER(10),
    DEPTNO     VARCHAR2(10)
);

 

  테이블 생성 시 선택 사항

 

PK 생성

- ALTER TABLE [테이블명] ADD CONSTRAINT [PK명] PRIMARY KEY ([컬럼명],[컬럼명])

- 데이터가 중복되지 않도록 관리하는 중요한 역할

※ 테이블 생성 시 PK 생성 가능 / 아래 "테이블 생성(PK, COMMENT 선언)" 소스 코드 참조

ALTER TABLE EMP ADD CONSTRAINT EMP_PK PRIMARY KEY (EMPNO); --단일 PK 지정
ALTER TABLE EMP ADD CONSTRAINT EMP_PK PRIMARY KEY (EMPNO, JOB); --다중 PK 지정

 

테이블 설명 (COMMENT)

- 나중에 생성(개발) 의도 파악, 검색을 위해 선언해 두면 관리하기 편해짐

COMMENT ON TABLE EMP IS '사원정보';

 

컬럼 설명 (COMMENT)

- 나중에 생성(개발) 의도 파악, 검색을 위해 선언해 두면 관리하기 편해짐

COMMENT ON COLUMN EMP.ENAME IS '성명';

 

  테이블 생성 (PK, COMMENT 선언)
--테이블 생성 단계에서 PK 선언
CREATE TABLE EMP (
    EMPNO      NUMBER(4) DEFAULT 7000 NOT NULL,
    ENAME      VARCHAR2(100),
    JOB        VARCHAR2(100),
    MGR        NUMBER(4),
    HIREDATE   DATE,
    SAL        NUMBER(10),
    COMM       NUMBER(10),
    DEPTNO     VARCHAR2(10),
    CONSTRAINT EMP_PK PRIMARY KEY (EMPNO)
);

--테이블 설명(코멘트/COMMENT)
COMMENT ON TABLE EMP IS '사원정보';

--컬럼 설명(코멘트/COMMENT)
COMMENT ON COLUMN EMP.EMPNO IS '사원번호';
COMMENT ON COLUMN EMP.ENAME IS '성명';
COMMENT ON COLUMN EMP.JOB IS '직군';
COMMENT ON COLUMN EMP.MGR IS '직속상사';
COMMENT ON COLUMN EMP.HIREDATE IS '입사일';
COMMENT ON COLUMN EMP.SAL IS '급여';
COMMENT ON COLUMN EMP.COMM IS '보너스';
COMMENT ON COLUMN EMP.DEPTNO IS '부서코드';

테이블 생성 결과
테이블 생성 결과

반응형