본문 바로가기
프로그래밍/DB

오라클 테이블 생성 등 관련 쿼리 성 DDL 쿼리

by @GodWin 2024. 9. 19.

-

 

-

Create Table
 -> CREATE TABLE 테이블명( 컬럼명 데이터타입 제약조건 널조건 )


Rename Table
 -> RENAME 변경
테이블명 TO 변경테이블명 ;

Copy Table
 -> CREATE TABLE 테이블명 AS SELECT * FROM 복사
테이블 명;

Delete Table
 -> DELETE TABLE 테이블명;

Add Table Column

 -> ALTER TABLE 테이블명 ADD(컬럼명 데이타타입(사이즈) default 값 널조건);

- 추가된 컬럼은 항상 마지막 순서 (컬럼 순서를 변경 불가)
- 추가된 데이터는 각 행에 널값으로 삽입
- 테이블 내에 레코드가 존재한다면 낫널인 컬럼을 추가 불가
- 빈 테이블일 경우 낫 널을 부여 가능

※ 디폴트값 추가 시에는, 테이터타입 뒤에 default 디폴트값 지정
    -> 
기존 데이터와의 관계를 염두해서 추가시에 지정을 할지, 생성 후 수정을 통해 지정을 할지 체크
    -> 추가 시에는 기존 데이터도 디폴트값이 적용, 수정 시에는 이후의 추가 row에 디폴트값이 적용


Modify Table Column
 -> ALTER TABLE 테이블명 MODIFY(컬럼명 데이터타입 default 값 널조건);

- 타입, 사이즈, 기본값을 변경 가능
- 디폴트 값을 변경했을 경우 이후 삽입되는 데이터에 대해서만 적용
- 숫자형 사이즈 증가 가능
- 문자형 데이터 사이즈 증가 가능
※ 사이즈 줄일 수 있는 경우 : 모든 값이 널일 경우 / 레코드가 없을 경우
※ 줄이고자 하는 사이즈가 현재 들어가있는 값들보다 작을 경우
- 컬럼의 모든 값이 널 값일 경우 컬럼의 타입을 변경 가능
- char를 varchar2 형태로 바꿀 때는 타입 변경 가능
- cahr to varchar2, varchar2 to char 변환은 컬럼이 널값만 가지고 있거나 사이즈 변경이 없을 경우
- 디폴트 값은 다음 입력부터 반영

Drop Table Column
 -> ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

- 컬럼에 데이터 존재 유무에 무관하게 드랍 가능
- 한번에 여러개의 칼럼 삭제도 가능
- 테이블은 적어도 한개의 컬럼 존재 필수
- 드랍하고 나면 복구 불가
- 제약의 일부이거나 인덱스의 일부일 경우 삭제 불가
- cascade옵션을 추가
- 레코드가 많은 경우 드랍 칼럼은 옳지 않다. 락을 피하기 위해 유저가 적을때 unused를 쓰고 드랍

 
Rename Table Column
 -> ALTER TABLE 테이블명 RENAME COLUMN 원래컬럼명 TO 바꿀컬럼명;

Unused Table Column
 -> ALTER TABLE 테이블명 SET UNUSED 컬럼명;
                                  or
 -> ALTER TABLE 테이블명 SET UNUSED COLUMN 컬럼명;

Constraint Table Column
 -> ALTER TABLE 테이블명 ADD [CONSTRAINT 제약명] 타입 (컬럼명);

- 제약을 추가하거나 드랍할 수 있지만 존재하는 제약을 수정 불가
- 제약을 활성화, 비활성화 가능
- Not NUll 제약을 추가할 때는 반드시 modify를 함께 사용
- Not Null은 테이블이 비어있거나 해당 컬럼의 모든 레코드가 값을 가질 경우 가능

Delete Table Column Primary Key
 -> ALTER TABLE 테이블명 DROP PRIMARY KEY CASCADE;
 -> ALTER TABLE 테이블명 DROP PRIMARY KEY:


Unique Constraint : No Constraint Name
 -> ALTER TABLE 테이블명 ADD UNIQUE (컬럼명);


Unique Constraint : Constraint Name
 -> ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건 UNIQUE (컬럼명);
 
Primary Key Constraint 
 -> ALTER TABLE 테이블명 ADD PRIMARY KEY(컬럼명);
            
                           or
 -> ALTER TABLE 테이블명 ADD (CONSTRAINT PK명 PRIMARY KEY (컬럼명));

Delete Constraint
 -> ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건;
 

Delete All Constraint Relation Table
 -> DROP TABLE 테이블명 CASCADE CONSTRAINTS;

Create Index
 -> CREATE UNIQUE INDEX PK명 ON 테이블명 (컬럼명);


Delete Index
 -> DROP INDEX 인덱스명;


Delete Procedure
 -> DROP PROCEDURE 프로시저명;

 

Add Table Comment
 -> COMMENT ON TABLE  테이블명 IS '코멘트';

Add Table Column Comment
 -> COMMENT ON COLUMN 테이블명.컬럼명 IS '코멘트' ;

Delete Table Comment
 -> COMMENT ON TABLE 테이블명 IS '';