WEB개발

[DB] DDL TABLE (CREATE, ALTER, DROP)

wooyeon06 2022. 1. 13. 14:32

 

 

TABLESPACE : 오라클은 데이터를 관리하는 데이터베이스입니다. 데이터를 어딘가에 저장해놓고 사용하는 시스템이라고 볼 수 있습니다. 데이터 저장 단위 중 가장 상위에 있는 단위를 테이블 스페이스라고 합니다.

논리적 단위는 데이터블록 > 익스텐트 > 세그먼트 > 테이블스페이스 이렇게 나뉩니다.

 

 

 

CREATE TABLE

 

CREATE TABLE  NEW_EMP (ENO NUMBER(10), ENAME VARCHAR2(10)
)
TABLESPACE USERS
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE
(
   INITIAL 65536
   NEXT 1048576
   MINEXTENTS 1
   MAXEXTENTS UNLIMITED
   BUFFER_POOL DEFAULT
   PCTINCREASE 50
)
LOGGING
DISABLE ROW MOVEMENT ;

 

 

PCTFREE 10 : 블록내 여유공간 10% 블럭내에 이미 존재하고 있는 Row에 Update가 가능하도록 예약시켜 놓는 블럭의 퍼센트 값을 지정합니다.

( DEFAULT : 10% )

 

INITRANS 1 : 세그먼트의 속성 중 동시 트랜잭션 수를 제어하는 옵션 INITRANS의 기본값은 2이며 최소값도 2입니다.( DEFAULT : 2 )

 

MAXTRANS 255

최대 트랜잭션 수를 지정합니다. 여기서는 테이블당 최대 255개의 트랜잭션을 설정합니다.

( DEFAULT : 255 )

 

STORAGE : 데이터베이스 객체를 저장하는 방법을 지정할 수 있음

    INITIAL 65536 : Segment가 생성될 때 할당될 때 첫 번째 확장영역의 크기

    NEXT 1048576 : 다음 Extents의 크기, 두 번째 확장영역은 NEXT의 원래 크기와 동일하며 다음부터의 NEXT는                                        (1+PCTINCREASE/100)과 Next의 이전크기를 곱한 크기로 설정됨

    MINEXTENTS 1 : 생성할 Extents의 최소 값

    MAXEXTENTS UNLIMITED : 생성할 Extents의 최대 값

    PCTINCREASE : Extents의 증가율, (Default :  50)

}

 

BUFFER_POOL DEFAULT : 기본 버퍼 풀에서 사용하도록 지정 하는것. 버퍼 영역을 두고 사용 빈도가 높은 데이터를 메모리 내에서 운용하며 재활용합니다.

 

LOGGING : 로깅옵션 키는것(default 값임 NOLOGGING이 로깅 안하겠다는 옵션(이 경우 복구가 잘되지않음))

 

DISABLE ROW MOVEMENT : 이 옵션은 행 이동을 비활성화합니다. 즉, 테이블의 행을 업데이트하여 데이터베이스에서 행의 물리적 위치가 변경되지 않도록 합니다.

 

 

 

테이블스페이스(Tablespace) 조회

 

SELECT tablespace_name, status, contents, extent_management, allocation_type
FROM dba_tablespaces;

 

 

세그먼트(Segment) 조회

 

SELECT tablespace_name, segment_name
FROM USER_SEGMENTS

 

 

익스텐트(Extent) 조회

 

SELECT segment_name, segment_type, tablespace_name, extent_id, file_id, block_id, bytes
FROM dba_extents



제약조건 조회

 

SELECT constraint_name, constraint_type, table_name
FROM user_constraints
WHERE table_name = '테이블_이름';

 

 

ALTER TABLE

 

ALTER TABLE table_name
ADD column_name datatype;

ALTER TABLE employees
MODIFY (emp_salary NUMBER(10, 2));

ALTER TABLE table_name
DROP COLUMN column_name;

 

 

ALTER TABLE 테이블_이름
ADD CONSTRAINT 제약_이름 제약_유형(열);

ALTER TABLE 테이블_이름
MODIFY CONSTRAINT 제약_이름 새로운_제약_설정;

ALTER TABLE employees
DROP CONSTRAINT 제약_이름;

 

 

  • 열 추가: ADD 키워드 사용
  • 열 수정: MODIFY 키워드 사용
  • 열 이름 변경: RENAME COLUMN 키워드 사용
  • 제약 조건 추가 또는 삭제: ADD CONSTRAINT, DROP CONSTRAINT 키워드 사용
  • 인덱스 추가 또는 삭제: ADD INDEX, DROP INDEX 키워드 사용 등

 

DROP TABLE

 

DROP TABLE table_name;

 

 

 

 

 

 

 


 

https://positivemh.tistory.com/329

https://coding-factory.tistory.com/411