0. DDL이란?
Data Definition Language 의 약자로, 데이터 정의어이다.
DDL 문에는 CREATE, ALTER, DROP, RENAME, TRUNCATE, COMMENT 가 있다.
DDL문을 사용하여 데이터베이스 오브젝트를 생성, 변경, 삭제한다.
(* 데이터베이스 오브젝트에는 대표적으로 테이블, 인덱스, 뷰, 시퀀스 등이 있다.)
1. CREATE TABLE
- 테이블을 생성한다. 이때, 테이블 이름을 정한다.
- 컬럼 이름 및 데이터 타입도 정해야한다.
- TABLESPACE 지정하며, 지정하지 않는 경우 해당 유저에 대한 DEFAULT SPACE 에 저장한다.
- 테이블을 생성하기 전에, 현재 접속 유저에게 테이블을 생성 할 수 있는 권한이 있는지 확인해야 한다.
- CREATE TABLE 시스템 권한
- 테이블을 저장할 수 있는 테이블 스페이스 권한
# emp 테이블 생성 예시
CREATE TABLE emp(
id number(4),
name varchar2(30),
day date default sysdate)
TABLESPACE users;
[테이블 생성 규칙]
- 테이블 이름, 컬럼 이름, 유저 이름, 다른 객체 이름, 제약 조건 이름을 정한다.
- 문자로 시작해야 한다.
- 문자의 길이: 1 ~ 30
- 문자, 숫자, 특수문자(_,$,#) 가능하다
- 대소문자는 구분하지 않는다.
- 동일한 유저가 소유한 객체 이름은 중복 할 수 없다.
- 예약어는 사용할 수 없다.
2. CTAS
- 테이블 복제
- 테이블 구조, 행(데이터), 제약 조건에서는 NOT NULL만 복제된다.
# CTAS 로 테이블 생성 예시
-- 1) CTAS로 테이블 구조 복제
CREATE TABLE hr.emp
AS
SELECT *
FROM hr.employees;
-- 2) 테이블 복제 확인(빈 테이블)
SELECT *
FROM hr.emp;
-- 3) 테이블 정보 확인
-- hr이 생성한 테이블 정보
SELECT *
FROM user_tables;
-- hr DEFAULT TABLESPACE 확인
SELECT *
FROM user_users;
1. 테이블 전체 복제(구조 + 데이터)
- 데이터까지 같이 동일하게 복제된다.
CREATE TABLE hr.emp
AS
SELECT employee_id AS id
, UPPER(last_name||' '||first_name) AS name
, salary * 12 sal
FROM hr.employees;
2. TABLESPACE 옵션
- 옵션 생략 시 DEFAULT TABLESPACE 로 지정되어 있는 TABLESPACE에 저장
-- DEFAULT TABLESPACE 확인
SELECT *
FROM user_users;
CREATE TABLE hr.emp
TABLESPACE users -- user 테이블 스페이스에 저장
AS
SELECT employee_id AS id
, UPPER(last_name||' '||first_name) AS name
, salary * 12 sal
FROM hr.employees;
3. 테이블 구조만 복제
- FALSE 조건 추가
CREATE TABLE hr.emp
TABLESPACE users
AS
SELECT *
FROM hr.employees
WHERE 1 = 2 -- FALSE 조건
-- 테이블 구조 복제 확인
-- 껍데기 확인
SELECT *
FROM hr.emp;
3. CREATE VIEW
- VIEW는 SELECT 문을 가지고 있는 객체이다.
- 유지 관리의 목적으로 테이블에 직접적인 접근 권한을 제어하기 위해 주로 사용한다.
- 단순뷰이면 DML을 사용하여 수정가능하나, 복합뷰이면 DML 작업을 수행할 수 없다.
# CREATE VIEW 생성 예시
-- VIEW 생성
CREATE VIEW hr.emp_2023
AS
SELECT employee_id
, last_name
, first_name
, job_id
, manager_id
, department_id
FROM hr.employees;
-- VIEW 생성 확인
SELECT *
FROM hr.emp_2023;
만약 VIEW ONLY READ 옵션을 사용한다면, 뷰를 통해서 읽기만 가능하고 DML을 사용하여 수정 할 수 없다.
CREATE OR REPLACE VIEW hr.emp_20_view
AS
SELECT id, name, sal
FROM hr.emp_20
WITH READ ONLY;
'DataBase > Oracle' 카테고리의 다른 글
[Admin] Database startup (nomount/mount/open) (0) | 2024.11.10 |
---|---|
[Admin] User 관리하기 - 생성/수정/삭제 (1) | 2024.09.03 |
[함수] NULL 함수 - NVL, NVL2, COALESCE, NULLIF (0) | 2024.06.14 |
[SQL] 데이터 타입 변환 함수 - to_date(), to_char(), to_number() (0) | 2024.04.15 |
[Arch] 초기화 파라미터 종류와 인스턴스와 세션 레벨에서 변경 (0) | 2024.02.28 |