分区表

--创建分区表(超过数据区间不自动增加分区需要事先建立分区)
CREATE TABLE TEST_FQB 
(
  ID VARCHAR2(20) 
, TIME DATE 
) 
--已TIME字段为RANGE来进行分区
PARTITION BY RANGE (TIME) 
--如想自动增加分区则需要开启下面一行命令,如插入数据有超过建立的分区时自动创建分区不规范命名,不建议使用;
--按月自动建立分区表;
--INTERVAL(NUMTOYMINTERVAL(1,'MONTH'))
(
--最后一个数据为最大值,下面数据可插入区间为1月1日-2月1日
--没有指定表空间 则自动建立在默认表空间下如分区ZJJS_201702
  PARTITION ZJJS_201701 VALUES LESS THAN (TO_DATE('2017-01-01','YYYY-MM-DD')) 
  TABLESPACE TEST  
, PARTITION ZJJS_201702 VALUES LESS THAN (TO_DATE('2017-02-01','YYYY-MM-DD'))  
);

--查询分区表明细 后面可加WHERE查询条件
SELECT TABLESPACE_NAME,TABLE_NAME,PARTITION_NAME,PARTITION_POSITION FROM USER_TAB_PARTITIONS;

--删除分区表分区
ALTER TABLE TEST_FQB DROP PARTITION ZJJS_201703;

--增加分区表分区(可选表空间,建议不同年份的数据存在不同表空间中,月份数据按分区划分不分表空间)
ALTER TABLE  TEST_FQB ADD PARTITION ZJJS_201703 VALUES LESS THAN (TO_DATE('2017-03-01','YYYY-MM-DD')) TABLESPACE TEST1;

--插入数据
INSERT INTO TEST_FQB (ID,TIME) VALUES('2',TO_DATE('2017-02-03 09:41:06','YYYY-MM-DD HH24:MI:SS'));

--查询全部数据
SELECT * FROM TEST_FQB;

--按分区查询数据
SELECT * FROM TEST_FQB PARTITION(ZJJS_201703);

--跨分区查询数据
SELECT * FROM TEST_FQB PARTITION(ZJJS_201701) UNION ALL SELECT * FROM TEST_FQB PARTITION(ZJJS_201702) UNION ALL SELECT * FROM TEST_FQB PARTITION(ZJJS_201703);
SELECT * FROM TEST_FQB WHERE TIME BETWEEN TO_DATE('2017-01-01','YYYY-MM-DD') AND TO_DATE('2017-03-01','YYYY-MM-DD HH24:MI:');

 

posted @ 2017-09-12 09:28  丨逸仙  阅读(183)  评论(0编辑  收藏  举报