DB

Day 19 - DB(CREATE, ALTER, INSERT, DELETE)

SANGJIN-YU 2021. 3. 9. 22:41
반응형

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';
반응형