SQL 에서 DDL 문이라고 하면 간단하게
테이블에 직접 접근하는 명령어라고 볼수있을 것 같다.
create table은 테이블을 생성한다.
drop table은 테이블을 삭제한다.
alter table은 테이블 내부적으로 컬럼명이나 속성 등을 변경할 수 있다.
rename to는 테이블의 이름을 변경 할 수있다.
truncate는 dml문의 delete table 과 비슷한 속성을 가지고있다 테이블이 갖고있는 모든 정보를 날려버린다.
create table 테이블이름 (
컬럼들과 속성명 기입 ','콤마를 기준으로 하나의 컬럼 작성
);
create table member ( -- member 테이블 생성
member_no number(8) primary key, -- primary key(고유키)는 member_no
member_name varchar(20) not null,
member_address varchar(50) not null,
member_phone varchar(20) not null,
member_email varchar(30) not null
);
CHAR(n) | 고정 길이 데이터 타입(최대 2000byte) - 지정된 길이보다 짧은 데이터가 입력될 시 나머지 공간은 공백으로 채워짐 |
VARCHAR2(n) | 가변 길이 데이터 타입(최대 4000byte) - 지정된 길이보다 짧은 데이터가 입력될 시 나머지 공간은 채우지 않는다. |
NCHAR(n) | 고정 길이 유니코드 데이터 타입(최대 2000byte) |
NVARCHAR2(n) | 가변 길이 유니코드 데이터 타입(최대 4000byte) |
LONG | 가변 길이 데이터 타입(최대 2Gbyte) |
CLOB | 대용량 텍스트 데이터 타입(최대 4Gbyte) |
NCLOB | 대용량 텍스트 유니코드 데이터 타입(최대 4Gbyte) |
BINARY_FLOAT | 부동 소수형 데이터 타입(4byte) - 32bit 부동 소수 |
BINARY_DOUBLE | 부동 소수형 데이터 타입(4byte) - 64bit 부동 소수 |
NUMBER(P,S) | P, S로 표현 숫자 데이터 타입 P: 1 ~ 38, S: -84 ~ 127 P(Precision): 유효자리수, S(Scale):소수점 유효자리 |
DATE | 고정 길이의 날짜 |
INTERVAL_YEAR | 날짜(년도, 월)형태의 기간 표현 데이터 타입 |
INTERVAL_DAY | 날짜 및 시간(요일, 시, 분, 초)형태의 기간 표현 데이터 타입 |
TIMESTAMP | 밀리초(ms)까지 표현 데이터 타입 |
TIMESTAMP_WITH TIME ZONE | 날짜 및 시간대 형태의 데이터 타입 |
TIMESTAMP_WITH LOCAL TIME ZONE |
저장 시 데이터베이스 시간대를 준수, 조회시 조회하는
클라이언트 시간 표현 데이터 타입 |
RAW(n) | 가변 길이 이진 데이터 타입(최대 2Gbyte) |
LONGRAW | 가변 길이 이진 데이터 타입(최대 4Gbyte) |
BLOB | 대용량의 바이너리 데이터를 저장하기 위한 데이터 타입(최대 4Gbyte) |
BFILE | 대용량의 바이너리 데이터를 파일형태로 저장하기 위한 데이터 타입(최대 4Gbyte) |
데이터타입 이외에 primary key(고유키) foreign key(외래키)나
null값을 허용하는 null 속성이 있고 반대로 허용하지 않는 not null이 있다.
데이터가 not null 이거나 null 인지에 상관없이 default(기본)값을 따로 지정해 줄 수도 있다.
not null인 값에 default 값도 없이 데이터가 들어가지않는다면 오류가 발생한다.
table 생성시 컬럼속성 기입 순서는
컬럼명 -> 데이터타입 -> null & not null > default -> primary key
와 같은 순서로 지정한다 null, not null과 default 값은 생략 가능하다
default값을 지정 안하면 기본값은 0이고
null값 여부를 지정안할시엔 기본이 null 허용이다
drop table 테이블명
-> 테이블 자체가 없어지는 명령어다 조심해서 다루자
테이블에 컬럼 추가
alter table 테이블명
add [컬럼이름 데이터타입 not null] ...);
테이블 속성 변경
alter table 테이블명
modify [컬럼이름 데이터타입 not null]...);
테이블 컬럼 삭제
alter table 테이블명
drop column 컬럼명
테이블 이름 변경
RENAME 기존 테이블명 to 바꿀 테이블 명;
DDL문은 명령어 작성 후에 따로 TCL 문을 사용해주지 않아도 자동으로 commit 등이 진행된다.