1.范围分区
--范围分区
--这是一个销售表
Create table sales1(
Sales_id number, --id
product_id varchar2(5), --产品编号
sales_date date not null, --销售时间
sales_cost number(10), --售价
areacode varchar2(5) --地区
)
partition by range (sales_date)( --分区 范围分区 时间
partition p1 values less than (to_date('2013-04-1','yyyy-mm-dd')),
partition p2 values less than (to_date('2013-07-1','yyyy-mm-dd')),
partition p3 values less than (to_date('2013-10-1','yyyy-mm-dd')),
partition p4 values less than (to_date('2014-01-1','yyyy-mm-dd')),
partition p5 values less than(maxvalue)
);
--插入数据的时候,如果数据的日期在2013-04-1前,数据插入到p1 分区
--插入数据的时候,如果数据的日期在2013-04-1前,数据插入到p1 分区
insert into sales1 values(1,'p1',to_date('2013-04-1','yyyy-mm-dd'),100,'025');
insert into sales1 values(1,'p1',to_date('2015-04-1','yyyy-mm-dd'),200,'026');
select * from sales1;
--查分区
select * from sales1 partition(p1);
select * from sales1 partition(p2);
select * from sales1 partition(p5);
--视图
--前面p5是视图 后面p5是分区。
create view p5 as select * from sales1 partition(p5);
select * from p5;
--sys
grant create view to scott;
--授权
grant select on scott.p5 to user06;
--user03 看不见 scott.p5 的视图 除非授权。
select * from scott.p5;
2.散列分区
--创建表空间
grant create tablespace to scott;
create tablespace tablespace01 datafile 'd:/a01.dbf' size 10m;
create tablespace tablespace02 datafile 'd:/a02.dbf' size 10m;
create tablespace tablespace03 datafile 'd:/a03.dbf' size 10m;
--这是一个销售表
Create table sales2(
Sales_id number, --id
product_id varchar2(5), --产品编号
sales_date date not null, --销售时间
sales_cost number(10), --售价
areacode varchar2(5) --地区
)
partition by hash(sales_id)( --通过id 分区 给表空间
partition p1 tablespace tablespace01,
partition p2 tablespace tablespace02,
partition p3 tablespace tablespace03
);
--插入四条数据
insert into sales2 values(1,'A1',to_date('2013-04-1','yyyy-mm-dd'),100,'025');
insert into sales2 values(6,'A2',to_date('2015-04-1','yyyy-mm-dd'),200,'026');
insert into sales2 values(7,'A2',to_date('2015-04-1','yyyy-mm-dd'),200,'027');
insert into sales2 values(8,'A3',to_date('2015-04-1','yyyy-mm-dd'),200,'028');
3.列表分区
--创建表
Create table sales3(
Sales_id number, --id
product_id varchar2(5), --产品编号
sales_date date not null, --销售时间
sales_cost number(10), --售价
areacode varchar2(5) --销售地区 华北 华南 华中
)
--通过地区列表划分
partition by list(areacode)(
partition t1 values('025','035'),
partition t2 values('372','373'),
partition t3 values(default)
);
insert into sales3 values(7,'c1',to_date('2012-02-02','yyyy-mm-dd'),10,'025');
insert into sales3 values(8,'c1',to_date('2012-02-05','yyyy-mm-dd'),20,'035');
insert into sales3 values(9,'c1',to_date('2012-02-08','yyyy-mm-dd'),30,'372');
insert into sales3 values(9,'c1',to_date('2012-02-09','yyyy-mm-dd'),40,'379');
select * from sales3 partition(t1);
select * from sales3 partition(t2);
select * from sales3 partition(t3);