nu_s

[SQL] DDL 본문

Data Base/SQL

[SQL] DDL

woochii 2023. 8. 8. 22:46
728x90
반응형

명령어의 종류 및 설명

명령어 설명
CREATE TABLE   새로운 테이블을 생성
DROP TABLE   기존 테이블의 구조 및 모든 행을 삭제
ALTER TABLE   기존 테이블을 변경
   - 컬럼의 추가, 수정
   - 제약조건 추가, 삭제, 활성화, 비활성화
TRUNCATE   기존 테이블의 구조는 남기고 모든 행을 삭제
RENAME   Object의 이름을 바꿈
COMMENT   테이블이나 컬럼에 주석문 달기
주의
이 명령어들은 모두 데이터 정의 명령어(DDL)로 실행시 자동 Commit 후에 Rollback될 수 없으므로 주의해서 실행해야 한다.

 

1. 테이블 삭제 (DROP TABLE)

DROP TABLE 테이블명 [CASCADE CONSTRAINTS] ;
  • 모든 데이터가 테이블에서 삭제된다.
  • 트랜잭션은 자동 Commit 된다.
  • 해당 테이블의 모든 인덱스가 삭제된다.
  • CASCADE CONSTRAINTS 옵션은 종속된 제약조건을 삭제한다.
  • 이 명령은 Rollback할 수 없다.

 

2. 컬럼의 수정 (ALTER TABLE)

 

2-1 컬럼의 추가

ALTER TABLE 테이블명
ADD (컬럼명 데이터타입 [DEFAULT (기본값)][CONSTRAINT]) ;

-- ALTER TABLE S_EMP
-- ADD name VARCHAR(20) DEFAULT '홍길동' NOT NULL;

2-2 컬럼의 삭제

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

2-3 컬럼의 수정

ALTER TABLE 테이블명
MODIFY (컬럼명 데이터타입 [DEFAULT (기본값)][NOT NULL])
  • 기존에 존재하는 컬럼에 대한 크기와 타입의 변경이다.
  • 컬럼의 크기, 기본값(default), NOT NULL 제약조건을 변경 가능
  • 컬럼이 NULL이거나 테이블에 데이터가 없을 때, 컬럼의 크기 축소 또는 데이터 타입의 변경이 가능
  • DEFAULT를 변경하면 다음 입력 때 부터 적용된다.
  • 컬럼에 NULL이 없을 때만 NOT NULL 제약조건 추가 가능

2-4 제약조건 추가

ALTER TABLE 테이블명
ADD [CONSTRAINT 제약조건명] 제약조건 유형 (컬럼명);

 

2-5 제약조건 삭제

ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명 [CASCADE];

2-6 제약조건 변경

-- 제약조건 활성화
ALTER TABLE 테이블명
ENABLE CONSTRAINT 제약조건명;

-- 제약조건 비활성화
ALTER TABLE 테이블명
DISABLE CONSTRAINT 제약조건명 [CASCADE];

 

3. 그 외의 DDL

RENAME 이전이름 TO 새로운이름;

TRUNCATE TABLE 테이블명;

COMMENT ON TABLE 테이블명 IS '주석문장';

COMMENT ON COLUMN 테이블명.컬럼명 IS '주석문장';

RENAME - OBJECT의 이름 변경

  • 테이블, View, Sequence, SYNONYM의 이름을 바꾼다.
  • 객체의 소유자만이 바꿀 수 있다.

TRUNCATE - 테이블의 구조를 남기고 모든 데이터 삭제하기

  • 테이블의 모든 행을 삭제한다.
  • 테이블이 사용한 저장공간을 반환한다.

 

Delete, Truncate, Drop 비교

1.Delete

  • 데이터만 삭제 되며 테이블 용량은 줄어 들지 않는다. 또한 삭제후 잘못 삭제한 것을 되돌릴 수 있다.
  • TABLE이나 CLUSTER에 행이 많으면 행이 삭제될 때마다 많은 SYSTEM 자원이 소모 된다.
  • Commit이전에는 Rollback이 가능하다.
  • Rollback정보를 기록 하므로 TRUNCATE에 비해서 느리다.
  • 전체 또는 일부만 삭제 가능 하다.
  • 삭제 행수를 반환 한다.
  • 데이터를 모두 Delete해도 사용했던 Storage Release 처리 되지 않는다.

2.Truncate - 테이블의 모든 로우를 제거하는 Truncate Table

  • 테이블을 최초 생성된 초기상태로 만든다.
  • 용량이 줄어들고, 인덱스 등도 모두 삭제된다.
  • Rollback 불가능하다.
  • 무조건 전체 삭제만 가능하다.
  • 삭제 행수를 반환 하지 않는다.
  • 테이블이 사용했던 Storage중 최초 테이블 생성시 할당된 Storage만 남기고 Release 처리된다.

 

3. Drop table - 테이블 구조를 제거

  • 기존 테이블의 존재를 제한다. (테이블의 정의 자체를 완전히 삭제한다)
  • Rollback 불가능 하다.
  • 테이블이 사용했던 Storage는 모두 Release 처리 된다.
728x90
반응형

'Data Base > SQL' 카테고리의 다른 글

[SQL] OBJECT  (0) 2023.08.09
[SQL] DCL  (0) 2023.08.09
[SQL] Dictionary  (0) 2023.08.06
[SQL] 트랜잭션 (TRANSACTION)  (0) 2023.08.03
[SQL] 제약조건 (Constraint)  (0) 2023.08.01