본문 바로가기
Database

오라클 CREATE TABLE로 테이블 생성하기

by 굿센스굿 2024. 12. 3.
반응형


SQL에서 데이터 관리를 시작하려면 먼저 테이블을 생성해야 합니다. CREATE TABLE 문은 새로운 테이블을 정의하고 스키마를 설계할 때 사용되는 가장 기본적인 명령어입니다. 이 글에서는 CREATE TABLE의 기본 문법부터 고급 옵션과 실무 활용 예제를 다룹니다.


1. CREATE TABLE 기본 문법

1-1. 문법 구조

CREATE TABLE 테이블_이름 (
    열_이름 데이터_타입 [제약조건],
    열_이름 데이터_타입 [제약조건],
    ...
);
  • 테이블_이름: 생성할 테이블의 이름을 지정합니다.
  • 열_이름: 각 열(column)의 이름을 정의합니다.
  • 데이터_타입: 열의 데이터 유형(예: VARCHAR2, NUMBER, DATE)을 지정합니다.
  • 제약조건: 열의 데이터 무결성을 보장하기 위한 조건(예: NOT NULL, PRIMARY KEY)을 설정합니다.

2. 기본적인 CREATE TABLE 예제

예제 1: 직원 테이블 생성

CREATE TABLE 직원 (
    직원ID NUMBER(5) PRIMARY KEY,
    이름 VARCHAR2(50) NOT NULL,
    부서 VARCHAR2(30),
    입사일 DATE,
    급여 NUMBER(10, 2)
);
  • 해석:
    • 직원ID: 숫자로 이루어진 기본 키. 최대 5자리.
    • 이름: 필수 입력값(NOT NULL)이며 최대 50자.
    • 부서: 최대 30자.
    • 입사일: 날짜 데이터.
    • 급여: 소수점 2자리까지 표현 가능한 최대 10자리 숫자.

3. CREATE TABLE의 주요 옵션

3-1. 기본값 설정 (DEFAULT)

열의 기본값을 설정할 수 있습니다.

CREATE TABLE 고객 (
    고객ID NUMBER(5) PRIMARY KEY,
    이름 VARCHAR2(50) NOT NULL,
    가입일 DATE DEFAULT SYSDATE
);
  • 해석: 가입일이 입력되지 않으면 자동으로 현재 날짜(SYSDATE)가 저장됩니다.

3-2. 제약조건

  1. PRIMARY KEY: 테이블에서 각 행을 고유하게 식별합니다.
  2. NOT NULL: 해당 열에 NULL 값을 허용하지 않습니다.
  3. UNIQUE: 열의 값이 중복되지 않도록 보장합니다.
  4. CHECK: 특정 조건을 만족해야 데이터를 삽입할 수 있습니다.
  5. FOREIGN KEY: 다른 테이블의 기본 키를 참조합니다.

예제 2: 제약조건 활용

CREATE TABLE 주문 (
    주문ID NUMBER(5) PRIMARY KEY,
    고객ID NUMBER(5) NOT NULL,
    주문날짜 DATE DEFAULT SYSDATE,
    주문금액 NUMBER(10, 2) CHECK (주문금액 > 0),
    FOREIGN KEY (고객ID) REFERENCES 고객(고객ID)
);
  • 해석:
    • 주문ID: 기본 키.
    • 주문금액: 0보다 큰 값만 입력 가능(CHECK 제약조건).
    • 고객ID: 고객 테이블의 기본 키를 참조하는 외래 키.

3-3. 테이블 생성 시 스키마 지정

특정 스키마에 테이블을 생성하려면 테이블 이름 앞에 스키마 이름을 명시합니다.

CREATE TABLE HR.사원 (
    사원ID NUMBER(5) PRIMARY KEY,
    이름 VARCHAR2(50)
);
  • 해석: HR 스키마에 사원 테이블이 생성됩니다.

4. CREATE TABLE의 고급 활용

4-1. 복합 키 (Composite Key)

테이블의 기본 키를 두 개 이상의 열로 정의할 수 있습니다.

CREATE TABLE 강의 (
    강의ID NUMBER(5),
    학생ID NUMBER(5),
    점수 NUMBER(3),
    PRIMARY KEY (강의ID, 학생ID)
);
  • 해석: 강의ID와 학생ID의 조합이 기본 키로 설정됩니다.

4-2. 테이블 복사

기존 테이블의 구조를 복사하여 새 테이블을 생성할 수 있습니다.

예제 3: 테이블 복사하기

CREATE TABLE 직원_백업 AS
SELECT * FROM 직원;
  • 해석: 직원 테이블의 모든 데이터를 포함한 직원_백업 테이블이 생성됩니다.

조건을 추가한 복사

CREATE TABLE 영업부_직원 AS
SELECT * FROM 직원
WHERE 부서 = '영업';
  • 해석: 부서가 '영업'인 직원들만 포함하는 테이블을 생성합니다.

5. 실무 활용 예제

예제 4: 온라인 쇼핑몰 데이터 모델링

CREATE TABLE 회원 (
    회원ID NUMBER(5) PRIMARY KEY,
    이름 VARCHAR2(50) NOT NULL,
    이메일 VARCHAR2(100) UNIQUE,
    비밀번호 VARCHAR2(50) NOT NULL,
    가입일 DATE DEFAULT SYSDATE
);

CREATE TABLE 상품 (
    상품ID NUMBER(5) PRIMARY KEY,
    상품명 VARCHAR2(100) NOT NULL,
    가격 NUMBER(10, 2) CHECK (가격 > 0),
    재고수량 NUMBER(5) DEFAULT 0
);

CREATE TABLE 주문내역 (
    주문ID NUMBER(5) PRIMARY KEY,
    회원ID NUMBER(5) REFERENCES 회원(회원ID),
    주문날짜 DATE DEFAULT SYSDATE,
    총액 NUMBER(10, 2) CHECK (총액 > 0)
);
  • 해석:
    • 회원: 쇼핑몰 회원 정보를 저장.
    • 상품: 상품의 기본 정보와 재고 관리.
    • 주문내역: 회원과 상품 간의 관계를 저장.

6. 테이블 생성 시 주의사항

  1. 테이블 이름 충돌 방지: 이미 존재하는 테이블 이름과 중복되지 않도록 주의하세요.
    • 기존 테이블을 확인: SELECT * FROM USER_TABLES;
  2. 제약조건 설계: 데이터 무결성을 유지하기 위해 제약조건을 신중히 설정하세요.
  3. 인덱스 활용: 성능 향상을 위해 자주 조회되는 열에 대해 인덱스를 추가 고려하세요.

7. 결론

CREATE TABLE은 데이터베이스 설계의 핵심입니다. 단순한 테이블 생성에서 시작해 제약조건, 복합 키, 고급 옵션 등을 활용하면 데이터의 무결성과 효율성을 극대화할 수 있습니다. 실무에서는 테이블 설계가 데이터 처리와 분석의 기반이 되는 만큼, 설계 단계에서 충분히 고민하고 설계안을 작성하는 것이 중요합니다.

궁금한 점이나 추가적인 도움이 필요하다면 언제든지 문의해주세요! 😊

반응형