프로그래밍/DB

DB 5/12일차 수업 테이블 생성

COPAN 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;