본문 바로가기
데이터베이스(DB)/SQLD

[SQLD 2-3-3] 관리 구문 - DDL

by 송기동 2024. 6. 21.
728x90

# 데이터 유형

 

 

# 제약 조건

- 데이터 무결성을 위해 각 컬럼에 생성하는 데이터의 제약 장치

- 테이블 생성 시 정의 가능, 컬럼 추가 시 정의 가능, 이미 생성된 컬럼에 제약조건만 추가 가능


DDL (Data Definition Laguage)

- 데이터 정의어

- 데이터 구조 정의(객체 생성, 삭제, 변경) 언어

- CREATE(객체 생성), ALTER(객체 변경), DROP(객체 삭제), TRUNCATE(데이터 삭제)

- AUTO COMMIT(명령어 수행하면 즉시 저장, 원복 불가)


CREATE

- 테이블이나 인덱스와 같은 객체를 생성하는 명령어

- 테이블 생성 시 테이블명, 컬럼명, 컬럼순서, 컬럼크기, 컬럼의 데이터타입 정의 필수

- 테이블 생성 시 각 컬럼의 제약조건 및 기본값은 생략 가능

- 테이블 생성 시 소유자 명시 가능(생략 시 명령어 수행 계정 소유)

- 숫자컬럼의 경우 컬럼 사이즈 생략 가능(날짜 컬럼은 사이즈 명시 X)

# 문법
CREATE TABLE [소유자.]테이블명(
컬럼1 데이터타입 [DEFAULT 기본값] [제약조건],
컬럼2 데이터타입 [DEFAULT 기본값] [제약조건],
...
);

 

# 테이블 복제 시
CREATE TABLE 테이블명
AS
SELECT * FROM 복제테이블명;

 

** 특징

- 복제테이블의 컬럼명과 컬럼의 데이터타입이 복제됨

- SELECT 문에서 컬럼별칭 사용 시 컬럼별칭 이름으로 생성

- CREATE 문에서 컬럼명 변경 가능

- NULL 속성도 복제됨

- 테이블에 있는 제약조건, INDEX 등은 복제 되지 X


ALTER

- 테이블 구조 변경(컬럼명, 컬럼 데이터타입, 컬럼사이즈, default 값, 컬럼삭제, 컬럼추가, 제약조건)

- 컬럼순서 변경 불가(재생성으로 해결)

# 컬럼 추가

- 새로 추가된 컬럼위치는 맨 마지막(절대 중간 위치에 추가 불가)

- 컬럼 추가 시 데이터타입 필수, default 값, 제약조건을 명시할 수 있음

- 여러 컬럼 동시 추가 가능(반드시 괄호 사용)

# 문법
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 [DEFAULT] [제약조건];

 

# 컬럼(속성) 변경

- 컬럼 사이즈, 데이터타입, default 값 변경 가능

- 여러 컬럼 동시 변경 가능

# 문법
ALTER TABLE 테이블명 MODIFY(컬럼명 DEFAULT 값)

 

1) 컬럼 사이즈 변경

- 컬럼 사이즈 증가는 항상 가능

- 컬럼 사이즈 축소는 데이터 존재 여부에 따라 제한(데이터가 있는 경우 데이터의 최대 사이즈만큼 축소 가능)

- 동시 변경 가능(반드시 괄호 사용)

 

2) 데이터타입 변경

- 빈 컬럼일 경우 데이터타입 변경 가능

- CHAR, VARCHAR 타입일 경우 데이터가 있어도 서로 변경 가능

 

3) DEFAULT 값 변경

- DEFAULT 값이란 특정 컬럼에 값이 생략될 경우(입력 시 언급되지 않을 경우) 자동으로 부여되는 값

- INSERT 시 DEFAULT 값이 선언된 컬럼에 NULL 을 직접 입력할 때는 DEFAULT 값이 아닌 NULL 이 입력됨

- 이미 데이터가 존재하는 테이블에 DEFAULT 값 선언 시 기존 데이터 수정 안됨(이후 입력된 데이터부터 적용)

- DEFAULT 값 해제 시 DEFAULT 값을 NULL 로 선

 

# 컬럼 이름 변경

- 항상 가능

- 동시 여러 컬럼 이름 변경 불가(괄호 전달 불가)

- ALTER ... RENAME 명령어로 처리

ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 새컬럼명;

 

# 컬럼 삭제

- 데이터 존재 여부와 상관없이 언제나 가능

- RECYCLEBIN 에 남지 X(FLASHBACK 으로 복구 불가)

- 동시 삭제 불가

ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

DROP

- 객체(테이블, 인덱스 등) 삭제

- DROP 후에는 조회 불가

DROP TABLE 테이블명 [PURGE];
# PURGE 로 테이블 삭제 시 RECYCLEBIN 에서 조회 불가

TRUNCATE

- 구조 남기고 데이터만 즉시 삭제, 즉시 반영(AUTO COMMIT)

- RECYCLEBIN 에 남지 않음

TRUNCATE TABLE 테이블명;

# DELETE/ DROP/ TRUNCATE 차이

- DELETE : 데이터 일부 또는 전체 삭제, 롤백 가능

- TRUNCATE : 데이터 전체 삭제만 가능(일부 삭제 불가), 즉시 반영(롤백 불가)

- DROP : 데이터와 구조를 동시 삭제, 즉시 반영(롤백 불가)

728x90

'데이터베이스(DB) > SQLD' 카테고리의 다른 글

SQLD CBT 사이트 추천  (30) 2024.07.08
[SQLD 2-3-4] 관리 구문 - DCL  (34) 2024.07.02
[SQLD 2-3-2] 관리 구문 - TCL  (29) 2024.06.20
[SQLD 2-3-1] 관리 구문 - DML  (29) 2024.06.18
[SQLD 2-2-8] SQL 활용 - 정규 표현식  (32) 2024.06.17