-
[Oracle] DDL(Data Definition Language)RDS/Oracle 2019. 2. 5. 12:29반응형
DDL(Data Definition Language)은 데이터 정의어로서 테이블이나 관계의 구조를 생성하는데 사용하며 CREATE, ALTER, DROP, TRUNCATE 등이 있습니다.
테이블 생성(CRATE TABLE)
12345CREATE TABLE 테이블명 (컬럼명1 데이터 유형 [DEFAULT 형식], 컬럼명2 데이터 유형 [DEFAULT 형식], 컬럼명3 데이터 유형 [DEFAULT 형식]);cs 데이터 유형의 종류
CHAR(N) - 주어진 크기만큼 고정 길이의 문자 저장 (1~2,000byte)
VARCHAR2(N) - 주어진 크기만큼 가변 길이의 문자 저장 (1~4,000byte)
NVARCHAR2(N) - 국가별 국가 집합에 따른 크기의 문자 또는 바이트의 가변 길이 문자 (1~4,000byte)
NUMBER(소수점을 포함한 전체 자리수, 소수점 이하 자리수) - 정밀도와 스케일로 표현되는 숫자
DATE - 날짜 형식을 저장
ROWID - 테이블내 행의 고유 주소를 가지는 64진수 문자
BLOB - 대용량의 바이너리 데이터를 저장, 최대 4GB
CLOB - 대용량의 텍스트 데이터를 저장, 최대 4GB
BFILE - 대용량의 바이너리 데이터를 파일 형태로 저장, 최대 4GB
TIMESTAMP - DATE 형의 확장된 형태
INTERVAL_YEAR(년도에 대한 자리수) TO MONTH(달에 대한 자리수) - 년과 월을 이용하여 기간을 저장
INTERVAL_DAY(일수에 대한 자리수) TO SECOND(초에 대한 자리수) - 일, 시, 분, 초를 이용하여 기간을 저장
테이블 생성 시 주의사항
1.테이블명은 다른 테이블의 이름과 중복되지 않아야 합니다.
2.테이블 생성시 대/소문자 구분은 하지 않습니다.
3.한 테이블 내에서는 컬럼명이 중복되게 지정할 수 없습니다.
4.테이블 이름을 지정하고 각 컬럼들은 괄호 "()"로 묶어 지정해야 합니다.
5.각 컬럼들은 콤마 ","로 구분되고, 테이블 생성문의 끝은 항상 세미콜론 ";"으로 끝나야 합니다.
6.컬럼 뒤에 데이터 유형은 꼭 지정되어야 합니다.
7.테이블명과 컬럼명은 반드시 문자로 시작해야 합니다.
8.예약어는 쓸 수 없습니다.
9.A-Z, a-z, 0-9, _, $, # 문자만 허용됩니다.
1.임시 사원 테이블 생성
12345678910CREATE TABLE TEMP01_EMP (EMPNO NUMBER(4,0), ENAME VARCHAR2(10 BYTE), JOB VARCHAR2(9 BYTE), MGR NUMBER(4,0), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2,0));cs 2.SELECT 문장을 이용한 임시 사원 테이블 생성
기존 테이블을 이용한 CATS(Create Table ~ As Select ~) 방법을 이용하면 컬럼별로 데이터 유형을 재정의 하지 않아도 되는 장점이 있습니다. 그러나 CTAS 기법 사용시 주의할 점은 기존 테이블의 제약조건 중에 NOT NULL만 새로운 복제 테이블에 적용이 되고, 기본키, 고유키, 외래키, CHECK 등의 다른 제약 조건은 없어진다는 점입니다.
1CREATE TABLE TEMP02_EMP AS SELECT * FROM EMP;cs 3.SELECT 문장을 이용한 임시 사원 테이블 생성 (데이터 구조만 복사)
SELECT 문장을 이용하여 임시 사원 테이블을 생성하면 데이터까지 복사됩니다. 데이터의 구조만 복사하기 위해서는 SELECT 문장의 WHERE 조건 절에 항상 거짓이 되는 조건을 지정하게 되면 테이블에서 해당되는 로우는 발견하지 못하여 출력결과로 얻어질 수 있는 로우가 없게 되므로 빈 테이블이 생성됩니다.
1CREATE TABLE TEMP03_EMP AS SELECT * FROM EMP WHERE 1=0;cs 테이블의 구조 변경(ALTER TABLE)
컬럼 추가하기(ADD COLUMN)
기존 테이블에 필요한 컬럼을 추가하는 명령어
1ALTER TABLE 테이블명 ADD 추가할 컬럼명 데이터 유형;cs 임시 사원 테이블에 문자 타입의 이메일(EMAIL) 컬럼을 추가
1ALTER TABLE TEMP01_EMP ADD (EMAIL VARCHAR2(20));cs 컬럼 변경하기(MODIFY COLUMN)
테이블의 컬럼에 데한 정의를 변경하는 명령어
1ALTER TABLE 테이블명 MODIFY (컬럼명1 데이터 유형 [DEFAULT 형식], 컬럼명2 데이터 유형 [DEFAULT 형식]);cs 임시 사원 테이블에 문자 타입의 이메일(EMAIL) 컬럼을 수정
1ALTER TABLE TEMP01_EMP MODIFY (EMAIL VARCHAR2(40));cs 컬럼 변경 시에 주의사항
1.해당 컬럼의 크기를 늘릴 수는 있지만 줄이지는 못합니다. (기존의 데이터가 훼손될 수 있기 때문입니다.)
2.해당 컬럼이 NULL 값만 가지고 있거나 테이블에 아무 행도 없으면 컬럼의 폭을 줄일 수 있습니다.
3.해당 컬럼이 NULL 값만 가지고 있으면 데이터 유형을 변경할 수 있습니다.
4.해당 컬럼이 DEFAULT 값을 바꾸면 변경 작업 이후 발생하는 행 삽입에만 영향을 미치게 됩니다.
5.해당 컬럼에 NULL 값이 없을 경우에만 NOT NULL 제약조건을 추가할 수 있습니다.
컬럼 삭제하기(DROP COLUMN)
테이블의 불필요한 컬럼을 삭제하는 명령어
1ALTER TABLE 테이블명 DROP COLUMN 삭제할 컬럼명;cs 임시 사원 테이블에 문자 타입의 이메일(EMAIL) 컬럼을 삭제
1ALTER TABLE TEMP01_EMP DROP COLUMN EMAIL;cs 테이블 삭제(DROP TABLE)
테이블의 모든 데이터 및 구조를 삭제하는 명령어
1DROP TABLE 테이블명 [CASCADE CONSTRAINT];cs 임시 사원 테이블 제거
1DROP TABLE TEMP01_EMP;cs 테이블 데이터 삭제(TRUNCATE TABLE)
해당 테이블에 들어있던 모든 행들이 제거되고 저장 공간을 재상용 가능하도록 해제하는 명령어
1TRUNCATE TABLE 테이블명cs 임시 사원 테이블 데이터 제거
1TRUNCATE TABLE TEMP02_EMP;cs 반응형'RDS > Oracle' 카테고리의 다른 글
[Oracle] 함수(Function) - 문자형 함수 (0) 2019.03.02 [Oracle] WHERE절 (0) 2019.02.24 [Oracle] TCL(Transaction Control Language) (0) 2019.02.23 [Oracle] DML(Data Manipulation Language) (0) 2019.02.09 [Oracle] SQL Developer - IO 오류:Undefined Error 업체 코드 17002 (0) 2019.01.17