YZ ZONE

DB 언어 SQL - DDL 본문

IT

DB 언어 SQL - DDL

러블리YZ 2023. 2. 3. 14:24

데이터 정의어 DDL Data Definition Language

테이블을 생성create하고 변경alter,삭제drop

create table 생성

create table 테이블이름 (
	속성이름 데이터타입 [not null] [default 기본값]
	[primary key (기본키로할속성)]
	[unique (대체키로할속성)]
	[foreign key (외래키로할속성) references 참조되는테이블(참조되는속성)]
		[on delete 삭제옵션] [on update 변경옵션]
	[constraint 고유이름] [check(제약조건)]
);

# 대괄호[]안의 내용은 생략가능
# 문장 끝은 ;

not null: 반드시 입력. 널 값을 허용하지 않음 즉 필수로 입력해야함

default 기본값: 사용자가 값을 입력하지 않으면 이 기본값이 저장됨

고객아이디 verchar(20) not null 
#고객 아이디 속성의 길이가 최대 20이고 반드시 입력해야함

적립금 int default 0
#적립금 속성이 정수이고 기본값은 0
담당자 verchar(10) default '문자' #문자도 가능

primary key(속성): 해당 속성을 기본키로 저장

unique(속성): 해당 속성을 대체키로 지정

foreign key(속성) references 테이블(속성): 외래키. 어떤 테이블의 무슨 속성을 참조하겠다. 이렇게 하면 참조되는 테이블에서 투플을 함부로 삭제,변경 못함.

  • 참조되는 테이블에서 투플 삭제옵션
    • on delete no action: 삭제 못하게. 별도 지정하지 않을시 기본선택됨
    • on delete cascade: 다 같이 삭제
    • on delete set null: 외래키 값 null로 변경
    • on delete set default: 외래키 값 기본값으로 변경
  • 참조되는 테이블에서 투플 변경옵션
    • on update no action: 변경 못하게. 기본선택됨
    • on update cascade: 다 같이 변경
    • on update set null: null로 변경
    • on update set default: 기본값으로 변경
primary key(고객아이디) #고객아이디 속성을 기본키로함

unique(고객이름) #고객이름 속성을 대체키로함

foreign key(소속부서) references 부서(부서번호)
on delete cascade on update cascade

check(제약조건): 특정 속성에 제약조건 지정

constraint 고유이름 check(제약조건): 지정한 제약조건에 고유이름 부여해 식별이 쉬워짐.

check(재고량>= and 재고량<=10000)
#모든 제품의 재고량은 항상 0이상10000이하로 유지

constraint chk_cpy check(제조업체 = '한빛제과')
#모든 제품의 제조업체로 한빛제과만 허용된다는 조건에 chk_cpy라는 이름 부여

 

 

예제1
고객 테이블은 고객아이디, 고객이름, 나이, 등급, 직업, 적립금 속성으로 구성되고, 고객아이디 속성이 기본키다. 고객이름과 등급 속성은 값을 반드시 입력해야 하고, 적립금 속성은 값을 입력하지 않으면 0이 기본으로 입력되도록 고객 테이블을 생성해보자.
create table 고객(
	고객아이디 varcher(20) not null,
	고객이름 varcher(10) not null,
	나이 int,
	등급 varcher(10) not null,
	직업 varcher(20),
	적립금 int default 0,
	primary key(고객아이디)
);
예제2
제품 테이블은 제품번호, 제품명, 재고량, 단가, 제조업체 속성으로 구성되고, 제품번호 속성이 기본키다. 재고량이 항상 0개이상 10,000개 이하를 유지하도록 제품 테이블을 생성해보자.
create table 제품(
	제품번호 char(3) not null,
	제품명 varchar(20),
	재고량 int,
	단가 int,
	제조업체 varchar(20),
	primary key(제품번호)
	check(재고량>=0 and 재고량<=10,000)
);
예제3
주문 테이블은 주문번호, 주문고객, 주문제품, 수량, 배송지, 주문일자 속성으로 구성되고, 주문번호 속성이 기본키다. 주문고객 속성이 고객 테이블의 고객아이디 속성을 참조하는 외래키이고, 주문제품 속성이 제품 테이블의 제품번호 속성을 참조하는 외래키가 되도록 주문 테이블을 생성해보자.
create table 주문(
	주문번호 char(3) not null
	주문고객 varchar(20),
	주문제품 char(3),
	수량 int,
	배송지 varchar(30),
	주문일자 date,
	primary key(주문번호),
	foreign key(주문고객) references 고객(고객아이디),
	foreign key(주문제품) references 제품(제품번호),
);

 

 

alter table 변경

새로운 속성 추가

#새로운 속성 추가
alter table 테이블이름 add 속성이름 데이터타입 [not null] [default 기본값];
#기존 속성 삭제
alter table 테이블이름 drop column 속성이름;
#새 제약조건 추가 
alter table 테이블이름 add constraint 제약조건이름 제약조건내용;
#기존 제약조건 삭제
alter table 테이블이름 drop constraint 제약조건이름;
#예제
alter table 고객 add 가입날짜 date;
alter table 고객 drop column 가입날짜;
alter table 고객 add constraint chk_age check(나이>=20);
alter table 고객 drop constraint chk_age;

drop table 삭제

drop table 테이블이름;

#예제
drop table 배송업체;

'IT' 카테고리의 다른 글

데이터 제어어 DCL Data Control Language  (1) 2023.02.03
DML  (0) 2023.02.03
관계 데이터 모델  (0) 2023.02.03
데이터 모델링  (0) 2023.02.03
데이터베이스 관리 시스템의 구성  (0) 2023.02.03