리스트 분할 정의

설명

리스트 분할은 PARTITIION BY LIST 문을 이용하여 정의한다.

구문

CREATE TABLE(

...

)

PARTITION BY LIST ( <partition_expression> ) (

PARTITION <partition_name> VALUES IN ( <partition_value_list> ),

PARTITION <partition_name> VALUES IN ( <partition_value_ list>

,

...

);

예제 1

다음은 선수의 이름과 종목 정보를 담고있는 athlete2 테이블을 생성하고 종목에 따른 리스트 분할을 정의하는 예제이다.

CREATE TABLE athlete2( name VARCHAR(40), event VARCHAR(30) )

PARTITION BY LIST (event) (

PARTITION event1 VALUES IN ('Swimming', 'Athletics ' ),

PARTITION event2 VALUES IN ('Judo', 'Taekwondo','Boxing'),

PARTITION event3 VALUES IN ('Football', 'Basketball',

'Baseball')

);

예제 2

다음은 예제 1에서 생성한 리스트 분할에 데이터를 삽입하는 예제이다. 마지막 질의와 같이 데이터 삽입 시 분할 표현식에서 기술하였던 리스트에 없는 값으로 삽입하는 경우에는 삽입이 이루어지지 않는다.

INSERT INTO athlete2 VALUES ('Hwang Young-Cho', 'Athletics');

INSERT INTO athlete2 VALUES ('Lee Seung-Yuop', 'Baseball');

INSERT INTO athlete2 VALUES ('Moon Dae-Sung','Taekwondo');

INSERT INTO athlete2 VALUES ('Cho In-Chul', 'Judo');

INSERT INTO athlete2 VALUES ('Hong Kil-Dong', 'Volleyball');

예제 3

다음은 분할키 값이 NULL인 경우에 삽입이 이루어지지 않고 에러가 발생함을 보여주는 예제이다.

NULL 값을 삽입 가능하도록 분할을 정의하려면 두 번째 코드와 같이 NULL 값을 리스트로 갖는 분할을 정의하면 된다.

INSERT INTO athlete2 VALUES ('Hong Kil-Dong','NULL');

 

CREATE TABLE athlete2( name VARCHAR(40), event VARCHAR(30) )

PARTITION BY LIST (event) (

PARTITION event1 VALUES IN ('Swimming', 'Athletics ' ),

PARTITION event2 VALUES IN ('Judo', 'Taekwondo','Boxing'),

PARTITION event3 VALUES IN ('Football', 'Basketball',

'Baseball', NULL)

);

주의 사항