Tibero4 기본강좌
Table 관리 0 0 94,485

by 티베로 Tibero Object Tibero Table [2009.11.19]


Table (이하 테이블)

관계형 데이터베이스에서 가장 기본적인 객체로, 데이터베이스에서 실제 데이터가 저장되는 논리적 구조이다. 테이블은 일반 테이블과 파티션 테이블로 나뉘며, 본 내용에서는 일반 테이블을 기준으로 설명한다.

테이블의 구성요소는 다음과 같다.

  • [그림] 테이블의 구성요소
  • Tibero 테이블의 구성요소

테이블은 그림과 같이 컬럼과 행으로 구성된다. 컬럼(column)은 테이블에 저장될 데이터의 특성을 지정한 것이고, 행(row)은 하나의 테이블을 구성하는 것으로, 다른 유형의 데이터가 저장된다.

테이블의 관리

테이블의 생성

테이블을 생성하기 위해서는 CREATE TABLE 문을 사용해야 한다. 다음은 테이블을 생성하는 예이다.

CREATE TABLE PRODUCT 
( 
    PROD_ID NUMBER(6), 
    PROD_NAME VARCHAR2(50), 
    PROD_COST VARCHAR2(30), 
    PROD_PID NUMBER(6), 
    PROD_DATE DATE 
) 
TABLESPACE MY_SPACE 
PCTFREE 5 
INITRANS 3;

  • - TABLESPACE: 테이블의 데이터가 저장될 테이블스페이스를 설정한다.
  • - PCTFREE: 테이블의 각 디스크 블록에 행을 갱신하기 위해 남겨두는 공간의 비율(%)을 설정한다.
  • - INITRANS: 테이블에 할당된 디스크 블록에 동시에 액세스할 수 있는 트랜잭션의 초기 값을 설정한다. 기본값은 2이다.

테이블의 변경

테이블을 변경하기 위해서는 ALTER TABLE 문을 사용해야 한다. 다음은 테이블을 변경하는 예이다.

ALTER TABLE PRODUCT PCTFREE 10;

위 예제는 디스크 블록의 파라미터의 값을 변경하는 예로, 테이블 PRODUCT의 PCTFREE 파라미터의 값이 5에서 10으로 변경된다.

테이블의 삭제

테이블을 삭제하기 위해서는 DROP TABLE 문을 사용해야 한다. 다음은 테이블을 삭제하는 예이다.

DROP TABLE PRODUCT;

위 예제는 테이블 PRODUCT를 삭제하는 예로, 테이블의 모든 행과 사용한 공간을 삭제한다.

테이블의 효율적 관리

테이블을 효율적으로 관리하기 위해서는 각각의 경우에 맞는 적절한 조치 방법을 수행해야 한다.

  • - 동시에 액세스될 가능성이 높은 테이블인 경우 병렬 처리가 수행될 가능성을 높이기 위해 서로 다른 디스크에 데이터를 저장한다.
  • - 테이블이 저장될 디스크의 용량을 결정하는 경우 테이블의 최대 크기를 추정하여, 테이블이 저장될 디스크의 용량을 결정한다.
  • - 하나의 테이블에 동시에 액세스할 트랜잭션의 수를 결정하는 경우 동시에 액세스할 트랜잭션의 수를 추정하여, 하나의 테이블에 동시에 액세스할 트랜잭션의 수를 결정한다.
  • - 테이블에 INSERT 연산이 발생하는 경우 테이블에 INSERT 연산이 발생하면, 로그를 저장하는 디스크의 용량도 할당해야 한다.

테이블의 정보 조회

Tibero RDBMS에서는 테이블의 정보를 제공하기 위해 다음 표에 나열된 정적 뷰를 제공하고 있다. DBA나 일반 사용자 모두 사용할 수 있다.

정적 뷰 설명
DBA_TABLES Tibero RDBMS 내의 모든 테이블의 정보를 조회하는 뷰이다.
USER_TABLES 현재 사용자에 속한 테이블의 정보를 조회하는 뷰이다.
ALL_TABLES 현재 사용자가 접근 가능한 테이블의 정보를 조회하는 뷰이다.
DBA_TBL_COLUMNS Tibero RDBMS 내의 모든 테이블과 뷰에 속한 컬럼의 정보를 조회하는 뷰이다.
USER_TBL_COLUMNS 현재 사용자에 속한 테이블 및 뷰에 속한 컬럼의 정보를 조회하는 뷰이다.
ALL_TBL_COLUMNS 현재 사용자가 접근 가능한 테이블 및 뷰에 속한 컬럼의 정보를 조회하는 뷰이다.

제약조건 (Constraints)

사용자가 원하지 않는 데이터가 테이블의 컬럼에 삽입, 변경, 제거되는 것을 방지하는 방법이다.

제약조건의 종류

제약조건의 종류는 다음과 같다.

제약조건 설명
기본 키 (Primary Key) 무결성 제약조건과 고유 키 무결성 제약조건을 결합한 방법이다.
기본 키로 설정된 컬럼은 NULL 값을 가질 수 없다.
유일 키 (Unique) 테이블의 컬럼은 동일한 값을 가질 수 없다. 대신, NULL 값은 여러 컬럼에 입력할 수 있다.
외부 키 (Foreign Key) 다른 테이블이나 현재 사용자가 소유한 테이블의 기본 키나 유일 키를 참조할 때 사용하는 방법이다.
NOT NULL 테이블의 컬럼은 NULL 값을 가질 수 없다.
테이블 레벨의 제약조건은 설정할 수 없다.
CHECK 삽입 또는 변경할 값이 만족해야 할 제약조건을 설정한다.
한 컬럼에 여러 개의 제약조건을 설정할 수 있다.

제약조건의 지정

제약조건은 컬럼 또는 테이블 레벨에서 지정할 수 있다.

  • 컬럼 레벨에서의 제약조건 지정
  • CREATE TABLE TEMP_PROD 
    ( 
        prod_id number(6) constraint prod_id_pk primary key, 
        prod_name varchar2(50) constraint prod_name_nn not null, 
        prod_cost varchar2(30) constraint prod_cost_nn not null, 
        prod_pid number(6), 
        prod_date date constraint prod_date_nn not null 
    );
    

  • 테이블 레벨에서의 제약조건 지정
  • CREATE TABLE TEMP_PROD 
    ( 
        prod_id number(6), 
        prod_name varchar2(50) constraint prod_name_nn not null, 
        prod_cost varchar2(30) constraint prod_cost_nn not null, 
        prod_pid number(6), 
        prod_date date constraint prod_date_nn not null, 
        constraint prod_id_pk primary key(prod_id, prod_name) 
    );
    

테이블과 제약조건에 대한 자세한 사항은 테크넷을 참고한다.

- 강좌 URL : http://www.gurubee.net/lecture/2083

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입