openGauss的MySQL兼容性主要通过Dolphin插件和内核实现。Dolphin插件的说明可参考Dolphin插件介绍。在openGauss内核中实现的MySQL兼容性特性见下表。
表 1 在openGauss内核中实现的MySQL兼容性特性列表
分类 |
概述 |
详细说明链接 |
---|---|---|
DDL |
CREATE DATABASE支持IF NOT EXISTS选项 |
CREATE DATABASE |
DDL |
CREATE SCHEMA支持IF NOT EXISTS选项 |
CREATE SCHEMA |
DDL |
ALTER USER支持IF EXISTS选项 |
ALTER USER |
DDL |
ALTER VIEW支持DEFINER选项、、SQL SECURITY选项 |
ALTER VIEW |
DDL |
CREATE VIEW支持DEFINER选项、SQL SECURITY选项 |
CREATE VIEW |
DDL | 支持在创建、修改对象等语句中指定COMMENT选项 | ALTER FUNCTION、 ALTER PROCEDURE、 ALTER TABLE、 CREATE FUNCTION、 CREATE INDEX、 CREATE PROCEDURE、 CREATE TABLE、 CREATE TABLE PARTITION、 CREATE TABLE SUBPARTITION |
DDL |
CREATE TABLE支持创建主键、UNIQUE索引、外键约束 |
CREATE TABLE |
DDL |
ALTER TABLE支持创建主键、UNIQUE索引、外键约束 |
ALTER TABLE |
DDL | 支持自增列 | ALTER TABLE、 CREATE TABLE |
DDL | 支持前缀索引 | CREATE INDEX |
DDL | 支持指定字符集与排序规则 | ALTER SCHEMA、 CREATE SCHEMA、 ALTER TABLE、 CREATE TABLE |
DDL | 修改表时支持在表第一列前面或者在指定列后面添加列 | ALTER TABLE |
DDL | 修改列名称/定义语法兼容 | ALTER TABLE |
DDL | 定时任务EVENT语法兼容 | ALTER EVENT、 CREATE EVENT、 DROP EVENT、 SHOW EVENTS |
DDL | 创建分区表语法兼容 | CREATE TABLE PARTITION、 CREATE TABLE SUBPARTITION |
DML |
DELETE支持从多个表中删除数据 |
DELETE |
DML |
DELETE支持ORDER BY和LIMIT |
DELETE |
DML |
DELETE支持从指定分区(或子分区)删除数据 |
DELETE |
DML |
INSERT VALUES的右值表达式支持字段引用 |
INSERT |
DML |
UPDATE支持从多个表中更新数据 |
UPDATE |
DML |
UPDATE支持ORDER BY和LIMIT |
UPDATE |
DML | SELECT INTO语法兼容 | SELECT |
DCL |
支持在会话中set用户自定义变量 |
SET |
DCL |
支持set全局变量增强 |
SET |
DCL | SET TRANSACTION语法兼容 | SET TRANSACTION |
数据类型 |
支持NVARCHAR类型 |
字符类型 |
数据类型 |
支持SET数据类型 |
SET类型 |
函数和操作符 |
支持安全等于操作符 |
简单表达式 |
函数和操作符 |
支持group_concat函数 |
聚集函数 |
函数和操作符 | 支持LAST_INSERT_ID函数 | SEQUENCE函数 |
函数和操作符 | 支持row_count()函数 | row_count()函数 |
函数和操作符 |
支持安全函数aes_decrypt/aes_encrypt |
安全函数 |
函数和操作符 |
支持字符处理函数sha/sha1/sha2 |
字符处理函数和操作符 |
控制语句 |
支持label:loop/while/repeat循环语法 |
循环语句 |
DDL |
支持create table as语法中定义表字段属性 |
CREATE TABLE AS |
优化器hint |
支持force|use|ignore index语法指定扫描表使用的索引 |
INDEX_HINTS |
声明语法 |
支持declare handler语法 |
错误捕获语句 |
声明语法 |
支持declare condition语法和declare cursor语法 |
基本结构 |
DCL |
支持用户自定义变量在SQL语句中赋值 |
SET |
DCL |
支持drop trigger语法 |
drop trigger |
SQL语法 |
支持delimiter定义结束符 |
DELIMITER |
控制语句 |
存储过程中支持signal/resignal语法 |
抛出错误语句 |
控制语句 |
GET DIAGNOSTICS语法 |
GET DIAGNOSTICS语句 |