【SQL应知应会】表分区(三)• Oracle版

请添加图片描述

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流

本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

请添加图片描述

分区表 • Oracle版

  • 前言
  • 一、分区表
  • 1.什么是表分区
  • 2.创建分区表
    • 2.1 创建范围分区表
    • 2.2 创建列表分区表
    • 2.3 创建散列分区表
    • 2.4 创建复合分区表
  • 3.表分区操作
    • 3.1 创建`range-list`分区
    • 3.2查看分区
    • 3.3查看子分区
    • 3.4 添加分区
      • 3.4.1 添加主分区不带子分区
      • 3.4.2 添加主分区时将子分区带上
    • 3.5 添加子分区
    • 3.6 截断表分区
  • 小结

前言

✅对于表分区这块内容,我们在MySQL方面已经有五篇内容了,大家可以去我的专栏SQL应知应会进行学习
前面也有过Oracle的表分区的开篇和表分区(二)• Oracle版了,今天这篇内容继续Oracle的表分区
✳️今天这篇主要讲了表分区的一些操作,如创建分区,查看分区以及子分区,添加分区的两种情况,添加子分区,截断表分区这些内容
✴️如果大家学习过前面MySQL的表分区的话,那么对于今天的内容是很轻松就可以学会的,当然,这并没有严格的学习顺序的安排,只是对于MySQL的表分区,我花了大量的篇幅进行学习,大家可以根据自己的学习情况进行随意的选择学习顺序(无需有过多的顾虑)
希望文章的内容对大家有所帮助,如果有什么不足的地方,大家可以在评论区或者私信我,感谢大家的支持
那么,快拿出你的电脑,跟着文章一起学习起来吧

一、分区表

1.什么是表分区

:传送门什么是表分区

1.1 分区的意义
1.2 分区的作用
1.3 表分区的方法

2.创建分区表

2.1 创建范围分区表

:传送门创建范围分区表

2.1.1 基本语法
2.1.2 示例

2.2 创建列表分区表

:传送门创建列表分区表

2.2.1 基本语法
2.2.2 示例

2.3 创建散列分区表

:传送门创建散列分区表

2.3.1 基本语法
2.3.2 示例1
2.3.2 示例2

2.4 创建复合分区表

:传送门创建复合分区表

2.4.1 示例1 范围-列表复合分区
2.4.3 示例2 范围-散列复合分区

3.表分区操作

3.1 创建range-list分区

create table test_range_list_only(
       month_id varchar2(6),
       stu_name varchar2(10),
       fee number
)
partition by range(month_id)    -- 建立范围分区  -- 主分区是月份
subpartition by list(fee)(      -- 建立列表子分区  -- 在fee上建立列表分区
       partition partrage_201102 values less than('201103')  -- 小于201103月份分区
       (
                 subpartition partlist_201102_60 values('60'), -- 消费60元的分区
                 subpartition partlist_201102_70 values('70'),
                 subpartition partlist_201102_80 values('80')
                 ),
       partition partrage_201103 values less than('201104')  -- 小于201104月份分区 
       (         
                 subpartition partlist_201103_60 values('60'),
                 subpartition partlist_201103_70 values('70'),
                 subpartition partlist_201103_80 values('80')
                 )
);
  • 定义分区实例的时候,要把握主分区实例和子分区实例
    • 范围分区的特性就是适合运维上生产固化的报表、不轻易更改、随着时间而增长的分区,适合沉淀底层的明细数据/生产数据
    • 进一步分析适合用里列表分区做,列表分区可以很方便的进行补充数据

3.2查看分区

select * from user_part_tables; -- user_part_tables 是 Oracle 数据库中的一个静态字典视图

【SQL应知应会】表分区(三)• Oracle版_第1张图片

3.3查看子分区

select * from all_tab_subpartitions where table_owner = 'DW';

【SQL应知应会】表分区(三)• Oracle版_第2张图片

3.4 添加分区

3.4.1 添加主分区不带子分区

  • 根据图中的结果,很明显,如果添加主分区不把子分区带上,系统会自动写一个子分区的名字,并且只有一个子分区(而前面每个主分区都有3个子分区)

添加主分区不写子分区的名称,也可以运行通过,但是很明显自动添加的名称不符合业务定义
这样的子分区没有意义,所以加的时候要带上它的子分区结构

alter table test_range_list_only add partition partrage_201104 values less than ('201105')
# 添加主分区不写子分区的名称,也可以运行通过,但是很明显自动添加的名称不符合业务定义
# 这样的子分区没有意义,所以加的时候要带上它的子分区结构

【SQL应知应会】表分区(三)• Oracle版_第3张图片

3.4.2 添加主分区时将子分区带上

# 添加主分区时将子分区带上
alter table test_range_list_only add partition partrage_201104 values less than ('201105')
(         
                 subpartition partlist_201104_60 values('60'),
                 subpartition partlist_201104_70 values('70'),
                 subpartition partlist_201104_80 values('80')
                 )

【SQL应知应会】表分区(三)• Oracle版_第4张图片

3.5 添加子分区

Alter table table_name modify partition part_name add subpartition sub_name values (value);

3.6 截断表分区

  • ALTER TABLE table_name: 这部分表示要修改的目标表是 table_name。
  • TRUNCATE PARTITION (part_name): 这部分指定要截断的分区,确定要清空的是哪个分区
ALTER TABLE table_name TRUNCATE PARTITION (part_name); 

小结

感谢大家耐心的看完这篇文章,这篇文章是Oracle的表分区的第3篇文章,对于SQL在表分区的知识点,我们在MySQL方面已经有五篇内容了,大家可以去我的专栏SQL应知应会 进行学习,如果大家觉着还算可以,那么就给个三连支持一下吧
也可以加入我的社区一起学习呀
✅如果想要继续关注和学习后续更多的内容,那就关注一下爱书不爱输的程序猿吧,当然,如果大家还有什么其他方面的知识点想要看,可以在评论区或者私信我

请添加图片描述

你可能感兴趣的:(SQL应知应会,sql,oracle,数据库,mysql,大数据,面试,数据分析)