DBMS

[DBMS/Oracle] 테이블 생성 및 삭제

elog 2023. 3. 14. 00:00

[DBMS/Oracle] 테이블 생성 및 삭제
[DBMS/Oracle] 테이블 생성 및 삭제

1. 테이블 생성

(사용형식)
    CREATE TABLE 테이블명(
        컬럼명 데이타입[(크기)] [NOT NULL][DEFAULT 값][,]
                            :
        컬럼명 데이타입[(크기)] [NOT NULL][DEFAULT 값][,]
        [CONSTRAINT 기본키설정명 PRIMARY KEY(컬럼명[,컬럼명,...])][,]
        [CONSTRAINT 외래키설정명 FOREIGN KEY(컬럼명) REFERENCES 테이블명(컬럼명)][,]
                           :
        [CONSTRAINT 외래키설정명 FOREIGN KEY(컬럼명) REFERENCES 테이블명(컬럼명)];

- '데이타입[(크기)]': 사용할 데이터 타입과 크기설정.데이터타입은 VARCHAR2, CHAR, CLOB, NUMBER, DATE, BFILE, BLOB등이 있으며 데이터 타입에 따라 크기를 생략하는 경우도 있음(DATE, CLOB, BFILE, BLOB)
- 'DEFAULT 값':데이터 입력시 (INSERT INTO문) 데이터를 정의하지 않으면 자동 저장될 값
- '기본키설정명': 기본키를 설정하는데 부여되는 이름으로 중복되지 말아야 함
- 'PRIMARY KEY(컬럼명[,컬럼명,...])' : 키본키로 사용할 컬럼명 기술 하나 이상의 컬럼을 기본키로 사용할 경우 ','로 구분하여 기술
- '외래키설정명' : 외래키를 설정하는데 부여되는 이름으로 중복되지 말아야 함
- 'REFERENCES 테이블명(컬럼명)' : 부모테이블명과 부모테이블에서 사용하는 컬럼명 기술
- 외래키가 2개 이상인 경우 'CONSTRAINT 외래키설정명' 구문이 외래키의 갯수와 동일하게 2개 이상 있어야 함

 

사용예)한국건설의 사원테이블을 생성    
  CREATE TABLE EMP(
      EMP_ID CHAR(4),
      EMP_NAME VARCHAR2(20),
      EMP_ADDR VARCHAR2(100),
      DEPT_NAME VARCHAR2(50),
      CONSTRAINT PK_EMP PRIMARY KEY(EMP_ID));

    CREATE TABLE SITE(
        SITE_ID NUMBER(5),
        SITE_NAME VARCHAR2(50) NOT NULL,
        SITE_ADDR VARCHAR2(100),
        SITE_TEL_NUM VARCHAR2(20),
        CONSTRAINT PK_SITE PRIMARY KEY(SITE_ID));
    
    CREATE TABLE SITE_MAT(
        SMAT_ID VARCHAR2(5),
        BUY_DATE DATE,
        PRICE NUMBER(7) DEFAULT 0,
        SITE_ID NUMBER(5),
        CONSTRAINT PK_SMAT PRIMARY KEY(SMAT_ID),
        CONSTRAINT FK_SMAT_SITE FOREIGN KEY(SITE_ID) REFERENCES SITE(SITE_ID));

    CREATE TABLE TBL_WORK(
        SITE_ID NUMBER(5),
        EMP_ID CHAR(4),
        IN_DATE DATE,
        CONSTRAINT PK_TBL_WORK PRIMARY KEY(SITE_ID, EMP_ID),
        CONSTRAINT FK_WORK_SITE FOREIGN KEY(SITE_ID) REFERENCES SITE(SITE_ID),
        CONSTRAINT FK_TWORK_EMP FOREIGN KEY(EMP_ID) REFERENCES EMP(EMP_ID));

 

2. 테이블 삭제

(사용형식)
  DROP TABLE 테이블명;

- DROP TABLE명령으로 수행
- 자식테이블을 보유한 부모테이블은 일반적 DROP으로는 삭제될 수 없음
    - 자식테이블이 먼저 삭제된 후 부모테이블 삭제 가능
    - 관계를 삭제한 후 부모 또는 자식테이블 삭제 가능

사용예)EMP테이블을 삭제하시오.
  DROP TABLE EMP;    --(X)
    
  (자식테이블이 먼저 삭제된 후 부모테이블 삭제 가능)
  DROP TABLE TBL_WORK;
  DROP TABLE EMP;

사용예)SITE테이블을 삭제하시오. 
  DROP TABLE SITE;    --(X)
    
  (관계를 삭제한 후 부모 또는 자식테이블 삭제 가능)
  ALTER TABLE 테이블명 DROP CONSTRAINT 외래키설정명
    
  ALTER TABLE SITE_MAT DROP CONSTRAINT FK_SMAT_SITE;
  DROP TABLE SITE;
  DROP TABLE SITE_MAT;