본문 바로가기
Programming/SQL

SQL / DDL (Data Definition Language) 데이터 정의어

by with chu 2021. 3. 16.
728x90

DDL (Data Definition Language)

1. Create       2. Alter      3. Drop      4. Truncate


 

DDL :   데이터를 담는 그릇을  정의하는 언어

DDL로 관리하는 대상 :    Dmain (도메인), Schema (스키마/DB구조), Table(테이블), View (뷰), Index (인덱스)

 

1. Create - 생성

create table board(
                  no number,
                  id varchar2(20) primary key,
                  title varchar2(20) not null,
                  content nvarchar2(2),
                  name char(10),
                  regdate date);
constraint emp2_empno_pk primary key(empno));
commit;   # 트랜젝션 확정 (DCL)
rollback; # 실행 취소 (DCL)

컬럼명과 타입, 제약조건을 명시해주고 테이블을 생성한다.

테이블 생성 후 꼭 commit 해줘야 반영 된다. commit 은 트랜잭션 확정이라는 뜻의 데이터 제어어(DCL)이다.

 

테이블 복제하는 법

SQL> create table copyemp
  2  as
  3  select empno,ename,sal,mgr,hiredate
  4  from emp
  5  where 1=1;

 

 

※ 행마다 자동 일련번호 주는법 - sequence 사용

SQL> create sequence board_seq;
Sequence created.

SQL> create sequence ord_no_seq start with 10000;  # 10000부터 일련번호 시작
insert into board values(board_seq.nextval,'test',sysdate,0);

SQL> select board_seq.currval from dual; # 현재 시퀀스 몇까지 만들었는지 확인하는 법

board_seq 이라는이름의 sequence 를 정의하고,  행 삽입 시에 board_seq.nextval 로 하나씩 증가하도록 적용시킨다.

 

 

2. Alter - 변경

alter table board
  2  add email varchar2(20)
alter table board
  2  modify (content varchar2(20)); # content를 varchar2로 타입 변경하기

컬럼 타입 변경하기

 

SQL> alter table emp2
  2  add constraint emp2_tel_uk unique(tel); # 유일한 값
SQL> alter table emp2
  2  add constraint emp2_sal_ck check(sal between 5000 and 7000); # 해당조건 true만 가능
SQL> alter table emp2
  2  add constraint emp2_job_ck check(job in ('개발자', '가수', '강사'));
SQL> alter table emp2
  2  add constraint emp2_deptno_fk foreign key(deptno) references dept2(dcode);
SQL> commit;
Commit complete.

constraint (제약조건) 추가

 

3. Drop - 삭제

drop table emp2;
drop table emp2 restrict; # 기본값

restrict :  이때 외래키 테이블은 먼저 걸려있는 제약조건을 없애거나, 기본키 테이블을 지워야지 없어진다. 

 

drop table emp2 cascade;

cascade :  참조하는 테이블까지 연쇄적으로 삭제한다.

 

4. Truncate - 내용만 삭제

truncate table emp2;

 

 

728x90

댓글