第五章:OB Server的SQL引擎

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯西极限存在准则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值