정보의 보물창고

[OraclSQL]테이블 객체 ( 예제 포함) 본문

개발 Memo/Oracle

[OraclSQL]테이블 객체 ( 예제 포함)

☆★※☆★※ 2021. 5. 12. 19:09
반응형

1. 테이블 생성
    -관계형 데이터베이스의 기본구조
    -행과 열로 구성
    -테이블명은 해당 데이터베이스에서 유일한 식별자 이어야함
    *변수명 ,컬럼명,테이블명은 이름을 잘 지어서 어떤 내용인지 파악할 수 있게 해야함


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


 

NOT NULL

->NULL을 허용하지 않는다. 데이터가 저장되려면 반드시 있어야 하는 항목에 추가됨.

적지 않으면 빈칸이여도 데이터가 저장됨

 

DEFAULT

->사용자가 데이터를 기술하지 않으면 자동으로 들어가는 값

 

,를 꼭 붙여줘야 함]

 

외래키가 없이 기본키만 있을경우 기본키만 적고 끝내도 된다.

관계가 맷어지면 외래키를 설정 해줘야함

부모테이블에 있는것을 자식테이블로 가져와야함

 

외래키는 

다른테이블의 키를 나의 테이블에 기본키로 사용하는 경우가 있음(기본키면서 외래키인 경우)



        
    사용예) 교안에서 주어진 한국건설의 업무를 DB 모델로 모델링한 자료를 이용하여 테이블을 생성하시오
    
    1) 사원테이블
    (1)테이블명 : EMPLOYEE
    (2)컬럼 및 제약사항
    ---------------------------------------------------------
    컬럼명          데이터타입           NULL       PK/FK
    ---------------------------------------------------------
    EMP_ID          CHAR(4)             N.N        PK
    EMP_NAME        VARCHAR2(20)        N.N 
    EMP_ADDR        VARCHAR2(80)         
    TEL_NO          VARCHAR2(20)         
    EMP_POSITION    VARCHAR2(30)                 
    DEPT_NAME       VARCHAR2(20) 
    ---------------------------------------------------------
    
    CREATE TABLE EMPLOYEE(
        EMP_ID       CHAR(4)         NOT NULL,
        EMP_NAME     VARCHAR2(20)    NOT NULL,
        EMP_ADDR     VARCHAR2(80),
        TEL_NO       VARCHAR2(20),
        EMP_POSITION VARCHAR2(30),
        DEPT_NAME    VARCHAR2(20),
        
        CONSTRAINT pk_employee PRIMARY KEY(EMP_ID));
        
       



    2) 사업장테이블
    (1)테이블명 : SITE
    (2)컬럼 및 제약사항
    --------------------------------------------------------------------
    컬럼명          데이터타입            NULL       PK/FK
    --------------------------------------------------------------------
    SITE_NO          CHAR(6)             N.N        PK      --사업장 번호
    SITE_NAME        VARCHAR2(50)        N.N                --사업장명
    SITE_ADDR        VARCHAR2(80)                           --사업장 주소
    SITE_TEL_NO      VARCHAR2(20)                           --사업장 전화번호
    AMOUNT_CON       NUMBER(11)         DEFAULT 0           --공사금액
    INPUT_MAN_CNT    NUMBER(4)                              --투입인원
    START_DATE       DATE                                   --시공일자
    COMLITE_DATE     DATE                                   --완공일자
    REMARK           VARCHAR2(200)                          --비고
    --------------------------------------------------------------------
    
    CREATE TABLE SITE(
        SITE_NO          CHAR(6),                               --사업장 번호,NOT NULL을 써도 좋고 안써도 좋음
        SITE_NAME        VARCHAR2(50)     NOT NULL,              --사업장명
        SITE_ADDR        VARCHAR2(80),                           --사업장 주소
        SITE_TEL_NO      VARCHAR2(20),                           --사업장 전화번호
        AMOUNT_CON       NUMBER(11)         DEFAULT 0,           --공사금액
        INPUT_MAN_CNT    NUMBER(4),                              --투입인원
        START_DATE       DATE,                                   --시공일자
        COMLITE_DATE     DATE ,                                  --완공일자
        REMARK           VARCHAR2(200),                          --비고
        
        CONSTRAINT pk_site PRIMARY KEY(SITE_NO));


        
    3) 사업장 자재 테이블 
        (1)테이블명 : SITE_ITEM
        (2)컬럼 및 제약사항 
        --------------------------------------------------------------------
        컬럼명                 데이터타입           NULL      PK/FK
        --------------------------------------------------------------------
        SITE_ITEM_ID          CHAR(6)             N.N        PK      -- 자재 코드
        SITE_ITEM_NAME        VARCHAR2(30)        N.N                -- 자재명
        AMT                   NUMBER(3)                              -- 수량
        PRICE                 NUMBER(8)                              -- 가격
        BUY_DATE              DATE                                   -- 구입일
        SITE_NO               CHAR(6)                        FK      -- 사업장 번호 , 사업장 테이블이 있어야 만들수 있음
        --------------------------------------------------------------------


    CREATE TABLE SITE_ITEM( 
        SITE_ITEM_ID          CHAR(6)        NOT NULL,        -- 자재 코드,NOT NULL을 써도 되고 안써도 됨
        SITE_ITEM_NAME        VARCHAR2(30)   NOT NULL,            -- 자재명
        QTY                   NUMBER(3),                              -- 수량
        PRICE                 NUMBER(8),                              -- 가격
        BUY_DATE              DATE,                                   -- 구입일
        SITE_NO               CHAR(6),                            -- 사업장 번호 , 사업장 테이블이 있어야 만들수 있음
        CONSTRAINT pk_site_item PRIMARY KEY(SITE_ITEM_ID),
        CONSTRAINT fk_sis FOREIGN KEY(SITE_NO) REFERENCES SITE(SITE_NO)); --fk_site_item_SITE 을 줄여서 fk_sis로 적음
        
        
 4) 근무 테이블 
        (1)테이블명 : TBL_WORK
        (2)컬럼 및 제약사항 
        --------------------------------------------------------------------
        컬럼명                 데이터타입           NULL      PK/FK
        --------------------------------------------------------------------
        EMP_ID               CHAR(4)              N.N        PK,FK      -- 사원번호
        SITE_NO              CHAR(6)              N.N        PK,FK      -- 사업장 번호
        INS_DATE             DATE     DEFAULT SYSDATE        
        --------------------------------------------------------------------
        
        
     CREATE TABLE TBL_WORK( 
        EMP_ID               CHAR(4)            NOT NULL,    -- 사원번호
        SITE_NO              CHAR(6)            NOT NULL,    -- 사업장 번호
        INS_DATE             DATE     DEFAULT SYSDATE,
        
        CONSTRAINT pk_tblwork PRIMARY KEY(EMP_ID,SITE_NO),
        CONSTRAINT fk_tblwork_emp FOREIGN KEY(EMP_ID) 
            REFERENCES EMPLOYEE(EMP_ID),
        CONSTRAINT fk_tblwork_site FOREIGN KEY(SITE_NO) 
            REFERENCES SITE(SITE_NO)      
            ); --fk_site_item_SITE 을 줄여서 fk_sis로 적음


기타

부모의 기본키가 자식의 기본키일경우 직선으로 표시되어있음

(식별자 관계)

 

부모의 기본키가 자식의 일반 항목으로 표시되어 있으면 점선으로 표기됨

 

반응형