데이터 정의 언어 Data Definition Language
테이블을 관리하는 언어이다. 테이블을 만들고, 수정, 삭제할 수 있다. 데이터 조작 언어에서는 데이터를 가지고 놀았다면, 데이터 정의 언어에서는 테이블과 테이블의 필드를 가지고 놀 예정이다.
ALTER
필드 자체의 정보를 추가/수정/삭제할 수 있는 명령어다.
ADD : 필드 추가, 필드명 및 속성 추가해야한다.
ALTER TABLE emp ADD (tel varchar2(15));
MODIFY : 기존 필드의 정보를 수정한다.
ALTER TABLE emp MODIFY (ename varchar2(20)); -- 한글 4글자까지 입력 가능
INSERT INTO emp(empno, ename) VALUES (1234, '세종대왕');
특이사항은 기존의 데이터가 새로 수정하려는 조건에 만족하지 못할 경우 수정할 수 없다. 즉, 기존의 데이터를 수용하는 조건을 반드시 입력해야한다.
DROP : 필드 삭제
ALTER TABLE emp DROP COLUMN mgr;
CREATE
앞서 알아보았듯이 테이블을 생성하는 명령어다.
새로운 테이블을 만들어보며 알아보자.
CREATE TABLE member(
no NUMBER(5) PRIMARY KEY,
username VARCHAR2(20) NOT NULL,
phone VARCHAR2(15) NOT NULL,
email VARCHAR2(50),
addr VARCHAR2(300),
regdate DATE DEFAULT SYSDATE -- 값을 설정하지 않으면 자동으로 sysdate로 생성
);
우선 각 구역의 가장 처음은 필드명이다.
그 다음 자료형으로는 :
NUMBER(n, [m]) : 소수점 m의 자리까지 표시되는 숫자. 총 길이는 n-m-1이다.
VARCHAR2(n) : 가변문자형으로 최대 n개의 문자를 가질 수 있다.
DATE : 날짜
DEFAULT
값을 설정하지 않게 되면 자동으로 뒤에 나오는 값으로 설정하는 명령어다. member 테이블에서는 시스템날짜를 넣도록 되어있다.
SEQUENCE
자동으로 규칙적인 데이터를 생성해주는 객체이다.
시퀀스의 특이한 점으로는 한번 생성한 시퀀스는 다시 생성하지 않는다는 것이다.
CREATE SEQUENCE test_seq
START WITH 5
INCREMENT BY 3;
생성한 시퀀스는 user_sequences 테이블에서 확인할 수 있다.
SELECT * FROM user_sequences;
NEXTVAL, CURRVAL
시퀀스를 실행하는 방법이다.
SELECT test_seq.NEXTVAL from dual; -- 첫 실행에서 5를 리턴
SELECT test_seq.CURRVAL from dual; -- 마지막으로 실행했던 시퀀스인 5를 리턴
SELECT test_seq.CURRVAL, test_seq.NEXTVAL from dual;
-- 같은 쿼리문에 있으면 순서에 상관없이 CURRVAL은 가장 마지막으로 실행된 시퀀스를 리턴한다
예시로 member 테이블에 데이터를 입력해보자.
INSERT INTO member(no, username, phone)
VALUES(test_seq.NEXTVAL, 'POBY', '010-1234-1234');
INSERT INTO member(no, username, phone)
VALUES(test_seq.NEXTVAL, 'ALEX', '010-4321-4321');
addr 필드를 삭제해보자.
ALTER TABLE member DROP COLUMN addr;
시퀀스를 삭제해보자.
DROP SEQUENCE test_seq;
emp테이블을 제외하고 추가생성한 테이블을 삭제하자.
DROP TABLE member;
DROP TABLE emp2;
DROP TABLE emp3;
RECYCLEBIN
오라클10g부터 생긴 휴지통테이블이다. 컴퓨터에 내장된 휴지통처럼 DROP된 테이블을 임시로 보관하고있다가 유사시에 복구할 수 있도록 만들어졌다. 따라서 테이블을 DROP한 이후 tab에서 테이블 목록을 살펴보면 BIN$으로 시작하는 괴상한 이름의 테이블이 있는걸 확인할 수 있는데, 이는 복구할 때 사용되는 이름이라고 추정된다.
휴지통을 사용하는 명령어는 다음과 같다.
SHOW RECYCLEBIN : 휴지통 조회
PURGE RECYCLEBIN : 휴지통 비우기
PURGE TABLE tablename : 특정 테이블만 영구 삭제
FLASHBACK TABLE tablename TO BEFORE DROP : 테이블 복구
'Database' 카테고리의 다른 글
11.18.(금) OracleDB(7): 서브쿼리 (0) | 2022.11.22 |
---|---|
11.18.(금) OracleDB(6): 내장 함수(2) (0) | 2022.11.22 |
11.16.(수) OracleDB(5): 데이터 조작어(2) (0) | 2022.11.20 |
11.16.(수) OracleDB(4): 내장 함수(1) (0) | 2022.11.18 |
11.16.(수) OracleDB(3): 데이터 조작어(1) (0) | 2022.11.16 |