Create - 새로운 객체 생성

Alter - 기존 객체 구조 변경

Drop - 객체 삭제

Truncate - 테이블 데이터 전체 삭제(구조 유지)

 

-- Create 예시

CREATE TABLE employee ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, hire_date DATE, salary DECIMAL(10,2), dept_id INT REFERENCES department(id) );

 

Create Table employee - employee 테이블 생성

id(int, PK) - 각 직원의 고유 식별자, 기본키이며 중복이 불가함

name(varchar(100) Not Null)) - 최대 100자까지 입력 가능한 가변 문자열, NOT Null 제약조건으로 반드시 값이 있어야 함

NVL처리를 하면 좋음.

hire_date(DATE) - 날자형 데이터 타입, Null 허용

Salary(DECIMAL) - 직원 급여 정보, 1234.12 같은 형태 가능, Null 허용

dept_id(Int, references(id)) - 직원이 속한 부서의 ID, PK를 참조함(department 테이블의 id 컬럼을 참조)

 

-- Alter 예시

ALTER TABLE employee ADD email VARCHAR(100), ADD phone VARCHAR(20) NOT NULL DEFAULT 'N/A', MODIFY name VARCHAR(150) NOT NULL, ADD CONSTRAINT chk_salary CHECK (salary > 0), ADD INDEX idx_name_dept (name, dept_id);

 

Alter Table employee - 테이블 구조 변경

Add email(varchar(100)) - 최대 100자까지 입력 가능한 email 컬럼 추가, Null 허용

Add phone(varchar(20), Not Null default 'N/A') - 최대 20자까지 가능한 phone 컬럼 추가, Null을 허용하지 않고, 값을 지정하지 않으면 N/A 처리됨

Modify name(varchar(150) not null) - 기존 컬럼인 name을 변경할거임, 최대 150자까지 가능하고, Null을 허용하지 않음, 반드시 값이 있어야 함)

Add Constraint chk_salary check(salary>0) - chk_salary 컬럼을 추가, salary 컬럼에 체크 제약조건을 추가함, 급여는 0보다 커야함.

Add INDEX idx_name_dept(name,dept_id) - name과 dept_id을 기준으로 복합 인덱스 생성, 해당 컬럼으로 검색 시 조회 성능 향상

 

-- Drop 예시

DROP TABLE employee CASCADE CONSTRAINTS - employee 테이블 삭제, cascade(테이블과 관련된 모든 구조 포함)

DROP INDEX idx_name_dept; -- 인덱스 삭제

DROP VIEW emp_view; -- 뷰 삭제

DROP SEQUENCE emp_seq; -- 시퀀스 삭제

DROP DATABASE company; -- 데이터베이스 자체를 삭제(DBMS별 문법 차이 있음)

 

-- Truncate 예시

TRUNCATE TABLE employee;

테이블 구조(컬럼, 제약조건)은 그대로 두고 데이터만 모두 제거됨. Where절 사용 불가. Rollback 불가

+ Recent posts