[DATABASE] 객체의 종류와 TABLE

  • 데이터베이스 객체
    • 종류

DATABASE OBJECT???

 

데이터베이스 객체로는 데이터를 저장해 놓고 꺼내 쓰는 가장 기본적인 객체인 테이블 부터 , 인덱스, 시노님, 시퀀스 등이 있는데, 대표적인 데이터베이스 객체들을 정리하면 아래 표와 같음.

 

DataBase's Object

EXPLAIN

TABLE

데이터 담고 있는 객체.

VIEW

하나 이상의 테이블 연결해서 마치 테이블인 것처럼 사요하는 객체.

INDEX

테이블에 있는 데이터를 바르게 찾기 위한 객체.

SYNONYM(동의어)

데이터베이스 객체에 대한 별칭을 부여한 객체.

SEQUENCE

일련번호 채번을

  사용되는 객체.

FUNCTION

특정 연산을 하고 값을 반환하는 객체.

PROCEDURE

함수와 비슷하지만 값을 반환하지 않는 객체.

PACKAGE

용도에 맞게 함수나 프로시저 하나로 묶어 놓은 객체.

  • 테이블
    • 테이블 생성[CREATE]

Ex)  CREATE TABLE 테이블명(

컬럼1   컬럼1_데이터타입   [NULL, NOT NULL],

컬럼2   컬럼2_데이터타입   [NULL, NOT NULL],

 . . .

컬럼3   컬럼3_데이터타입   [NULL, NOT NULL]

);

 

구성

LOW(), COLUMN()

생략가능

스키마, 테이블스페이스

 

  • 데이터 넣고 수정하고 삭제하는 데이터를 담고 있는 객체가 테이블 .
  • DBMS상에서 가장 기본적인 개체로 로우() 칼럼()으로 구성된 2차원 형태() 객체로 우리가 자주 사용하는 엑셀과 구조가 같다고 보면 이해하기 쉬울 것이다.
  • SQL 필요해 데이터를 조회, 삭제, 입력, 수정할 대상이며 결과를 담고 있는 .
  • 테이블을 설계하는 작업은 데이터베이스를 사용할 가장 기초적이고 중요한 단계임.

 

@TABLE 생성

@TABLE 생성 규칙

  1. 테이블명, 컬럼명의 최대 크기는 30BYTE.
  2. 트이블명, 컬럼명으로 예약어는 사용 불가능.
  3. 테이블명, 칼럼명으로 문자, 숫자, _ , $ , # 가능하며, 글자는 문자만 가능.
  4. 테이블에 사용 가능한 컬럼은 최대 255개임.

 

  • 데이터 타입 : column 저장되는 데이터의 타입을 가르키는 .

타입의 종류        

기본 타입(Oracle에서 제공하는 타입들)

사용자 정의 데이터 타입

 

문자 데이터 타입

설명

기본

CHAR(크기[BYTE  |  CHAR])

고정길이 문자, 최대 이천바이트

1BYTE

VARCARCHAR2(크기[BYTE  |  CHAR])

가변길이 문자, 최대 사천바이트

1BYTE

NCHAR(크기)

고정길이 유니코드 문자(다국어지원) 최대 이천바이트

1BYTE

NVARCARCHAR2(크기)

가변길이 유니코드 문자(다국어지원) 최대 사천바이트

1BYTE

LONG

최대 2기가 크기의 가변길이 문자형, 사용빈도 낮음

-

 

숫자 데이터 타입

설명

기본

NUMBER[(P, [S])]

가변숫자, P(1~38) S(-84~127) 십진수 기준, 최대 22BYTE

P=38, S=0

FLOAT[(P)]

NUMBER 하위 타입, P 1~128, 이진수 기준, 최대 22BYTE

128

BINARY_FLOAT

32BIT 부동소수점 , 최대 4BYTE

-

BINARY_DOUBLE

64BIT 부동소수점 , 최대 8BYTE

-

LONG

최대 2기가 크기의 가변길이 문자형, 사용빈도 낮음

-


 

 

 

  • 테이블 생성



 

  • 테이블 삽입

 

 

  • 파티션 테이블

@PARITION TABLE

 

테이블 내의 특정 칼럼값을 기준으로 데이터를 분할해서(파티션) 테이블을 생성하는 방법. 논리적으로는 하나의 테이블이지만 물리적으로는 분할한 만큼 파티션이 만들어져 입력되는 컬러맚에 따라 분할된 파티셧별로 데이터가 저장됨.

 

목적 : 대용량 테이블의 경우 관리 조회시 효율성과 성능을 높이기 위해.

 

Ex)

 판매회사의 대용량(100만건이라 가정) 매출정보가 담겨있는 SALES 라는 테이블이 있다. SALES에서 특정 데이터를 찾으려면 100만건을 모두 조회해봐야 한다. 인덱스를 사용하면 조금 수월해지겠지만, 그렇다하더라도 100만건을 조회하는건은 같다. 이때 판매일, 판매월과 같은 특정 칼럼들을 이용해 분할하게되면 전체를 조회하지않아도 된다.

 

 

 

 

[Example]

  • Card  테이블에 연도 (CreationTime) 컬럼을 추가하고 파티셔닝함.

 

1

2

3

4

5

6

7

8

 

create table businessCard(

ID INT NoT Null,

 Name varchar(255),

 Address varchar(255) ,

 Telephone varchar(255) , 

CreateTime DATE

) 

PARTITION BY RANGE(YEAR(CreationTime)) (

PARTITION p0 VALUES LESS THAN(2013),

PARTITION p1 VALUES LESS THAN(2014),

PARTITION p2 VALUES LESS THAN(2015),

PARTITION p3 VALUES LESS THAN MAXVALUE);  

 

Colored by Color Scripter

cs

 

 

  • 파티션 추가 와 삭제 

 

1

2

3

4

 추가

ALTER TABLE Card ADD PARTITION(PARTITION p4 VALUES LESS THAN(2005));

 삭제

ALTER TABLE Card DROP PARTOTION p4;

Colored by Color Scripter

cs

 

  • 파티션 분할 / 병합

 

1

2

3

ALTER TABLE CardREORGANIZE

 PARTITION p3 INTO(PARTITION p3 VALUES LESS THAN(2015),

PARTITION p4 VALUES LESS THAN MAXVALUE);

cs

▶ 파시션을 하여 정보를 나누웠는데도 P3에 데이터가 많은 경우 P3 P3 ,P4로 더욱 분할하는 경우

 

1

2

3

ALTER TABLE Card

REORGANIZE PARTITION p2,p3

 INTO(PATITION p23 VALUES LESS THAN(2014));

cs

▶파티션을 P2 , P3으로 만들었지만 데이터가 적어서 P23으로 병합하는 경우