ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DB 5/12일차 수업 테이블 생성
    프로그래밍/DB 2022. 5. 13. 07:03
    728x90

    1. 테이블 이름 : TITLE 
               (CHECK 제약조건이 있는 경우)

     

    CREATE TABLE title (
       title_id        NUMBER (10) CONSTRAINT title_title_id_pk PRIMARY KEY,
       title           VARCHAR2 (60) CONSTRAINT title_title_nn NOT NULL,
       description    VARCHAR2 (400) CONSTRAINT title_description_nn NOT NULL,
       rating         VARCHAR2 (4)
                        CONSTRAINT title_rating_ck CHECK
                         (rating IN ('G', 'PG', 'R', 'NC17', 'NR')),
       category      VARCHAR2 (20)
                        CONSTRAINT title_category_ck CHECK
                         (category IN ('DRAMA', 'COMEDY', 'ACTION',
                                          'CHILD', 'SCIFI', 'DOCUMEN',
                                          'TARY')),
       release_date   DATE );

     

    2. 테이블 이름 : TITLE_COPY 
             (기본키 2개 있는 경우/ 외래키 1개 있는 경우.)

     

     


    CREATE TABLE title_copy (
    copy_id  NUMBER (10),
     -- title 테이블에 대한 외래키이다. CREATE에서 제약조건 추가시에는
     -- FOREIGN KEY(자식테이블컬럼명)이 생략된다.
    title_id NUMBER(10),
              CONSTRAINT title_copy_title_if_fk REFERENCES title(title_id)
    status  VARCHAR2(15)
              CONSTRAINT title_copy_status_nn NOT NULL
              CONSTRAINT title_copy_stats_ck CHECK
              (status IN ('AVAILABLE', 'DESTROYED', 'RENTED', 'RESERVED')),
      -- PK가 2개이상이면 하나의 CONSTRAINT로 작성.
    CONSTRAINT title_copy_copy_id_title_id_pk PRIMARY KEY (copy_id, title_id));

     

     

     

     

    3. 테이블 이름 : RENTAL 
             (FK가 3개, 2개가 각각 다른 컬럼에 해당하는 경우.)


    CREATE TABLE rental (
      book_date    DATE DEFAULT SYSDATE,
     member_id    NUMBER(10)
                   CONSTRAINT rental_member_id_fk
                   REFERENCES member(member_id),
     copy_id      NUMBER(10),
     act_ret_date DATE,
     exp_ret_date DATE DEFAULT SYSDATE + 2,
     title_id     NUMBER(10),
                  CONSTRAINT rental_book_date_copy_title_pk
                   PRIMARY KEY(book_date, member_id, copy_id, title_id),
                  CONSTRAINT rental_copy_id_title_id_fk
                   FOREIGN KEY(copy_id, title_id)
                   REFERENCES title_copy(copy_id, title_id));

     

    DROP TABLE MEMBER;

    CREATE TABLE MEMBER(
    USERID VARCHAR2(20),
    PASSWD VARCHAR2(20) NOT NULL,
    BIRTHYEAR NUMBER(4),
    REGDATE DATE DEFAULT SYSDATE,
    CONSTRAINT PK_USERID PRIMARY KEY (USERID)
    );

    SELECT * FROM MEMBER;

    --SelectList

    --SelectOne
    SELECT * FROM MEMBER
    WHERE USERID = 'SSSS';

    --데이터 추가
    INSERT INTO MEMBER (USERID,PASSWD,BIRTHYEAR) VALUES('SSSS','1111',0606);
    INSERT INTO MEMBER (USERID,PASSWD,BIRTHYEAR) VALUES('QQQQ','2222',0707);
    INSERT INTO MEMBER (USERID,PASSWD,BIRTHYEAR) VALUES('DDDD','3333',0808);
    INSERT INTO MEMBER (USERID,PASSWD,BIRTHYEAR) VALUES('EEEE','4444',0505);

    --데이터 수정
    UPDATE MEMBER
    SET PASSWD = '0000',
    BIRTHYEAR = 2020
    WHERE USERID = 'SSSS';

    --데이터 삭제
    DELETE FROM MEMBER 
    WHERE USERID = 'QQQQ';

    SELECT * FROM MEMBER
    ORDER BY USERID;

    COMMIT;  

    ROLLBACK;

     

    '프로그래밍 > DB' 카테고리의 다른 글

    Oracel Developer 다운  (0) 2022.08.02
    데이터베이스  (0) 2022.07.26
Designed by Tistory.