◆DDL(Data Definition Language)
데이터의 구조를 정의 하기 위한 테이블 생성,삭제 같은 명령어
- create
- alter
- drop
- truncate
- rename
◆CREATE
스키마, 도메인, 테이블, 뷰, 인덱스를 정의한다.
CREATE TABLE 테이블명
( 컬럼1 컬럼1타입 ,
컬럼2 컬럼2타입 ,
컬럼3 컬럼3타입
);
1) 문자형 테이터 타입
데이터 유형 |
설명 |
길이 |
char(size) |
고정 길이의 문자형 데이터 타입으로 그 크기는 SIZE만큼의 BYTE수 혹은 문자 개수가 된다. |
최대 크기는 2000BYTE가 될수 있으며 byte,char명시 안하면 디폴트로 byte가 된다.size 값을 명시하지 않을 경우 디폴트 값은 1이다. |
VARCHAR2(size) |
가변 길이의 문자형 데이터 타입으로 그 크기는 최대 SIZE만큼의 BYTE수 혹은 문자수가 된다. 반드시 size값을 명시해야 한다. |
최대 크기는 4000byte가 될 수 있으며,byte나 char를 명시하지 않을 경우 디폴트값은 byte가 되며, size값을 생략할 수 없다. |
NCHAR(size) |
고정 길이의 유니코드 문자형 데이터 타입으로 그 크기는 UTF8 엔코딩의 경우 size3byte, AL16UTF16 엔코딩의 경우 size2byte가 된다. |
최대 크기는 2000byte이며 size 값을 명시하지 않을 경우 디폴트값은 1이다. |
NVARCHAR2 (size) |
가변 길이의 유니코드 문자형 데이터 타입으로 그 크기는 최대 size 값이 되며, UTF8의 경우 3배, AL16UTF16 엔코딩의 경우 2배의 byte가 된다. |
최대 크기는 4000byte이며 size 값을 생략할 수 없다. |
LONG |
가변 길이의 문자형 데이터 타입 |
최대 크기는 2GB이다. |
2) 숫자형 데이터 타입
데이터 유형 |
설명 |
길이 |
BINARY_FLOAT |
32bit 부동 소수 |
4byte |
BINARY_DOUBLE |
64bit 부동 소수 |
8byte |
NUMBER(prec) |
가변 숫자 타입으로, prec로 설정한 값(1~38)은 전체 자릿수이며, scale로 설정값(-84~127)은 소수점 이하 자릿수를 의미한다. |
최대값은 21byte |
3) 날짜형 데이터 타입
데이터 유형 |
설명 |
길이 |
DATE (가장 많이 사용) |
고정 길이의 날짜와 시간 데이터로서 BC4712년 1월 1일부터 9999년 12월 31일까지 표현할 수 있다. |
7byte 표현형태는 NLS_DATE_FORMAT 파라미터에 명시된 값을 따른다. |
INTERVAL YEAR(yr_prec) TO MONTH |
연도와 월 형태로 기간을 표현한다. yr_prec는 날짜의 연도의 최대 자릿수를 나타내며 그 값은 0~9 범위이고 디폴트 값은 2이다. |
5byte |
INTERVAL DAY(day_prec) TO SECOND(frac_sec_prec) |
요일, 시, 분, 초 형태로 기간을 표현한다. Day_prec는 날짜 자릿수를 frac_sec_prec는 날짜의 초 자릿수를 나타내며 0~9까지 사용할 수 있다. 디폴트 자릿수는 day_prec가 2, frac_sec_prec가 6이다. |
11byte |
TIMESTAMP(frac_sec_prec) |
밀리초 까지 표현가능한 날짜형 데이터 타입으로 , frac_sec_prec에는 초(second) 정보의 정밀도를 나타내는데 0~9까지 올 수 있고 디폴트 값은 6이다. |
precision에 다라 7~11byte로 디폴트값은 NLS_TIMESTAMP_FORMAT 파라미터에 명시된 값을 따른다. |
TIMESTAMP(frac_sec_prec) WITH TIME ZONE |
시간대와 더불어 날짜와 시간을 표현한다. 시간대는 ‘-5:0 ‘나 ‘US/Pacific’가 올 수 있다.frac_sec_prec은 TIMESTAMP를 위한 것이다. |
13byte로 디폴트값은 NLS_TIMESTAMP_TZ_FORMAT 파라미터에 명시된 값을 따른다. |
TIMESTAMP(frac_sec_prec)WITH LOCAL TIME ZONE |
TIMESTAMP WITH TIME ZONE과 비슷하나 저장시점에는 데이터베이스 시간대를 준수하나 조회시에는 조회하는 클라이언트의 시간대로 표현된다. frac_sec_prec은 TIMESTAMP를 위한 것이다. |
frac_sec_prec에 따라 7~11byte이며, 디폴트값은 NLS_TIMESTAMP_FORMAT 파라미터에 명시된 값을 따른다. |
◆Alter
오라클 객체의 구조을 변경할때 사용한다.
1) 테이블에 컬럼추가
ALTER TABLE 테이블명 ADD [컬럼명] [데어타입(크기)];
2) 컬럼 크기/타입 수정
ALTER TABLE [테이블명] MODIFY [컬럼명] [새로운 데어타입(새로운 크기)];
Ex) ALTER TABLE emp MODIFY editid VARCHAR2(4);
3) 컬럼삭제
ALTER TABLE [테이블명] DROP COLUMN [컬럼명];
4) 컬럼명 수정
ALTER TABLE [테이블명] RENAME COLUMN [이전 컬럼명] TO [새로운 컬럼명];
Ex) ALTER TABLE emp RENAME COLUMN editid TO edit_id
5) 외래키/기본키/Unique 설정 추가
-- 외래키 추가
ALTER TABLE [테이블명]
ADD CONSTRAINT 제약조건명
FOREIGN KEY (컬럼명)
REFERENCES 참조할 테이블명(컬럼명);
Ex)
ALTER TABLE memberAttach
ADD CONSTRAINT memberAttach_nickName_fK
FOREIGN KEY(nickName)
REFERENCES member(nickName);
-- 기본키 추가
ALTER TABLE [테이블명]
ADD CONSTRAINT 제약조건명
FOREIGN KEY (컬럼명);
Ex)
ALTER TABLE memberAttach
ADD CONSTRAINT memberAttach_nickName_PK
PRIMARY KEY(nickName);
-- unique 추가
ALTER TABLE [테이블명]
ADD CONSTRAINT 제약조건명
unique (컬럼명);
Ex)
ALTER TABLE memberAttach
ADD constraint memberAttach_nickname_uq
unique(nickname);
6) 외래키/기본키 삭제
ALTER TABLE [테이블명] DROP CONSTRAINT 제약조건명;
7) 테이블명 변경
ALTER TABLE [테이블명1] RENAME TO [테이블명2]
=> 테이블명1을 테이블명2로 변경
8) 컬럼 이름 변경
ALTER TABLE [테이블명]RENAME COLUMN 컬럼이름K to 컬럼이름L;
=>테이블의 컬럼이름을 K에서 L로 변경
9) 컬럼 기본 값, NOT NULL 변경
--기본 값 지정
ALTER TABLE emp MODIFY editid VARCHAR2(5) DEFAULT '1000';
--NOT NULL 지정
ALTER TABLE emp MODIFY editid VARCHAR2(5) NOT NULL;
--NOT NULL 제거(변경)
ALTER TABLE emp MODIFY editid VARCHAR2(5) NULL;
--기본 값 + NOT NULL 지정
ALTER TABLE emp MODIFY editid VARCHAR2(5) DEFAULT '1000' NOT NULL;
◆Drop
Drop & Delete & Truncate 차이점
구분 |
테이블 정의 |
저장공간 |
작업속도 |
SQL문 종류 구분 |
rollback |
DELETE |
존재 |
유지 |
느림 |
DML |
가능 |
TRUNCATE |
존재 |
반납 |
빠름 |
DDL |
불가능 |
DROP |
삭제 |
반납 |
빠름 |
DDL |
불가능 |
Drop
Delete
DELETE
FROM [테이블명]
WHERE [삭제할 행] = [선택조건];
Truncate
댓글남기기