# 데이터 유형
# 제약 조건
- 데이터 무결성을 위해 각 컬럼에 생성하는 데이터의 제약 장치
- 테이블 생성 시 정의 가능, 컬럼 추가 시 정의 가능, 이미 생성된 컬럼에 제약조건만 추가 가능
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 : 데이터와 구조를 동시 삭제, 즉시 반영(롤백 불가)
'데이터베이스(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 |