oracle创建时间分区

本文深入探讨了如何使用SQL创建并操作基于时间、字段范围和天数的分区表,通过实例展示了分区表的创建过程及数据插入、查询等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

例如我们要对一张表按照时间创建分区:

 

create table cmp
   (
        transaction_id number primary key,
        item_id number(8) not null,
       item_description varchar2(300),
       transaction_date date not null  
  )
    partition by range (transaction_date)
    (
   partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')) tablespace dinya_space01,
   partition part_02 values less than(to_date('2010-01-01','yyyy-mm-dd')) tablespace dinya_space02,
  partition part_03 values less than(maxvalue) tablespace dinya_space03
  );

  这样我们就分别建了以交易序号和交易日期来分区的分区表。每次插入数据的时候,系统将根据指定的字段的值来自动将记录存储到制定的分区(表空间)中。

当然,我们还可以根据需求,使用两个字段的范围分布来分区,如partition by range ( transaction_id ,transaction_date),分区条件中的值也做相应的改变,请读者自行测试。

按天创建分区:


create table anoscfg.test_123
(
begin_time	date
)
partition by RANGE  (BEGIN_TIME)
(
  partition p1 values less than (to_date('2012-05-13', 'yyyy-mm-dd')),
  partition p2 values less than (to_date('2012-05-14', 'yyyy-mm-dd')),
  partition p3 values less than (to_date('2012-05-15', 'yyyy-mm-dd')),
  partition p4 values less than (to_date('2012-05-16', 'yyyy-mm-dd')),
  partition p5 values less than (to_date('2012-05-17', 'yyyy-mm-dd'))
);
 

insert into anoscfg.test_123(BEGIN_TIME) values(to_date('2012-05-12', 'yyyy-mm-dd'));

insert into anoscfg.test_123(BEGIN_TIME) values(to_date('2012-05-13', 'yyyy-mm-dd'));
insert into anoscfg.test_123(BEGIN_TIME) values(to_date('2012-05-14', 'yyyy-mm-dd'));
insert into anoscfg.test_123(BEGIN_TIME) values(to_date('2012-05-15', 'yyyy-mm-dd'));
insert into anoscfg.test_123(BEGIN_TIME) values(to_date('2012-05-16', 'yyyy-mm-dd'));

 查询分区:

select * from test_123 partition(p4);
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值