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 資料庫熱點行更新能力資料庫
- 天天學習ORACLE(三)-11G新特性Oracle
- OceanBase學習之路14|體驗並行匯入 & 資料壓縮並行
- ORACLE 11g新特性-允許DDL鎖等待DML鎖Oracle
- C++ 11 新特性 nullptr 學習C++Null
- JDK11新特性學習(一)JDK
- JDK11新特性學習(二)JDK
- Oracle12C新特性_DDL日誌Oracle
- Oracle11新特性——PLSQL新特性(七)OracleSQL
- Oracle11新特性——PLSQL新特性(六)OracleSQL
- Oracle11新特性——PLSQL新特性(五)OracleSQL
- Oracle11新特性——PLSQL新特性(四)OracleSQL
- Oracle11新特性——PLSQL新特性(三)OracleSQL
- Oracle11新特性——PLSQL新特性(二)OracleSQL
- Oracle11新特性——PLSQL新特性(一)OracleSQL
- 【ORACLE新特性】11G 分割槽新特性Oracle
- Oracle12c 新特性 - log記錄DDL操作Oracle
- 【11g新特性】DDL_LOCK_TIMEOUT的作用
- OceanBase學習之路9|連線方式概述
- Oracle 11g 新特性Oracle
- OceanBase學習之路6|透過 Obclient 連線 OceanBase 租戶client
- Oracle12c新特性(2)記錄DDL日誌Oracle
- 全面學習ORACLE Scheduler特性(11)使用Job ClassesOracle
- OceanBase學習之路3 |SpringJDBC 連線示例SpringJDBC
- oracle 11g 的新特性Oracle
- oracle 11GR2 新特性Oracle
- 11gR1引入的新特性:可等待DDL操作
- Oracle 11g 鎖特性增加(引數ddl_lock_time)Oracle
- OceanBase學習之路5|C 應用程式連線 OceanBase 資料庫資料庫
- OceanBase學習之路8|Java 應用程式連線 OceanBase 資料庫Java資料庫
- OceanBase學習之路4|SpringBoot 連線示例Spring Boot
- OceanBase學習之路10|C 相關 API 介紹API
- OceanBase學習之路38|如何合併資源池?
- OceanBase學習之路47|什麼是資源管理?
- OceanBase學習之路54|如何配置多租戶管理?