SQL引擎支持MySQL和Oracle兼容模式
同一个集群,同时支持MySQL和Oracle
租户创建时需要配置为MySQL兼容模式或Oracle兼容模式
DBA由原来维护“多个数据库产品”变为维护一个“统一的数据库产品”,DBA可以结合应用需求,创建不同兼容模式的租户
MySQL兼容模式:
MySQL5.6语法全兼容
兼容MySQL通信协议,MySQL应用可直接迁移至OceanBase
Oracle兼容模式:
兼容Oracle 11g语法
支持90%的Oracle数据类型和内置函数;还在持续完善中
支持分布式执行的存储过程(PL/SQL)
SQL引擎-Oracle兼容性
基础特性
数据类型:NUMBER/CHAR/LOB 10+
内建函数:MATH/CAST/FORMAT 40+
DDL&DML
ROWNUM/CTAS/MERGE INTO
窗口函数:MIN/MAX/RANK 20+
LOAD/DUPLICATED Table
Schema
Sequence/Synonym
CTE/Foreign Key
GBK
静态视图:TABLES/INDEXES/OBJECTS 10+
动态视图:V$SESSTAT/V$SESSION_WAIT 20+
PL
PL/函数/包基础语法
匿名块/自定义类型/游标/ARRAY/动态SQL
常用系统包
功能特性
回收站
Hybrid Columnar Compression
Outline
Hierachical Query
Data Guard
基本操作:创建、查看和删除数据库
使用CREATE DATABASE语句创建数据库
CREATE DATABASE[IF NOT EXISIS]dbname
[create_specification_list]
使用SHOW DATABASES语句查看数据库
SHOW DATABASES;
使用DROP DATABASE语句删除数据库
DROP DATABASE my_db;
基本操作:创建、查看、删除表
使用CREATE TABLE语句在数据库中创建新表
CREATE TABLE [IF NOT EXISTS]tblname
[table_options]
[partition_options];
使用SHOW CREATE TABLE语句查看建表语句
SHOW CREATE TABLE test;
使用DROP TABLE语句删除数据库
DROP TABLE [IF EXISTS]table_list;
table_list:
tblname[,tblname]
使用SHOWTABLES语句查看数据库中的所有表
SHOW TABLES FROM my_db;
基本操作:创建、查看、删除索引
索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构。其作用主要在于提高查询的速度,降低数据库系统的性能开销。
创建索引
CREATE[UNIQUE]INDEX indexname
ON tblname
查看索引
SHOW INDEX FROM tblname;
删除索引
DROP INDEX indexname
ON tblname;
基本操作:插入数据
插入数据最常使用的语法如下:
INSERT INTO table_name VALUES;
基本操作:查询数据
使用SELECT语句检索表内数据
SELECT
[ALL | DISTINCT]
selectexpr [[AS] othername] [,selectexpr ...]
[FROM table_references]
[WHERE where_conditions]
[GROUP BY group_by_list]
[HAVING search_confitions]
[ORDER BY order_list]
[LIMIT {[offset,] rowcount | rowcount OFFSET
offset}]
[FOR UPDATE]
基本操作:更新数据
修改表中的数据,最常使用的语法如下
UPDATE tblname
SET colname=colvalues
[, colname=colvalues...]
[WHERE where_condition]
基本操作:事务介绍
数据库事务(DatabaseTransaction)是指作为单个逻辑工作单元执行的一系列操作。事务处理可以用来维 护数据库的完整性,保证成批的SQL操作全部执行或全部不执行。
通过BEGIN TRANSACTION,或BEGIN和BEGIN WORK(被作为STARTTRANSACTION的别名受到 支持)语句显示开始,以COMMIT(提交)或ROLLBACK(回滚)语句显示结束。
事务语法如下:
START TRANSACTION|[BEGIN
[WORK]]
COMMIT [WORK];
ROLLBACK [WORK];
基本操作:提交事务
在提交事务之前:
修改只对当前用户可见,对其他用户来说是不可见的
修改不是最终结果,可以通过ROLLBACK语句撤销修改
在提交事务之后:
修改对其他用户都是可见的
修改是最终结果,不能通过ROLLBACK语句回滚修改
基本操作:回滚事务
回滚事务:回滚事务操作,表示事务已经结束,回滚所有事务操作,并释放事务锁。
查看SQL的执行计划-EXPLAIN命令
• 语法:explain [extended]<sql statement>\G
• 使用非常方便,无需创建单独系统表,可直接获取语句的执行计划
• extended选项会产生更多详细内容,排查执行计划问题时建议指定
• 命令的输出格式和Oracle数据库的EXPLAIN工具比较接近,可读性好
• 只是获取执行计划,并不真正执行
使用案例:多分区并行查询
explain extended select * from employees \G
使用案例:分区表主键查询
explain extended select * from employees where emp_id=1002\G