[DB/SQLD] DDL

2 분 소요

테이블

테이블 관련 SQL문

  1. Create Table : 새로운 테이블 생성.
  2. Alter Table : 생성된 테이블 변경. 칼럼추가,변경,삭제. 기본키 설정, 외래키 설정.
  3. Drop Table : 테이블 삭제. 테이블의 데이터 구조뿐만 아니라 저장된 데이터도 삭제.



테이블 생성

Create Table EMP
(
    empno number(10) primary key,
    ename varchar2(20),
    sal   number(10,2) default 0,
    deptno varchar2 (4) not null,
    createdate date default sysdate,
    constraint emppk primary key(empno)
);

create table 예시

DESC EMP;

desc문을 이용해 테이블 구조를 확인할 수 있다.

Create Table DEPT(
    deptno varchar2(4) primary key,
    deptname varchar2(20)
);

Create Table EMP
(
    empno number(10),
    ename varchar2(20),
    sal   number(10,2) default 0,
    deptno varchar2 (4) not null,
    createdate date default sysdate,
    constraint emppk primary key(empno, ename),  //기본키 두개지정
    constraint deptfk foreign key (deptno)
                        references dept(deptno)
);

constraint를 사용해 기본키와 기본키 이름을 지정할 수 있다.

또 위 코드를 통해 사원테이블이 부서테이블의 deptno를 참조하게 한다.

deptfk는 외래키 이름이고 첫번째 deptno는 EMP테이블의 것이고, 두번째 것은 DEPT 테이블 칼럼이다.

Create Table EMP
(
    empno number(10),
    ename varchar2(20),
    sal   number(10,2) default 0,
    deptno varchar2 (4) not null,
    createdate date default sysdate,
    constraint emppk primary key(empno, ename),  //기본키 두개지정
    constraint deptfk foreign key (deptno)
                        references dept(deptno)
                        ON DELETE CASCADE
);

cascade 옵션 사용시 참조관계(기본키와 외래키 관계)가 있을 경우 참조되는 데이터를 자동으로 반영이 가능하다.

on delete cascade 옵션은 자신이 참조하는 테이블(dept)의 데이터가 삭제되면 자동으로 자신(emp)도 삭제되는 옵션이다.

이것을 통해 참조무결성을 준수 할 수 있다.



테이블 변경

  1. 테이블명 변경
    ALTER TABLE EMP RENAME TO NEW_EMP;
    
  2. 칼럼추가
    ALTER TABLE EMP ADD (age number(2) default 1);
    
  3. 칼럼변경
    ALTER TABLE EMP MODIFY (ename varchar2(40) not null);
    

    칼럼의 데이터 타입을 변경 시 기존데이터가 있는경우 에러 발생.

  4. 칼럼삭제
    ALTER TABLE EMP DROP COLUMN age;
    
  5. 칼럼명 변경
    ALTER TABLE EMP RENAME COLUMN ename to new_ename;
    



테이블 삭제

DROP TABLE EMP;

테이블을 삭제하면 테이블구조, 데이터를 모두 삭제한다.

DROP TABLE EMP CASCADE CONSTRAINT;

cascade constraint 옵션을 사용하면 해당테이블의 데이터를 외래키로 참조한 슬레이브 테이블과 관련된 제약사항도 삭제할 수 있다.



뷰(VIEW)

뷰는 테이블로부터 유도된 가상의 테이블. 실제 데이터를 가지고 있지 않고 테이블을 참조해 원하는 칼럼만 조회할 수 있게 한다. 뷰는 데이터 딕셔너리에 SQL문 형태로 저장하되 실행시에 참조된다.

뷰 특징

  • 참조한 테이블이 변경되면 뷰도 변경
  • 뷰의 검색은 참조한 테이블과 동일하게 할 수 있지만, 뷰에 대한 입력, 수정, 삭제에는 제약있음
  • 특정 칼럼만 조회시켜 보안성 향상
  • 한번 생성된 뷰는 변경할 수 없고 변경을 원하면 삭제 후 재생성. 즉 ALTER문을 사용해 뷰 변경 안됨.
CREATE VIEW T_EMP AS
SELECT * FROM EMP;

뷰 생성

SELECT * FROM T_EMP;

뷰 조회

DROP VIEW T_EMP;

뷰 삭제

뷰 장점

  • 특정 칼럼만 조회할 수 있어 보안기능.
  • 데이터 관리 간단
  • select문이 간단해짐
  • 하나의 테이블에 여러개 뷰 생성 가능

뷰 단점

  • 뷰는 독자적인 인덱스를 만들 수 없음
  • 삽입, 수정, 삭제 연산 제약
  • 데이터 구조를 변경할 수 없음