分区表之Interval分区和虚拟列按星期分区表

本文介绍了如何在Oracle 11g中使用虚拟列和Interval分区创建按星期和时间自动分区的表。通过示例详细展示了创建按星期分区的表以及Interval分区表的过程,包括插入数据、查看和操作分区内容。这种自动分区方式简化了数据库管理员的日常工作,尤其是在处理大量数据时。
摘要由CSDN通过智能技术生成

原 分区表 之 Interval分区 和 虚拟列 按星期分区表https://blog.csdn.net/tianlesoftware/article/details/5662337版权声明: https://blog.csdn.net/tianlesoftware/article/details/5662337
今天朋友问我, 说想建一个按星期分区的表,就是按星期几分区,没用过,就搜了下,可以用Oracle 11g 中虚拟列来实现。在11g之前 分区表的partition key必须是物理存在的。 11g开始提供了虚拟列,并且可以作为partition key 。
关于分区表,之前也做个整理:
Oracle 分区表 
http://www.cndba.cn/redhat/article/2304
Oracle 11g 新特性简介
http://www.cndba.cn/Dave/article/1207
  一.按星期分区表示例:
1. 创建分区表:
CREATE TABLE PT
(
   getdate   date NOT NULL,
   wd        NUMBER GENERATED ALWAYS AS (TO_NUMBER (TO_CHAR (getdate, 'D'))) VIRTUAL
)
PARTITION BY LIST (wd)
   (PARTITION Sun  VALUES (1),
    PARTITION Mon  VALUES (2),
    PARTITION Tue  VALUES (3),
    PARTITION Wed  VALUES (4),
    PARTITION Thu  VALUES (5),
    PARTITION Fri  VALUES (6),
PARTITION Sat   VALUES (7)
);
2. 插入测试数据
SQL> insert into pt(getdate) values(sysdate);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-1);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-2);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-3);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-4);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-5);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-6);
已创建 1 行。
SQL> insert into pt(getdate) values(sysdate-7);
已创建 1 行。
SQL> commit;
提交完成。
3. 查看数据:
SQL> select * from pt;
GETDATE                WD
-------------- ----------
06-6月 -10              1
07-6月 -10              2
08-6月 -10              3
09-6月 -10              4
10-6月 -10              5
03-6月 -10              5
04-6月 -10              6
05-6月 -10              7
已选择8行。
SQL> alter session set nls_date_format='YYYY-MM-DD';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值