分区表
--创建分区表(超过数据区间不自动增加分区需要事先建立分区) 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:');