Oracle--表分区和序列

--创建两个表空间
create tablespace tbs1
datafile 'E:\Oracle\oradata\orcl\tbs1.dbf'
size 32m
autoextend on 
next 32m maxsize 2048m;


create tablespace tbs2
datafile 'E:\Oracle\oradata\orcl\tbs2.dbf'
size 32m
autoextend on 
next 32m maxsize 2048m;




--范围分区
--创建表时使用范围表分区(根据ID范围存储)
drop table user_info;
create table user_info(
   u_id number primary key not null,
   u_name varchar2(50) not null,
   addr varchar2(255) not null,
   birth date not null
) partition by range(u_id)
(
   partition part1 values less than(5) tablespace tbs1,
   partition part2 values less than(10) tablespace tbs2,
   partition part3 values less than(maxvalue) tablespace my_space
);


--than(5) 表示的是id小于5不包括5的数据
--MAXVALUE代表了一个不确定的值,这个值高于其它分区中的任何分区键的值




--创建表时使用范围表分区(根据日期范围存储)
create table user_info(
   u_id number primary key not null,
   u_name varchar2(50) not null,
   addr varchar2(255) not null,
   birth date not null
) partition by range(birth)
(
   partition part1 values less than(to_date('1997-12-11','yyyy-mm-dd')) tablespace tbs1,
   partition part2 values less than(to_date('1999-02-17','yyyy-mm-dd')) tablespace tbs2,
   partition part3 values less than(maxvalue) tablespace space01
);


--根据Hash算法使用Hash分区
create table user_info(
   u_id number primary key not null,
   u_name varchar2(50) not null,
   addr varchar2(255) not null,
   birth date not null
) partition by hash(u_id)
(
   partition part1 tablespace tbs1,
   partition part2 tablespace tbs2,
   partition part3 tablespace space01
);
drop table user_info;
--根据地址字段使用列表分区
create table user_info(
   u_id number primary key not null,
   u_name varchar2(50) not null,
   addr varchar2(255) not null,
   birth date not null
) partition by list(addr)
(
   partition part1 values('zhuhai') tablespace tbs1,
   partition part2 values('guangzhou') tablespace tbs2
);


--组合分区中包括主分区和子分区,创建表时使用范围列表分区(日期字段使用范围分区,地址字段使用列表分区)
drop table user_info;
create table user_info(
   u_id number primary key not null,
   u_name varchar2(50) not null,
   addr varchar2(255) not null,
   birth date not null
) partition by range(birth) --主分区使用范围分区
  subpartition by list(addr) --子分区使用列表分区
(
   partition part1 values less than(to_date('1997-12-11','yyyy-mm-dd')) tablespace tbs1
   (
       subpartition subpart1 values('guangzhou'),
       subpartition subpart2 values('zhuhai')
   ),
   partition part2 values less than(to_date('1999-02-17','yyyy-mm-dd')) tablespace tbs2
   (
       subpartition subpart3 values('guangzhou'),
       subpartition subpart4 values('zhuhai')
   ),
   partition part3 values less than(maxvalue) tablespace space01
);


--添加测试数据
insert into user_info values(1,'user1','zhuhai',to_date('1997-03-12','YYYY-MM-DD'));
insert into user_info values(2,'user2','zhuhai',to_date('1998-03-20','YYYY-MM-DD'));
insert into user_info values(3,'user3','guangzhou',to_date('1999-03-18','YYYY-MM-DD'));
insert into user_info values(4,'user4','guangzhou',to_date('1999-02-17','YYYY-MM-DD'));
insert into user_info values(5,'user5','guangzhou',to_date('1992-06-07','YYYY-MM-DD'));
insert into user_info values(6,'user6','guangzhou',to_date('1999-08-09','YYYY-MM-DD'));
insert into user_info values(7,'user7','zhuhai',to_date('2000-04-22','YYYY-MM-DD'));
insert into user_info values(8,'user8','zhuhai',to_date('1996-05-12','YYYY-MM-DD'));
insert into user_info values(9,'user9','zhuhai',to_date('1955-06-08','YYYY-MM-DD'));
insert into user_info values(10,'user10','guangzhou',to_date('1999-11-16','YYYY-MM-DD'));
insert into user_info values(11,'user11','guangzhou',to_date('1994-12-14','YYYY-MM-DD'));
insert into user_info values(12,'user12','zhuhai',to_date('1995-04-19','YYYY-MM-DD'));
insert into user_info values(13,'user13','zhuhai',to_date('1993-06-25','YYYY-MM-DD'));
insert into user_info values(14,'user14','zhuhai',to_date('1997-12-11','YYYY-MM-DD'));
insert into user_info values(15,'user15','zhuhai',to_date('1933-12-30','YYYY-MM-DD'));


--查询
select * from user_info partition(part1);  --查询主分区
select * from user_info subpartition(subpart1); --查询子分区


--添加主分区
alter table user_info add partition part4 values less than(maxvalue) tablespace tbs1
--添加子分区
alter table user_info modify partition part1 
add subparttion subpart3 values('深圳')
删除分区
--删除主分区
alter table user_info drop partition part1
--删除子分区
alter table user_info drop partition subpart1
--重命名表分区
alter table user_info rename partition subpart1 to subpart0
--显示数据库所有分区表的信息
select * from DBA_PART_TABLES
--显示当前用户所有分区表的信息
select * from USER_PART_TABLES
--查询指定表分区数据
select * from user_info partition(part1)--主分区
select * from user_info subpartition(subpart1)--子分区
--删除分区表一个分区的数据
alter table user_info truncate partition part1





---------------------------------------分割线-----------------------------------
drop table user_info;
--创建一个序列
create sequence seq minvalue 1000 maxvalue 99999 start with 1000 increment by 1;
--创建用户表
create table user_info(
       u_id number primary key,
       u_name varchar2(50)  not null,
       u_addr varchar2(200) not null
);
--创建3个订票记录表
create table tickets_0(
       t_id number primary key,
       price number not null,
       begin_route varchar2(50) not null,
       end_route varchar2(50) not null,
       u_id number references user_info(u_id)
       ) ;


create table tickets_1(
       t_id number primary key,
       price number not null,
       begin_route varchar2(50) not null,
       end_route varchar2(50) not null,
       u_id number references user_info(u_id)
       ) ;


create table tickets_2(
       t_id number primary key,
       price number not null,
       begin_route varchar2(50) not null,
       end_route varchar2(50) not null,
       u_id number references user_info(u_id)
       ) ;


insert into user_info values(seq.nextval,'user1','珠海');
insert into user_info values(seq.nextval,'user2','珠海');
insert into user_info values(seq.nextval,'user3','珠海');


select * from user_info;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值