OceanBase學習之路11|體驗 DDL 新特性(Oracle 模式)
OceanBase 資料庫 Oracle 模式下的 DDL 新特性包括變更主鍵、變更分割槽型別和變更列型別。
變更主鍵
OceanBase 資料庫 Oracle 模式下的主鍵操作包括新增主鍵、修改主鍵和刪除主鍵。
新增主鍵
新增主鍵的語法如下:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
新增主鍵的示例如下:
obclient> CREATE TABLE tbl1(c1 INT,c2 VARCHAR(50)); Query OK, 0 rows affected obclient> ALTER TABLE tbl1 ADD PRIMARY KEY(c1); Query OK, 0 rows affected
修改主鍵
修改主鍵的語法如下:
ALTER TABLE table_name MODIFY PRIMARY KEY (column_name);
修改主鍵的示例如下:
obclient> ALTER TABLE tbl1 MODIFY PRIMARY KEY (c2); Query OK, 0 rows affected
刪除主鍵
刪除主鍵的語法如下:
ALTER TABLE table_name DROP PRIMARY KEY;
刪除主鍵的示例如下:
obclient> ALTER TABLE tbl1 DROP PRIMARY KEY; Query OK, 0 rows affected
變更分割槽型別
OceanBase 資料庫 Oracle 模式下變更分割槽型別(支援將非分割槽錶轉換為一級分割槽表和二級分割槽表)的語法如下:
ALTER TABLE table_name MODIFY partition_option;
注意
OceanBase 資料庫當前版本只支援非分割槽錶轉換成分割槽表。
變更分割槽示例
示例 1:將非分割槽錶轉換成為一級分割槽表。
obclient> CREATE TABLE tbl1(c1 INT PRIMARY KEY, c2 DATE); Query OK, 0 rows affected obclient> ALTER TABLE tbl1 MODIFY PARTITION BY HASH(c1) PARTITIONS 4; Query OK, 0 rows affected
示例 2:將非分割槽錶轉換成為二級分割槽表(模版化)。
obclient> CREATE TABLE tbl2(c1 INT, c2 DATE, PRIMARY KEY(c1, c2)); Query OK, 0 rows affected obclient> ALTER TABLE tbl2 MODIFY PARTITION BY HASH(c1) SUBPARTITION BY RANGE (c2) SUBPARTITION TEMPLATE( SUBPARTITION p1 VALUES LESS THAN (TO_DATE('2016/02/01','YYYY/MM/DD')), SUBPARTITION p2 VALUES LESS THAN (TO_DATE('2116/02/01','YYYY/MM/DD')) ); Query OK, 0 rows affected
示例 3:將非分割槽錶轉換成為二級分割槽表(非模版化)。
obclient> CREATE TABLE tbl3(c1 INT, c2 DATE, PRIMARY KEY(c1, c2)); Query OK, 0 rows affected obclient> ALTER TABLE tbl3 MODIFY PARTITION BY RANGE(c1) SUBPARTITION BY RANGE(c2) ( PARTITION p0 VALUES LESS THAN(0), PARTITION p1 VALUES LESS THAN(100)); Query OK, 0 rows affected
變更列型別
OceanBase 資料庫 Oracle 模式下所支援的列型別的相關轉換如下:
- 字元型別列的資料型別轉換,包括
CHAR
和VARCHAR2
。 - 數值資料型別支援改變精度,包括
NUMBER
(不允許降低精度)。 - 字元資料型別支援改變精度,包括
CHAR
(不允許降低精度)、VARCHAR2
、NVARCHAR2
和NCHAR
。
修改列型別的語法如下:
ALTER TABLE table_name MODEFY column_name data_type;
修改列型別的示例
字元資料型別之間的轉換示例
示例 1:修改字元資料型別列的資料型別並提升長度。
obclient> CREATE TABLE test01 (c1 INT PRIMARY KEY, c2 CHAR(10), c3 VARCHAR2(32)); Query OK, 0 rows affected obclient> ALTER TABLE test01 MODIFY c2 VARCHAR(20); Query OK, 0 rows affected obclient> ALTER TABLE test01 MODIFY c3 VARCHAR(64); Query OK, 0 rows affected obclient> ALTER TABLE test01 MODIFY c3 CHAR(256); Query OK, 0 rows affected
示例 2:縮短字元資料型別列的長度。
obclient> CREATE TABLE test02(c1 VARCHAR2(128)); Query OK, 0 rows affected obclient> ALTER TABLE test02 MODIFY c1 VARCHAR2(64); Query OK, 0 rows affected obclient> CREATE TABLE test03(c1 CHAR(10)); Query OK, 0 rows affected obclient> ALTER TABLE test03 MODIFY c1 CHAR(20); Query OK, 0 rows affected
改變數值資料型別精度的示例
示例 1:修改整數型別列的
NUMBER
資料型別的精度。
obclient> CREATE TABLE test02 (id INT PRIMARY KEY, name VARCHAR(10),age TINYINT, description VARCHAR(65525)); Query OK, 0 rows affected obclient> ALTER TABLE test02 MODIFY age SMALLINT; Query OK, 0 rows affected obclient> ALTER TABLE test02 MODIFY age INT; Query OK, 0 rows affected obclient> ALTER TABLE test02 MODIFY age BIGGINT; Query OK, 0 rows affected
示例 2:修改帶精度的資料型別列的資料型別和長度。
obclient> CREATE TABLE test04(c1 NUMBER(10,2)); Query OK, 0 rows affected obclient> ALTER TABLE test04 MODIFY c1 NUMBER(11,3); Query OK, 0 rows affected
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026075/viewspace-2932345/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OceanBase學習之路12|體驗 DDL 新特性(MySQL 模式)MySql模式
- OceanBase學習之路13|體驗多租戶特性
- OceanBase學習之路15|體驗 Operational OLAP
- OceanBase學習之路16|體驗 OceanBase 資料庫熱點行更新能力資料庫
- Oracle12C新特性_DDL日誌Oracle
- OceanBase學習之路14|體驗並行匯入 & 資料壓縮並行
- JDK11新特性學習(二)JDK
- JDK11新特性學習(一)JDK
- C++ 11 新特性 nullptr 學習C++Null
- OceanBase學習之路6|透過 Obclient 連線 OceanBase 租戶client
- OceanBase學習之路3 |SpringJDBC 連線示例SpringJDBC
- OceanBase學習之路4|SpringBoot 連線示例Spring Boot
- OceanBase學習之路9|連線方式概述
- Oracle 11g DG新特性--Automatic block repairOracleBloCAI
- OceanBase學習之路5|C 應用程式連線 OceanBase 資料庫資料庫
- OceanBase學習之路8|Java 應用程式連線 OceanBase 資料庫Java資料庫
- 實踐練習一:OceanBase Docker 體驗Docker
- OceanBase學習之路38|如何合併資源池?
- OceanBase學習之路10|C 相關 API 介紹API
- OceanBase學習之路47|什麼是資源管理?
- OceanBase學習之路54|如何配置多租戶管理?
- OceanBase學習之路7|透過 MySQL 客戶端連線 OceanBase 租戶MySql客戶端
- Java 11新特性Java
- 新特性:/dev/shm對Oracle 11g的影響devOracle
- Oracle 11g 新特性:只讀表(Read-only)Oracle
- OceanBase學習之路37|什麼是分裂資源池?
- OceanBase學習之路39|什麼是修改資源池?
- JDK 1.8 新特性學習(Stream)JDK
- Java1.8新特性學習Java
- DM8新特性及初次體驗
- C++11新特性C++
- OceanBase學習之路45|如何檢視資源單元配置?
- OceanBase學習之路48|最佳效能引數的配置參考
- Automatic Reference Counting(ARC)特性學習(iOS5新特性學習之五)iOS
- OceanBase學習之路40|如何將資源池分配給租戶?
- OceanBase學習之路42|建立新的資源池的步驟?
- OceanBase學習之路49|最小資源引數配置是什麼?
- OceanBase學習之路53|多租戶管理引數如何設定?