Oracle表
? ? ? ?Oracle表由堆表、外部表、索引組織表、臨時(shí)表、對(duì)象和對(duì)象表、分區(qū)表、簇表和散列表。?
堆表? ? ? 堆表是最常使用的普通表,數(shù)據(jù)的存儲(chǔ)沒(méi)有順序,當(dāng)增加數(shù)據(jù)時(shí)會(huì)使用Oracle找到的第一個(gè)合適空間。?
語(yǔ)句:
--創(chuàng)建堆表 create table 表名(字段名1 字段類(lèi)型(長(zhǎng)度) 是否為空,字段名1 字段類(lèi)型(長(zhǎng)度) 是否為空 ) tablespace TSDAT02 pctfree 10initrans 1maxtrans 255storage(initial 64Kminextents 1maxextents unlimited);--增加主鍵 alter table 表名 add constraint 主鍵名 primary key (字段名);--增加外鍵 alter table 表名 add constraint 外鍵名 foreign key (字段名) references 關(guān)聯(lián)表 (字段名);--增加列 alter table 表名 add 字段名 類(lèi)型;--修改列 alter table 表名 modify 字段名 類(lèi)型;--給列增加注釋 comment on column 表.字段名 IS '注釋';--修改列名 alter table 表名 rename cloumn 舊列名 to 新列名;--修改表名 rename 表名 to 新表名;--刪除列名 alter table 表名 drop column 字段名;--刪除表數(shù)據(jù) truncate table 表名; delete from 表名;--刪除表 drop table 表名;復(fù)制代碼分區(qū)表? ? ? 在大型數(shù)據(jù)庫(kù)應(yīng)用程序中,用戶(hù)需要處理的數(shù)據(jù)量很大。為使用戶(hù)的讀、寫(xiě)操作和查詢(xún)操作更快,Oracle提供了分區(qū)表。分區(qū)表是將一個(gè)非常大的表劃分成小塊(分區(qū))。在實(shí)際應(yīng)用中,對(duì)分區(qū)表的操作是在獨(dú)立的分區(qū)上,但是對(duì)用戶(hù)而言分區(qū)表就像一個(gè)表一樣工作。
? ? ? Oracle數(shù)據(jù)庫(kù)提供了5種對(duì)表或索引的分區(qū)方法:范圍分區(qū)、散列分區(qū)、列表分區(qū)、組合范圍分區(qū)和組合范圍列表分區(qū)。每種分區(qū)都有自己的特點(diǎn)。
范圍分區(qū)
? ? 范圍分區(qū)表中的數(shù)據(jù)是一個(gè)值的范圍,根據(jù)值的大小或序列,決定數(shù)據(jù)村塾的分區(qū),例如,根據(jù)日期值的分區(qū),即根據(jù)不同范圍的日期,將表中的數(shù)據(jù)存儲(chǔ)在不同的分區(qū)。create table t47_transaction(id varchar2(20) primary key,item varchar2(300),dt date not null,state varchar2(20))partition by range (id) (partition part_01 values less than (10000) tablespace users,partition part_02 values less than (30000) tablespace sysaux,partition part_03 values less than (maxvalue) tablespace system ); --使分區(qū)根據(jù)編號(hào)分為3個(gè)區(qū),,第一個(gè)分區(qū)存儲(chǔ)10000條數(shù)據(jù),第二個(gè)分區(qū)存儲(chǔ)20000條數(shù)據(jù), --其余的數(shù)據(jù)將被存儲(chǔ)在第三個(gè)分區(qū)上 復(fù)制代碼散列分區(qū)? ? ? 散列分區(qū)是通過(guò)散列算法 均勻分布數(shù)據(jù)的一種分區(qū)類(lèi)型。通過(guò)在I/O設(shè)備上進(jìn)行散列分區(qū)可以使得這些分區(qū)大小一致。
--根據(jù)id散列地存放在指定的3個(gè)表空間中 create table t47_transaction(id varchar2(20) primary key,item varchar2(300),dt date not null,state varchar2(20))partition by hash (id) (partition part_01 tablespace users,partition part_02 tablespace sysaux,partition part_03 tablespace system ); 復(fù)制代碼列表分區(qū)
? ? ? 如果分區(qū)的值使非數(shù)字或日期數(shù)據(jù)類(lèi)型,并且分區(qū)列的取值范圍只是一個(gè)包含少數(shù)值的集合,則可以對(duì)表進(jìn)行列表分區(qū),需要為每個(gè)分區(qū)指定一個(gè)取值列表,分區(qū)列的取值處于同一個(gè)取值列表中的行被存儲(chǔ)在同一分區(qū)中
--根據(jù)交易地點(diǎn)將表進(jìn)行分區(qū) create table t47_transaction(id varchar2(20) primary key,item varchar2(300),dt date not null,state varchar2(20))partition by list (state) (partition part_01 values ('北京', '天津') tablespace users,partition part_02 values ('周口', '鄭州') tablespace sysaux ); 復(fù)制代碼組合范圍散列分區(qū)
? ? ? 根據(jù)范圍分區(qū)后,有時(shí)也需要將每個(gè)分區(qū)的數(shù)據(jù)分布在散列的幾個(gè)表空間中,使范圍分區(qū)形成組合范圍散列分區(qū)。
--按時(shí)間分區(qū),每個(gè)分區(qū)的數(shù)據(jù)可以3個(gè)子分區(qū),以便數(shù)據(jù)散列地存儲(chǔ)在表空間的指定空間內(nèi) create table t47_transaction(id varchar2(20) primary key,item varchar2(300),dt date not null,state varchar2(20))partition by range (dt)subpartition by hash (id)subpartitions 3 store in (users, sysaux, system) (partition part_01 values less than (date'2017-06-22'),partition part_02 values less than (date'2018-06-22'),partition part_03 values less than (maxvalue) ); 復(fù)制代碼組合范圍列表分區(qū)
? ? ? 組合范圍列表分區(qū)將范圍分區(qū)和列表分區(qū)技術(shù)組合,首先進(jìn)行范圍分區(qū),然后對(duì)每個(gè)單獨(dú)的范圍分區(qū)使用列表分區(qū)技術(shù)進(jìn)一步細(xì)分。與組合范圍散列分區(qū)不同,組合范圍列表分區(qū)中每個(gè)子分區(qū)的內(nèi)容表示數(shù)據(jù)的邏輯子集,由適當(dāng)?shù)姆秶土斜矸謪^(qū)設(shè)置來(lái)描述。
--將表分為兩個(gè)分區(qū),然后再對(duì)每個(gè)分區(qū)以列表分區(qū)形式進(jìn)行子分區(qū) create table t47_transaction(id varchar2(20) primary key,item varchar2(300),dt date not null,state varchar2(20))partition by range (id)subpartition by list (state) (partition part_01 values less than (10000) (subpartition part_01_1 values ('北京', '天津') tablespace users,subpartition part_02_1 values ('周口', '鄭州') tablespace sysaux),partition part_02 values less than (maxvalue) (subpartition part_01_2 values ('北京', '天津') tablespace users,subpartition part_02_2 values ('周口', '鄭州') tablespace sysaux) ); 復(fù)制代碼再補(bǔ)充兩個(gè)很好的分區(qū)博文:
blog.csdn.net/tanzuai/art…
blog.csdn.net/liang_henry…
轉(zhuǎn)載于:https://juejin.im/post/5b2d0f4a51882574ec30a373
總結(jié)
- 上一篇: 假期的宿舍
- 下一篇: BI和大数据你能分清吗?