gwooden_코린이

오라클 데이터 베이스 도서관DB 공부해보기 본문

데이터베이스

오라클 데이터 베이스 도서관DB 공부해보기

gwooden22 2023. 1. 16. 13:16
728x90

create table 도서(
    도서코드 VARCHAR(20) PRIMARY KEY,
    도서명 VARCHAR(50) NOT NULL,
    대여가격 NUMBER DEFAULT 1000 CHECK(대여가격>=0),
    장르 VARCHAR(50),
    출판사 VARCHAR(50)
);

SELECT * FROM 도서;

INSERT INTO 도서
    VALUES('A001', '해리포터', 500, '소설', '영진');

--기본키와, NOT NULL에 위배되므로 안됨
INSERT INTO 도서(도서코드)
    VALUES('AOO1');

--정상작동
INSERT INTO 도서(도서코드, 도서명)
    VALUES('AOO1', '오라클');

SELECT * FROM 도서;



CREATE TABLE 고객 (
    고객코드 VARCHAR(20) PRIMARY KEY,
    고객명 VARCHAR(50) NOT NULL,
    전화번호 VARCHAR(50),
    주소 VARCHAR(50),
    나이 NUMBER CHECK(나이 BETWEEN 10 AND 90),
    등급 VARCHAR(50) CHECK(등급 IN('일반', '우수', 'VIP'))
);


DESC 고객;

INSERT INTO 고객
    VALUES('P001', '김유신', '010-1234-4456', '서울', 20, '일반');
    
SELECT * FROM 고객;

--나이에 설정된 제약조건에 위배되므로 오류
INSERT INTO 고객(고객코드, 고객명, 나이)
    VALUES('P002', '김유신', 5);
    
--등급에 설정된 제약조건에 위배되므로 오류
INSERT INTO 고객(고객코드, 고객명, 등급)
    VALUES('P002', '티모', 'VVIP');
    
--고객 테이블에 모든 회원들은 나이가 1살 증가
UPDATE 고객 SET 나이 = 나이+1;

SELECT * FROM 고객;


CREATE TABLE 대여내역 (
    고객코드 VARCHAR(20) CONSTRAINT 고객코드_FK REFERENCES 고객(고객코드),
    도서코드 VARCHAR(20) CONSTRAINT 도서코드_FK REFERENCES 도서(도서코드),
    대여일자 DATE DEFAULT SYSDATE,
    반납일자 DATE,
    연체료 NUMBER,
    반납여부 VARCHAR(20) CHECK(반납여부 IN('Y', 'N'))
);

SELECT * FROM 대여내역;

COMMIT;

-- 순서 올바르게 입력하지 않을 경우
-- 고객테이블에 고객코드가 A001이 없어서
-- 도서테이블에 도서코드가 P001이 없어서 제약조건에 위백 됨
INSERT INTO 대여내역
    VALUES('P001', 'A001', '2023-01-01', '2023-01-01', 0, 'Y');
    
SELECT * FROM 대여내역;
SELECT * FROM 고객;
SELECT * FROM 도서;

--참조하는 (자식)테이블에 P001이 있어서 삭제 안됨
DELETE FROM 고개 WHERE 고객코드 = 'P001';

--참조하는 (자식)테이블에 A001이 있어서 삭제 안됨
DELETE FROM 고개 WHERE 도서코드 = 'A001';

 

728x90
Comments