공부한 기록/데이터베이스

SQL (3)

YongE 2022. 11. 9. 12:03

데이터정의어 Data Definition language

데이터 생성과 제거, 변경에 관한 명령문이다.

 

CREATE 문

CREATE의 기본 문법

속성이름과 데이터타입을 반드시 작성해야 한다. 

NOT NULL은 NULL값을 허용하지 않는 것이다.

UNIQUE는 컬럼에서 무조건 다른 값을 가져야 한다는 의미이다. 기본키제약조건과 유사해보이지만 NULL값을 허용한다는 점에서 다르다. NULL값마저 거부하려면 NOT NULL을 지정해야 한다.

DEFAULT는 값이 입력되지 않았을 때 사용하는 기본값.

CHECK는 데이터 입력 조건을 붙이는 키워드.

PRIMARY KEY는 기본키를 지정하는 키워드인데 위와 같이 따로 해도 되고, bookid NUMBER PRIMARY KEY 처럼 데이터 타입옆에 제시해도 된다.

FOREIGN KEY는 외래키를 뜻하며 참조될 테이블을 지정해야 한다. 

외래키의 표현

여기서 ON DELETE (CASCADE/ SET NULL)을 뒤에 붙여 표현할 수 있는데,

ON DELETE CASCADE는 참조무결성을 유지하기 위해 데이터 삭제시 참조하는 테이블의 데이터도 같이 삭제한다는 의미이다. SET NULL은 삭제 시에 그 값을 NULL로 변경한다는 의미다.

 

제약조건 키워드 CONSTRAINT

제약조건을 걸고 이름을 붙일 수 있다.  pk_newOrders란 이름의 기본키제약조건을 orderid란 컬럼에 기본키를 지정하며 저장할 수있다.

 

데이터 타입과 종류

여기서 VARCHAR2를 보자. 이는 들어오는 문자열에 따라 크기를 조절하여 저장할 수 있는 타입이다. N값처럼 최대 크기를 정할 수 있다.

 

 

ALTER 문

테이블 속성과 속성에 관한 제약을 변경할 때 사용함.

alter문의 표현

ADD는 속성의 추가, DROP은 속성의 제거, MODIFY는 속성의 기본값 설정 혹은 삭제.

%ADD와 DROP은제약사항을 추가하거나 삭제할 때도 사용가능.

 

ADD

ALTER TABLE NewBook ADD isbn VARCHAR2(13);

ALTER TABLE NewBook MODIFY isbn NUMBER;

두 문장에서 ALTER문의 특징을 알 수 있다. 만약 newbook의 isbn속성에 데이터가 입력되어 있다면 다른 데이터타입으로 바꾸는 것은 불가능하다.  허나 같은 타입의 용량만 바꾸는 것은 가능하다. 예를 들어, VARCHAR2(2)에서 VARCHAR2(10)으로 말이다.

 

ALTER TABLE NewBook ADD PRIMARY KEY(bookid);

기본키를 정할 때 사용하는 문장의 예이다. 만약 여기서 제약조건 Constraint의 이름을 정하고 싶다면 다음과 같이 작성하면 된다.

ALTER TABLE NewBook ADD CONSTRAINT PK_ NB PRIMARY KEY(bookid);

PK_ NB란 이름의 제약조건을 만들었다.

 

DROP문

테이블을 삭제하는 명령이기도 하다. 테이블의 구조와 데이터 모두를 삭제하므로 데이터만 삭제하려면 DELETE문을 사용해야 한다.

1.NewCustomer 테이블을 삭제하시오. 만약 삭제가 거절된다면 원인을 파악하고
관련된 테이블을 같이 삭제하시오(NewOrders 테이블이 NewCustomer를 참조하고 있음)
DROP TABLE NewCustomer;

위의 문제처럼, 삭제하려는 테이블이 참조되고 있는 테이블일 경우 삭제가 불가능하다.

 

 

INSERT문

투플을 삽입하는 명령어다.

insert문의 예시

대량 삽입(bulk insert)이라는, 한꺼번에 여러 개의 투플을 삽입하는 방법이 있다.

insert문에 대해 덧붙이자면, null값이 허용된 속성이면 null값을 집어넣을 수 있다.

 

UPDATE문

테이블의 특정 속성(컬럼)의 값을 수정하는 명령어다. 다음과 같이 표현한다.

 

UPDATE 테이블이름

SET 속성이름1=값1[, 속성이름2=값2, ...]

[WHERE <검색조건>]

update문의 예시

테이블에 제약조건이 있다고 가정하자. 참조무결성 제약조건이다. 이 때 참조되고 있는 테이블의 속성을 바꾸려고 하면 오류가 생긴다. 따라서 제약조건을 바꾸든가, 제약조건을 삭제하든가 해야 한다.

 

DELETE문

DROP문과 다르게 테이블의 '데이터', 즉 투플을 삭제하는 명령어다. 다음과 같이 표현한다.

 

728x90
반응형

'공부한 기록 > 데이터베이스' 카테고리의 다른 글

정규화  (0) 2022.11.24
데이터 모델링  (0) 2022.11.17
SQL 2  (0) 2022.10.26
SQL 1  (0) 2022.10.10
SQL 기초  (0) 2022.10.03