3 분 소요


◆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

DROP TABLE [테이블명];

Delete

DELETE 
FROM [테이블명]
WHERE [삭제할 ] = [선택조건];

Truncate

TRUNCATE TABLE [테이블명];

태그:

카테고리:

업데이트:

댓글남기기