본문 바로가기
Database/SQL

[SQL] sqlplus 데이터정의어 (DDL)

by 과외선생J 2020. 11. 18.
반응형

안녕하세요 과외선생 J입니다. 

 

지난 포스팅에서 데이터조작어를 기본적으로 다뤄보았습니다. 

 

이번 시간에는 데이터 정의어 DDL을 알아보겠습니다. 

 

DDL은 CREATE, ALTER, DROP 3가지가 있으며 각각 구조 생성, 구조변경, 구조삭제 기능을 가지고 있습니다. 

 

* 본 포스팅은 중부기술교육원 수업과 한빛미디어 데이터베이스 개론과 실습 책을 기본바탕으로 공부한 뒤 작성되었음을 알립니다. 

 

* 교재의 예제 위주로 이해를 돕기 위해 각 문법에 대한 해설을 달았습니다. 

* SQLdeveloper를 사용하도 되나 SQLPlus로 수업을 하였기에 예제결과는 cmd창으로 보여드립니다. 

 

1. create

1) 기본문법

create table 테이블이름 (속성이름 속성타입);

 

가장 기본적으로 테이블이름, 속성, 속성타입만 넣고 테이블하나를 만들 수 있습니다. 

 

새책 이라는 테이블을 만들어보도록 하겠습니다. 속성은 bookid 라는 속성 하나만 넣겠습니다. 

 

create table newbook ( bookid number );

 

* 속성타입으로는 number, char, varchar, varchar2 가 있습니다.

char, varchar, varchar2 모두 문자형 타입이지만 최신형인 varchar2를 쓰는 것을 권장하고 있습니다. 

 

2) 여러 속성 가진 테이블 생성

 

책id, 책이름, 출판사, 가격 4가지 속성을 가지는 테이블을 만들어 보겠습니다.

속성 사이에 ,(콤마)를 넣어서 여러 속성을 넣을 수 있습니다.

 

create table newbook ( bookid number, bookname varchar2(20), publisher varchar2(20), price number);

 

3) 기본키 지정 방법

기본키까지 지정하면서 테이블을 만드는 명령어는 다음과 같습니다. 

 

create table newbook ( bookid number, bookname varchar2(20), publisher varchar2(20), price number, primary key (bookid) );

기본키 지정은 테이블 만들 때 속성,속성타입,primary key 형태로 입력해도 가능합니다.

 

create table newbook (

bookid number primary key,

bookname varchar2(20),

publisher varchar2(20),

price number );

 

기본키를 2개이상 지정하여 복합키를 지정할 수도 있습니다. 이럴 경우 primary key(속성1, 속성2) 를 사용합니다. 

 

4) 속성의 제약 조건 설정

속성타입 다음에 제약조건을 추가해서 만들 수도 있습니다. 

 

create table newbook (

bookid number primary key not null, 

bookname varchar2(20),

publisher varchar2(20),

price number );

 

제약 조건으로 사용이 가능한 것으로 null, not null, unique, default, check 가 있습니다.

null : null값 허용

not null : null값 비허용

unique : 유일값

default : 기본값

check : 값에 대한 조건 

제약 조건은 하나 이상을 사용할 수 있습니다. 

 

5) 외부키 설정 

 

foreign key (속성이름) 을 사용하면 외부키 지정이 가능합니다. 

 

외부키에 대한 참조를 넣을 수 있습니다. 

foreign key (속성이름) references 테이블이름(속성이름) 

 

on delete 옵션으로 참조테이블 변경에 따른 옵션을 지정할 수 있다.

on delete cascade : 같이 지워짐

on delete set null : 값이 삭제될 경우 null값으로 세팅

옵션 미사용시 : restrict (no action) 

 

6) 통합 문법 설명

 

create table neworders (    // new orders라는 테이블을 만든다.

orderid number,              // order id라는 속성을 숫자타입으로 만든다. 

custid number not null,    // custid 라는 속성을 숫자타입으로 만드는데 null을 허용하지 않는 제약을 건다. 

bookid number not null   // bookid 라는 속성을 숫자타입으로 만드는데 null을 허용하지 않는 제약을 건다. 

oderdate DATE,              // orderdate 라는 속성을 날짜 타입으로 만든다. 

primary key(orderid),      // orderid를 기본키로 지정한다.

foreign key(custid) references newcustomer (custid) on delet cascade );

// custid를 외부키로 지정하며 newcustomer 테이블을 참조하며 참조테이블에서 지워질 경우 같이 지워지는 것으로 제약을 건다. 

 

2. alter

속성, 제약을 변경하는 명령어로 기본키, 외래키 변경도 가능합니다. 

 

1) 기본문법

alter table 테이블 이름 [명령어] 속성이름 (속성타입 또는 제약이름 )

 

2) 명령어 : add, drop

ADD : 속성 추가 명령

DROP : 속성 삭제

MODIFY : 속성 변경

 

3) 예제 

alter table newbook add isbn varchar2(13); 

-> isbn 이라는 속성을 문자 13바이트 타입으로 newbook테이블에 추가한다.

 

 

alter table newbook modify isbn number; 

-> isbn 속성의 타입을 number로 변경한다. 

 

 

alter table newbook drop column isbn; 

-> newbook테이블에서 isbn 속성을 삭제한다. 

 

alter table newbook modify bookid number not null;

-> bookid 속성에 not null 제약을 건다. 

alter table newbook add primary key (bookid); 

-> bookid를 기본키로 변경한다. 

 

3. drop

테이블을 삭제하는 명령어이다. 

 

1) 기본문법

drop table 테이블이름;

 

drop table newbook;

 

 

DDL도 공부가 끝났습니다. 

이제 DCL 하나 남았네요 ㅎㅎ DCL은 아마 다루지 않을까 싶습니다. (완벽하게 공부한 다음 된다면 써보겠습니다.)

 

다들 열공하세요~! 

 

 

 

 

 

 

 

 

 

반응형

'Database > SQL' 카테고리의 다른 글

[SQL] SQL 고급문법 - 부속질의  (0) 2020.11.23
[SQL] SQL 고급문법 - 내장함수  (0) 2020.11.23
[SQL] SQLPlus 명령어 DML - 3탄  (1) 2020.11.17
[SQL] SQLPlus 명령어 DML - 2탄  (1) 2020.11.17
[SQL] SQLPlus 명령어 DML - 1탄  (1) 2020.11.17

댓글