728x90
반응형
DDL(Data Definition Language)은 데이터베이스의 구조(테이블, 인덱스, 뷰 등)를 정의하고 관리하는 SQL 언어의 한 부분입니다. DDL은 데이터의 스키마와 관계를 설정하는 데 사용되며, 주로 데이터베이스 객체(테이블, 인덱스, 뷰 등)의 생성, 수정, 삭제와 관련된 명령어들로 구성됩니다.
DDL의 특징
- 자동 커밋: 대부분의 DDL 명령어는 실행 시 자동으로 트랜잭션이 커밋되므로, 롤백(Undo) 할 수 없습니다.
- 구조적 변경: DDL은 데이터 자체가 아닌, 데이터베이스의 구조를 변경하는 데 중점을 둡니다.
- 스키마 관리: 데이터베이스의 스키마를 설정하고 관리할 때 사용됩니다.
1. CREATE TABLE - 테이블 생성
CREATE TABLE emp (
empno NUMBER(4) PRIMARY KEY, -- 사원 번호 (기본 키)
ename VARCHAR2(10) NOT NULL, -- 사원 이름 (NULL 불가)
job VARCHAR2(9) DEFAULT 'STAFF', -- 직급 (기본값 설정)
mgr NUMBER(4) CONSTRAINT fk_mgr -- 매니저 사원 번호 (외래 키)
REFERENCES emp(empno),
hiredate DATE DEFAULT SYSDATE, -- 입사일 (기본값 현재 날짜)
sal NUMBER(7, 2) CHECK (sal >= 0), -- 급여 (음수 불가)
comm NUMBER(7, 2) DEFAULT 0, -- 커미션 (기본값 0)
deptno NUMBER(2) NOT NULL, -- 부서 번호 (NULL 불가)
CONSTRAINT fk_dept FOREIGN KEY (deptno) -- 부서 외래 키 제약
REFERENCES dept(deptno)
);
2. ALTER TABLE - 테이블 수정
2-1. 컬럼 추가
ALTER TABLE emp
ADD email VARCHAR2(50); -- 이메일 컬럼 추가
2-2. 컬럼 수정
ALTER TABLE emp
MODIFY sal NUMBER(10, 2); -- 급여 컬럼의 데이터 타입 크기 수정
2-3. 컬럼 삭제
ALTER TABLE emp
DROP COLUMN comm; -- 커미션 컬럼 삭제
2-4. 제약 조건 추가
ALTER TABLE emp
ADD CONSTRAINT chk_sal CHECK (sal > 0); -- 급여가 양수인지 확인하는 제약 조건 추가
2-5. 제약 조건 삭제
ALTER TABLE emp
DROP CONSTRAINT chk_sal; -- 급여 제약 조건 삭제
3. DROP TABLE - 테이블 삭제
DROP TABLE emp CASCADE CONSTRAINTS; -- emp 테이블 및 모든 제약 조건 삭제
4. TRUNCATE TABLE - 테이블 데이터 삭제
TRUNCATE TABLE emp; -- emp 테이블의 모든 데이터 삭제 (구조는 유지)
5. RENAME - 테이블 이름 변경
RENAME emp TO employee; -- emp 테이블 이름을 employee로 변경
6. CREATE INDEX - 인덱스 생성
CREATE INDEX idx_emp_job ON emp(job); -- emp 테이블의 job 컬럼에 인덱스 생성
7. DROP INDEX - 인덱스 삭제
DROP INDEX idx_emp_job; -- 인덱스 삭제
8. CREATE VIEW - 뷰 생성
CREATE VIEW emp_view AS
SELECT empno, ename, job, sal
FROM emp
WHERE sal > 3000; -- 급여가 3000 이상인 사원만 포함하는 뷰 생성
9. DROP VIEW - 뷰 삭제
DROP VIEW emp_view; -- emp_view 뷰 삭제
728x90
반응형
'Topcit' 카테고리의 다른 글
Java PreparedStatement (0) | 2024.10.28 |
---|---|
Java 객체지향 프로그래밍 특징 (0) | 2024.10.28 |
SQL DCL 요약 (0) | 2024.10.28 |
SQL DML 요약 (1) | 2024.10.27 |
SQL DQL 요약 (0) | 2024.10.27 |