欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流
本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle
✅对于表分区这块内容,我们在MySQL方面已经有五篇内容了,大家可以去我的专栏SQL应知应会进行学习
今天这篇内容,开始Oracle的表分区
,如果大家学习过前面MySQL的表分区的话,那么对于今天的内容是很轻松就可以学会的,当然,这并没有严格的学习顺序的安排,只是对于MySQL的表分区,我们花了大量的篇幅进行学习,大家可以根据自己的学习情况进行随意的选择学习顺序(无需有过多的顾虑)
✳️今天这篇Oracle,主要是对建立表分区进行了学习,比如创建范围分区表、创建列表分区表一系列知识点,其中有代码帮助大家去学习与理解,要注意Oracle与MySQL的区别,在列表分区表就有所体现
,大家可以自己在Navicar或者PL/SQL或者其他工具上进行代码的学习, 最好不要只看懂文章,只有多多练习,才能发现自己的错误并锻炼解决问题的能力。
希望文章的内容对大家有所帮助,如果有什么不足的地方,大家可以在评论区或者私信我,感谢大家的支持
那么,快拿出你的电脑,跟着文章一起学习起来吧
如 具有相同列、相同数据类型、相同约束等,但可以具有不同的存储参数、位于不同的表空间中
对巨型表进行分区具有下列优点:
- 提高
数据的安全性
,一个分区的损坏不影响其他分区中数据的正常使用;- 将表的各个分区存储在不同磁盘上,
提高数据的并行操作能力
;简化数据的管理
,可以将某些分区设置为不可用状态,某些分区设置为可用状态,某些分区设置为只读状态,某些分区设置为读/写状态;操作的透明性
,对表进行分区并不影响操作数据的SQL语句。
在oracle 11g数据库中,对表进行分区有多种方法。
范围分区(range)
:根据分区列值的范围对表进行分区,每条记录根据其分区列值所在的范围决定存储到哪个分区中
列表分区(list)
:如果分区列的值不能划分范围(非数值类型或日期类型),同时分区列的取值是一个包含少数值的集合,可以采用列表分区,将特定分区列值的记录保存到特定分区中。散列分区
:又称HASH分区,是采用基于分区列值的HASH算法,将数据均匀分布到指定的分区中
复合分区(range—list,range--hash)
:结合两种基本分区方法,先采用一个分区方法对表或索引进行分区,然后再采用另一个分区方法将分区再分成若干个子分区。每个分区的子分区都是数据的一个逻辑子集。
在oracle 11g数据库中,分区技术得到进一步的增强,引入了间隔分区、引用分区、基于虚拟列分区以及系统分区(system Partitioning)等多种分区方法
使用带 partition by range
子句的 create table
语句创建范围分区表
CREATE TABLE table(...)
PARTITION BY RANGE (column1[,column2,...])
(PARTITION partition1 VALUES LESS THAN(literal|MAXVALUE)
[TABLESPACE tablespace]
[,PARTITION partition2 VALUES LESS THAN(literal|MAXVALUE)
[TABLESPACE tablespace],...]
)
...
# PARTITION BY RANGE : 指明采用范围分区方法
# column : 分区列,可以是单列分区,也可以是多列分区
# PARTITION partition1 : 设置分区名称
# VALUES LESS THAN : 设置分区列值得上界
# TABLESPACE : 设置分区对应的表空间
## 分区列可以是多列,叫作组合字段分区
## 少用LESS THAN(MAXVALUE)
CREATE TABLE student_range(
sno NUMBER(6) PRIMARY KEY,
sname VARCHAR2(10),
sage int,
birthday DATE
)
PARTITION BY RANGE(birthday)
(
PARTITION p1 VALUES LESS THAN(TO_DATE('1980-1-1','YYYY-MM-DD')) TABLESPACE ORCLTBS1,
PARTITION p2 VALUES LESS THAN(TO_DATE('1990-1-1','YYYY-MM-DD')) TABLESPACE ORCLTBS2,
PARTITION p1 VALUES LESS THAN(MAXVALUE) TABLESPACE ORCLTBS3,
);
创建分区表后,通过修改分区表的各个分区所在的表空间的状态,可以实现对表分区的不同操作
可以将表的部分分区设置为脱机状态或只读状态,但不影响其他分区的使用
使用带 PARTITION BY LIST
子句的 CREATE TABLE
语句创建列表分区表,基本语法:
CREATE TABLE table(...)
PARTITION BY LIST (column)
(PARTITION partition1 VALUES(literal|NULL|[DEFAULT])
[TABLESPACE tablespace]
[,PARTITION partition2 VALUES(literal|NULL|[DEFAULT])
[TABLESPACE tablespace],...]
)
CREATE TABLE student_list(
sno NUMBER(6) PRIMARY KEY,
sname VARCHAR2(10),
sage int,
sex VARCHAR(2) CHECK(sex in ('M','F'))
)
PARTITION BY LIST(sex)
(
PARTITION student_male VALUES('M') TABLESPACE ORCLTBS1,
PARTITION student_female VALUES('F') TABLESPACE ORCLTBS2
);
感谢大家耐心的看完这篇文章,这篇文章是
Oracle的表分区
,对于SQL在表分区的知识点,我们在MySQL方面已经有五篇内容了,大家可以去我的专栏SQL应知应会 进行学习,如果大家觉着还算可以,那么就给个三连支持一下吧
也可以加入我的社区一起学习呀
✅如果想要继续关注和学习后续更多的内容,那就关注一下爱书不爱输的程序猿吧,当然,如果大家还有什么其他方面的知识点想要看,可以在评论区或者私信我