gwooden_코린이
오라클 데이터 베이스 도서관DB 공부해보기 본문
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
'데이터베이스' 카테고리의 다른 글
오라클 데이터 베이스 인덱스(index)색인 (0) | 2023.01.16 |
---|---|
오라클 데이터 베이스 트랜잭션 (0) | 2023.01.16 |
오라클 데이터 베이스 제약조건02 (3) | 2023.01.16 |
오라클 데이터 베이스 제약조건 (0) | 2023.01.13 |
오라클 데이터 베이스 데이터 정의어 (0) | 2023.01.13 |
Comments