oracle分区

本文详细介绍了Oracle数据库的分区技术,包括列值列表分区、范围分区、散列分区和复合分区(范围-散列分区,范围-列表分区)。通过示例展示了如何创建和操作这些分区,以及插入、查询、更新和删除分区表记录的方法。
摘要由CSDN通过智能技术生成

--用列做分区,分区原则是列的内容
create table custaddr
(
id varchar2(15 byte) not null,
areacode varchar2(4 byte)
)
partition by list (areacode)

partition t_list025 values ('025'), 
partition t_list372 values ('372') , 
partition t_list510 values ('510'),
partition p_other values (default)
);
commit;

select * from custaddr;
select *  from custaddr partition(t_list025) ;
select *  from custaddr partition(t_list372) ;
select *  from custaddr partition(t_list510) ;
select *  from custaddr partition(p_other) ;

--范围分区
create table graderecord  
  (  
  sno varchar2(10),  
  sname varchar2(20),  
  dormitory varchar2(3),  
  grade int  
)  
partition by range(grade)  
(  
  partition bujige values less than(60), --不及格  
  partition jige values less than(85), --及格
  partition youxiu values less than(maxvalue) --优秀  
);
commit;

select * from graderecord;  
select * from graderecord partition(bujige);  
select * from graderecord partition(jige);  
select * from graderecord partition(youxiu); 
---散列分区,计算字段值的hashcode进行分区,可以是单独一个字段hash,也可以是多个字段
create table graderecord1  
(  
  sno varchar2(10),  
  sname varchar2(20),  
  dormitory varchar2(3),  
  grade int  
)  
partition by hash(sno)  
(  
  partition p1,  
  partition p2,  
  partition p3  
);
commit;
select * from graderecord1 partition(p1);  
select * from graderecord1 partition(p2);  
select * from graderecord1 partition(p3);

--复合分区(范围-散列分区,范围-列表分区)
--子分区如果是通过hashcode分区,可以是单个字段,也可以多个字段

create table graderecord4
--先通过范围分区,然后再联合sname和sno进行复合分区,其实就是子分区
(  
  sno varchar2(10),  
  sname varchar2(20),  
  dormitory varchar2(3),  
  grade int  
)
partition by range(grade) 
subpartition by hash(sno)  --subpartition by hash(sno,sname)
(  
  partition p1 values less than(75)  
            (  
               subpartition sp1 --, subpartition sp2
            ),  
  partition p2 values less than(maxvalue)  
            (  
               subpartition sp3 --, subpartition sp4
            )  
);
select * from graderecord4 partition(p1);  
select * from graderecord4 partition(p2);  
select * from graderecord4 subpartition(sp1);  
--select * from graderecord subpartition(sp2);  
select * from graderecord4 subpartition(sp3);  
--select * from graderecord subpartition(sp4); 

--复合分区之范围-列表分区(无模板)
create table MobileMessage  
(  
 ACCT_MONTH VARCHAR2(6), -- 帐期 格式:年月 YYYYMM  
 AREA_NO VARCHAR2(10), -- 地域号码   
 DAY_ID VARCHAR2(2), -- 本月中的第几天 格式 DD  
 S

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值