Oracle表
? ? ? ?Oracle表由堆表、外部表、索引組織表、臨時表、對象和對象表、分區表、簇表和散列表。?
堆表? ? ? 堆表是最常使用的普通表,數據的存儲沒有順序,當增加數據時會使用Oracle找到的第一個合適空間。?
語句:
--創建堆表 create table 表名(字段名1 字段類型(長度) 是否為空,字段名1 字段類型(長度) 是否為空 ) tablespace TSDAT02 pctfree 10initrans 1maxtrans 255storage(initial 64Kminextents 1maxextents unlimited);--增加主鍵 alter table 表名 add constraint 主鍵名 primary key (字段名);--增加外鍵 alter table 表名 add constraint 外鍵名 foreign key (字段名) references 關聯表 (字段名);--增加列 alter table 表名 add 字段名 類型;--修改列 alter table 表名 modify 字段名 類型;--給列增加注釋 comment on column 表.字段名 IS '注釋';--修改列名 alter table 表名 rename cloumn 舊列名 to 新列名;--修改表名 rename 表名 to 新表名;--刪除列名 alter table 表名 drop column 字段名;--刪除表數據 truncate table 表名; delete from 表名;--刪除表 drop table 表名;復制代碼分區表? ? ? 在大型數據庫應用程序中,用戶需要處理的數據量很大。為使用戶的讀、寫操作和查詢操作更快,Oracle提供了分區表。分區表是將一個非常大的表劃分成小塊(分區)。在實際應用中,對分區表的操作是在獨立的分區上,但是對用戶而言分區表就像一個表一樣工作。
? ? ? Oracle數據庫提供了5種對表或索引的分區方法:范圍分區、散列分區、列表分區、組合范圍分區和組合范圍列表分區。每種分區都有自己的特點。
范圍分區
? ? 范圍分區表中的數據是一個值的范圍,根據值的大小或序列,決定數據村塾的分區,例如,根據日期值的分區,即根據不同范圍的日期,將表中的數據存儲在不同的分區。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 ); --使分區根據編號分為3個區,,第一個分區存儲10000條數據,第二個分區存儲20000條數據, --其余的數據將被存儲在第三個分區上 復制代碼散列分區? ? ? 散列分區是通過散列算法 均勻分布數據的一種分區類型。通過在I/O設備上進行散列分區可以使得這些分區大小一致。
--根據id散列地存放在指定的3個表空間中 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 ); 復制代碼列表分區
? ? ? 如果分區的值使非數字或日期數據類型,并且分區列的取值范圍只是一個包含少數值的集合,則可以對表進行列表分區,需要為每個分區指定一個取值列表,分區列的取值處于同一個取值列表中的行被存儲在同一分區中
--根據交易地點將表進行分區 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 ); 復制代碼組合范圍散列分區
? ? ? 根據范圍分區后,有時也需要將每個分區的數據分布在散列的幾個表空間中,使范圍分區形成組合范圍散列分區。
--按時間分區,每個分區的數據可以3個子分區,以便數據散列地存儲在表空間的指定空間內 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) ); 復制代碼組合范圍列表分區
? ? ? 組合范圍列表分區將范圍分區和列表分區技術組合,首先進行范圍分區,然后對每個單獨的范圍分區使用列表分區技術進一步細分。與組合范圍散列分區不同,組合范圍列表分區中每個子分區的內容表示數據的邏輯子集,由適當的范圍和列表分區設置來描述。
--將表分為兩個分區,然后再對每個分區以列表分區形式進行子分區 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) ); 復制代碼再補充兩個很好的分區博文:
blog.csdn.net/tanzuai/art…
blog.csdn.net/liang_henry…
轉載于:https://juejin.im/post/5b2d0f4a51882574ec30a373
總結
- 上一篇: 假期的宿舍
- 下一篇: BI和大数据你能分清吗?