Day 19 - DB(CREATE, ALTER, INSERT, DELETE)
Entity(테이블 인스턴스 어커런스)
이해관계자
도서
책(book)
책이름
저자
출판사
가격
출판일
관계차수 cardinality
Entity(복수)
Realtionship(관계)
Cardinality(관계차수)
제약조건은 테이블이다
'' NULL로 판단
NULL NULL로 판단
CREATE
-- CREATE TABLE 테이블명 (컬럼명 타입, 컬럼명 타입,....); <- 이렇게 작성하면 됨
CREATE TABLE BOOK(
SEQ NUMBER,
TITLE VARCHAR2(50),
AUTHOR VARCHAR2(10),
PUBLEID CHAR(5),
PRICE NUMBER(6,2),
REGDATE DATE,
STATUSCODE CHAR(1)
);
-- 책상태
CREATE TABLE STATUS(
STATUSCODE CHAR(1),
STATUSNAME VARCHAR(10)
);
--출판사
CREATE TABLE PUBLISHER(
PUBLEID CHAR(5),
PUBLNAME VARCHAR2(30)
);
-- 제약조건 작성 방법 : 컬럼 LEVEL 정의 방식, 테이블 LEVEL 정의 방식
-- SEQ NOT NULL, 맨마지막 줄에 CONSTRAINT PK PRIMARY KEY(SEQ)
-- 각테이블의 PK(PRIMARY KEY) : 주키 식별자
-- 특징 : 유일성, 중복성, 존재성 => 무결성 제약조건
-- NOT NULL, INDEX 자동생성
ALTER
-- ALTER 명령어 생성된 테이블을 추가 변경할 때 사용
-- 제약조건 작성 방법 : 컬럼 LEVEL 정의 방식, 테이블 LEVEL 정의 방식
-- SEQ NOT NULL, 맨마지막 줄에 CONSTRAINT PK PRIMARY KEY(SEQ)
-- PK 제약 조건
ALTER TABLE BOOK ADD CONSTRAINT BOOK_PK PRIMARY KEY(SEQ);
ALTER TABLE STATUS ADD CONSTRAINT STATUS_PK PRIMARY KEY(STATUSCODE);
ALTER TABLE PUBLISHER ADD CONSTRAINT PUBL_PK PRIMARY KEY(PUBLEID);
-- FK 제약조건
ALTER TABLE BOOK ADD CONSTRAINT BOOK_F1 FOREIGN KEY(PUBLED)REFERENCES PUBLISHER(PUBLID);
ALTER TABLE BOOK ADD CONSTRAINT BOOK_F2 FOREIGN KEY(STATUSCODE) REFERENCES STATUS(STATUSCODE);
PK는 NOT NULL이 저절로 됨
-- FK되어 있는 컬럼이 값을 필수적으로 입력할 수 있도록 NOT NULL 제약조건을 설정
-- BOOK(PUBLED, STATUSCODE)
ALTER TABLE BOOK MODIFY PUBLED NOT NULL;
ALTER TABLE BOOK MODIFY STATUSCODE NOT NULL;
FK는 다른 테이블의 PK이기 때문에 NOT NULL 이어야 함
INSERT
-- INSERT는 SYNTEX
-- INSERT INTO 테이블명 VALUES(값, 값,....) -- 익명적 방법 // 컬럼의 순서를 정확하게 알아야 함, 모든 값을 입력
-- INSERT INTO 테이블명 (컬럼,컬럼) VALUES(값, 값) -- 명시적 방법 // 컬럼 선택, 순서 마음대로
INSERT INTO EMP_CONSTRAINT
VALUES('01','Goodee001','50','W','1000.10','2021.03.10');
-- CEHCK 제약조건은 반드시 NOT NULL이어야 함
-- DEFAULT는 반드시 NULL 허용이어야 함 -> 명시적 방법
-- FK 컬럼은 다른 테이블과 관계로 형성되어야 하는 컬럼이기 때문에 NOT NULL 해줘야 한다
-- 1이 입력되어 있는 상테에서 1을 또 입력하면 유일성 오류가 생김
-- ''와 NULL은 모두 NULL이라는 값이 된다
UPDATE
-- UPDATE SYNTEX
-- UPDATE 테이블명 SET 컬럼 = '변경값', 컬럼 = '변경값' [WHERE 컬럼='값']
UPDATE BOOK SET PRICE = '9000', PUBLED = 'P002'
WHERE SEQ = '1';
DELETE
-- DELETE SYNTEX
-- DELETE FROM 테이블명 [WHERE 컬럼 = '값']
DELETE FROM PUBLISHER p
WHERE PUBLID = 'P001';