반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- JPA
- 스프링 컨테이너
- Spring data JPA
- SQL 튜닝
- 정렬
- 페이징
- 스프링
- 스프링 데이터 JPA
- @MappedSuperclass
- Spring
- 그룹함수
- INDEX SCAN
- querydsl
- index
- TCP/IP
- 서브쿼리
- 엔티티
- JPQL
- 페치조인
- 오라클
- 컬렉션 조회 최적화
- SQL
- 친절한 SQL 튜닝
- 데이터모델링
- 성능최적화
- 데이터베이스
- fetch join
- DTO
- 자바의 정석
- 값 타입
Archives
- Today
- Total
nu_s
[SQL] DDL 본문
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 |