개발 강의 정리/SQL

[SQL] CREATE, ALTER, DROP, TRUNCATE

심사기 2021. 5. 24. 11:40

DICTIONARY

USER_XXX : 내가 소유한(내가 만든) 객체들의 정보

ALL_XXX : 내가 접근 할 수 있는 객체들의 정보

DBA_XXX : DBA ROLE로 접근 

 

<CREATE TABLE>

 

제약조건 이름 : 테이블명_컬럼명_PK/UK/NN/FK/CK  - 의미를 갖는 이름을 지정한다. 

콤마의 위치가 중요! 

<1>
 CREATE TABLE 테이블 명 (
  컬럼명 데이터타입() 
     CONSTRAINT 제약조건명 KEY ,
)

<2>

 CREATE TABLE 테이블 명 (
  컬럼명 데이터타입(),
  컬럼명 데이터타입()
     CONSTRAINT 제약조건 명 NOT NULL,        //NOT NULL 조건은 제약조건을 분리해서 지정할 수 없음. 
  컬럼명 데이터타입(),

   CONSTRAINT 제약조건명 KEY(컬럼),          //제약조건과 컬럼을 분리해서 지정할 수 있음
   CONSTRAINT 제약조건명 FOREIGN KEY(컬럼) REFERENCES 참조테이블명(참조 컬럼명),

)

 

<2> 번 방식으로 선언하면 복합키를 선언 할 수 있음 

   CONSTRAINT 제약조건명 PRIMARY KEY (컬럼1, 컬럼2)

 

<ALTER TABLE>

 

 

1.새로운 컬럼 추가

ALTER TABLE 테이블 명 ADD ( 컬럼명 데이터타입 [DEFAULT 디폴트값]);

 

2. 기존 컬럼 수정

 :데이터 타입 사이즈 변경, 테이블의 데이터가 NULL일 경우 타입 변경 가능

 :NOT NULL 제약 조건 추가. 

ALTER TABLE 테이블명 MODIFY( 컬럼명 데이터타입 [DEFAULT 디폴트값])

 

3.열 삭제

ALTER TABLE 테이블명 DROP (열삭제);

 

4.UNUSED 컬럼 지정

ALTER TABLE 테이블명 SET UNUSED COLUMN 컬럼명;

 

5.UNUSED 컬럼 삭제

ALTER TABLE 테이블명 DROP UNUSED COLUMNS;

 

 

<TRUNCATE TABLE>

:테이블에서 모든 행을 제거

:해당 테이블이 사용하는 저장공간을 해제한다

:TRUNCATE 명령어를 사용한 행 제거 작업은 롤백 할 수 없다. (사용과 동시에 COMMIT되기 때문)

 

TRUNCATE TABLE 테이블명;

 

 

<DROP TABLE>

:테이블의 모든 데이터 및 구조를 삭제한다.

:보류중인 트랜잭션을 모두 커밋한다.

:인덱스를 모두 삭제한다

:DROP TABLE은 롤백 할 수 없다. (사용과 동시에 COMMIT되기 때문)

 

DROP TABLE 테이블명;