생각하는 감쟈

[Oracle] SQL - DDL 본문

Language/Oracle

[Oracle] SQL - DDL

생각하는 감쟈🥔 2024. 3. 7. 19:01

 DDL
    - 데이터 베이스내의 객체 (object)를 생성, 변경, 삭제를 위한 명령
    
    1. 테이블 생성 명령

    CREATE TABLE 테이블 명(
        컬럼명 데이터타입[크기] [DEFAULT 값][,]
                        :
        컬럼명 데이터타입[크기] [DEFAULT 값][,]

        [CONSTRAINT 기본키설정명 PRIMARY KEY(컬럼명[,컬럼명,...]) [,]
         CONSTRAINT 기본키설정명 PRIMARY KEY(컬럼명) REFERENCES 테이블명 (컬렁명) [ON SELETE CASCADE] [,]
         		:
         CONSTRAINT 기본키설정명 FOREIEN KEY(컬럼명) REFERENCES 테이블명 (컬렁명) [ON SELETE CASCADE] [,]);

                               
         - 테이블 명 : 생성할 테이블이름으로 기존의 테이블명과 중복되어서는 안됨
         - 컬럼명 : 테이블에 포함될 컬럼명으로 한나의 테이블에서 유일한 값이어야하며 다른 테이블 내에서

                         같은 이름이 사용 될 수 있음
         - 데이터 타임 : 오라클에서 사용되는 자료 타임
         - DEFAULT 값 : 데이터 입력시 (INSERT 문) 사용자가 해당 컬럼에 저장될 값을 지정하지 않으면 자동으로 저장될 값
         - 기본키설정명 : 기본키설정에 부여되는 이름으로 유일성 최소성을 충족
         - PRIMARY KEY(컬럼명[컬러명,...]) : 기본키로 정의할 컬렁명, 기본키가 하나 이상의 컬러으로 구성되면 ','로 구분
         - 외래키설정명 : 외래키설정에 부여되는 이름으로 유일한 값이여야하면 하나이상의 외래키가 설정되면 

                                    각각 다른 이름이 부여 되어야 함
         - FOREIEN KEY(컬럼명) : 외래키로 사용될 컬럼명
         - REFERENCES 테이블명 (컬렁명) : 해당 외래키가 참조하는 부모테이블명과 부뫁테이블에서 사용하고있는 컬럼명
         - ON SELETE CASCADE : 부모태이블에서 해당 행이 삭제(DELETE) 될 경우  자식 데이블에서 먼저

                                                    해당 자료를 삭제한 후 부모테이블의 자료를 삭제할 수 있도록 설정

 



사용예) 상품테이블(Goods)를 생성하시오
    ---------------------------------------------------------------
     컬럼명     데이터타임     기본값     PK/FK여부
    ---------------------------------------------------------------
      GID      VARCHAR2(4)                PK
     GNAME     VARCHAR2(50)
     PRICE     NUMBER(7)        0
    ---------------------------------------------------------------

    CREATE TABLE GOODS(
        GID     VARCHAR2(4),
        GNAME   VARCHAR2(50),  
        PRICE   NUMBER(7) DEFAULT 0,
        CONSTRAINT pk_goos PRIMARY KEY(GID));


        
사용예) 고객테이블(CUSTOMERS)를 생성하시오
    ---------------------------------------------------------------
     컬럼명     데이터타임     기본값     PK/FK여부
    ---------------------------------------------------------------
      GID      CHAT(4)                   PK
     CNAME     VARCHAR2(30)
    ---------------------------------------------------------------

    CREATE TABLE CUSTOMERS(
        CID     CHAR(4),
        CNAME   VARCHAR(30),
        CONSTRAINT pk_customers PRIMARY KEY(CID));


        
사용예) 주문 테이블(ORDERS)를 생성하시오
    ---------------------------------------------------------------
     컬럼명     데이터타임     기본값     PK/FK여부
    ---------------------------------------------------------------
     ORDER_ID      NUMBER(5)               PK
     ORDER_DATE    DATE
     CID           CHAR(40                 FK
    ---------------------------------------------------------------

    CREATE TABLE ORDERS(
        ORDER_ID        NUMBER(5),
        ORDER_DATE      DATE,
        CID             CHAR(4),
        CONSTRAINT pk_orders    PRIMARY KEY(ORDER_ID),
        CONSTRAINT fk_ors_cust  FOREIGN KEY(CID)
            REFERENCES CUSTOMERS(CID));


    
    
사용예) 주문상품 테이블(ORDER_GOODS)를 생성하시오
    ---------------------------------------------------------------
     컬럼명     데이터타임     기본값     PK/FK여부
    ---------------------------------------------------------------      

     ORDER_ID   NUMBER(5)               PK & FK
     GID        VARCHAR2(4)                  PK & FK
     ORDER_QTY  NUMBER(4)    0          
    ---------------------------------------------------------------
  

   CREATE TABLE ORDER_GOODS(
        ORDER_ID        NUMBER(5),
        GID             VARCHAR2(4),
        ORDER_QTY       NUMBER(4)  DEFAULT 0,
        CONSTRAINT pk_order_goods    PRIMARY KEY(ORDER_ID,GID),
        CONSTRAINT fk_ogoods_orders  FOREIGN KEY(ORDER_ID)
            REFERENCES ORDERS(ORDER_ID),
        CONSTRAINT fk_ogoods_goods  FOREIGN KEY(GID)
            REFERENCES GOODS(GID));


    
    
2. ALTER명령
    - 테이블명변경, 컬렁 추가, 컬렁 삭제, 컬럼 데이터 타입 변경, 컬럼명 변경에 사용
    
 1)테이블명 변경
    (사용형식)
    ALTER TABLE 원본테이블명 RENAME TO 변경된테이블명;
    - 부모 테이블의 이름이 변경되면 외래키 설정에 사용된 부모테이블의 이름은 자동 변경된
    - 변경된 테이블명은 ROLLBACK되지 않음
    
사용예) GOODS 테이블 이름을 PRODUCT로 변경하시오.

    ALTER TABLE GOODS RENAME TO PRODUCT;


    
    
    

    
    

Comments