DDL (Data Definition Language)
- 데이터 정의 언어로 객체(OBJECT)를 만들고(CREATE), 수정하고(ALTER), 삭제(DROP)하는 구문을 말함
- 데이터의 전체 구조를 정의하는 언어로 주로 DB관리자, 설계자가 사용함.
오라클 객체 종류
테이블(TABLE), 뷰(VIEW), 시퀀스(SEQUENCE), 인덱스(INDEX), 패키지(PACKAGE),
프로시저(PROCEDUAL), 함수(FUNCTION), 트리거(TRIGGER), 동의어(SYNONYM), 사용자(USER)
오라클의 데이터형

CREATE
- 테이블이나 인덱스, 뷰 등 데이터베이스 객체를 생성하는 구문
- 테이블로 생성된 객체는 DROP구문을 통해 제거할 수 있음
표현식
CREATE TABLE 테이블명 (
컬럼명 자료형(크기),
컬럼명 자료형(크기),
컬럼명 자료형(크기),
...
);
컬럼에 주석 달기
COMMENT ON COLUMN 테이블.컬럼명 IS '주석내용'
제약 조건 (CONSTRAINTS)
- 사용자가 원하는 조건의 데이터만 유지하기 위해서 특정 컬럼에 설정하는 제약
- 데이터 무결성 보장을 목적으로 함
- 입력 데이터에 문자가 없는지 자동으로 검사하는 목적
- 데이터의 수정/삭제 가능 여부 검사등을 목적으로 함.
➡️ 제약조건을 위배하는 DML 구문은 수행할 수 없다.
데이터 무결성 : 데이터가 정확하고 무결한 상태
➡️ 중복데이터 X
제약 조건 종류
PRIMARY KEY, NOT NULL, UNIQUE, CHECK, FOREIGN KEY
NOT NULL
- 해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용
- 특정 컬럼에 값을 저장하거나 수정할 때 NULL 값을 허용하지 않도록 컬럼 레벨에서 제한
UNIQUE
- 컬럼 입력 값에 대해 중복을 제한하는 제약조건
- 컬럼 레벨과 테이블 레벨에 설정 가능
- 단, UNIQUE 제약조건이 설정된 컬럼에 NULL값은 중복 삽입 가능
- 제약조건 지정 방법
1) 컬럼 레벨 : [CONSTRAINT 제약조건명] 제약조건
2) 테이블 레벨 : [CONSTRAINT 제약조건명] 제약조건(컬럼명)
UNIQUE 복합키
- 두 개 이상의 컬럼을 묶어서 하나의 UNIQUE 제약조건을 설정함
복합키 지정은 테이블 레벨만 가능하다!
복합키는 지정된 모든 컬럼의 값이 같을 때 위배된다!
PRIMARY KEY
-
테이블에서 한 행의 정보를 구분하기 위한 고유 식별자(Identifier)역할
-
NOT NULL의 의미와 UNIQUE의 의미를 둘 다 가지고 있으며 한 테이블 당 하나만 설정 가능
-
컬럼 레벨과 테이블 레벨 둘 다 지정 가능
-
NOT NULL + UNIQUE 제약조건의 의미 -> 중복되지 않는 값이 필수로 존재해야함.
-
한 개 컬럼에 설정할 수 있고, 여러 개의 컬럼을 묶어서 설정할 수 있음.
PRIMARY KEY 복합키 (테이블 레벨만 가능)
CONSTRAINT PK_USERNO_USERID PRIMARY KEY(USER_NO, USER_ID)
➡️ USER_NO와 USER_ID 중 하나만 겹치는 경우 가능 o
➡️ USER_NO와 USER_ID 둘 다 겹치는 경우 불가능 X
FOREIGN KEY (외래키/외부키) 제약조건
- 참조(REFERENCES)된 다른 테이블의 컬럼이 제공하는 값만 사용할 수 있음
- FOREIGN KEY 제약 조건에 의해서 테이블간의 관계가 형성됨
- 제공되는 값 외에는 NULL을 사용할 수 있음.
컬럼 레벨일 경우
컬럼명 자료형(크기) [CONSTRAINT 이름] REFERENCES 참조할 테이블명 [(참조할 컬럼)][삭제룰]
테이블 레벨일 경우
[CONSTRAINT 이름] FOREIGN KEY (적용할 컬럼명) REFERENCES 참조할 테이블명 [(참조할 컬럼)][삭제룰]
참조될 수 있는 컬럼은 PRIMARY KEY 컬럼과, UNIQUE 지정된 컬럼만 외래키로 사용할 수 있음.
참조할 테이블의 참조할 컬럼명이 생략되면, PRIMARY KEY로 설정된 컬럼이 자동 참조할 컬럼이 됨.
FOREIGN KEY 삭제 옵션
- 부모 테이블의 데이터 삭제 시 자식 테이블의 데이터를 어떤 식으로 처리할지에 대한 내용을 설정할 수 있다.
1) ON DELETE RESTRICTED
- ON DELETE RESTRICTED (삭제 제한)로 기본 지정되어 있음
- FOREIGN KEY로 지정된 컬럼에서 사용되고 있는 값일 경우
제공하는 컬럼의 값은 삭제하지 못함
2) ON DELETE SET NULL
- 부모키 삭제 시 자식 키를 NULL로 변경하는 옵션
3) ON DELETE CASCADE
- 부모키 삭제시 자식키도 함께 삭제됨
- 부모키 삭제시 값을 사용하는 자식 테이블의 컬럼에 해당하는 행이 삭제됨
CHECK
- 컬럼에 기록되는 값에 조건 설정을 할 수 있음
CHECK (컬럼명 비교연산자 비교값)