
KingbaseES以内核兼容为基础,通过初始化参数控制,兼容MySQL 数据库,支持MySQL常用功能。KingbaseES对MySQL的兼容性,已从功能兼容阶段过渡到强性能兼容、生态全面兼容阶段,做到在迁移过程中对上层应用透明,实现低成本,低难度,低风险的平滑迁移。
在基础能力方面,KingbaseES兼容SQL语法及PL/SQL过程化语言的语法基础,完成了对数据类型、常用表达式和条件、系统视图、内置函数、DML、DQL语句,以及控制语句、存储过程、函数、触发器、游标,静态SQL、动态SQL等各方面的兼容。在高级能力方面,KingbaseES支持BIT,ENUM类型,SET类型等特殊类型,支持INTERVAL表达式,MySQL的用户变量,REPLACE,INSERT ON DUPLICATE KEY子句,INSERT IGNORE INTO子句,DELETE和UPDATE语句支持LIMIT子句,建表兼容CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP子句,COMMENT子句,多表更新等能力。
主要从以下几个方面介绍 KingbaseES 数据库与 MySQL 数据库的兼容性对比信息:
KingbaseES 数据库兼容大部分 MySQL 数据库中支持的数据类型 。包括KingbaseES数据类型到MySQL数据类型转换,以及MySQL数据类型到KingbaseES数据类型转换。Kingbase 数据库的 MySQL 模式对原生 MySQL 数据库中数据类型的兼容情况如下表所示。
MySQL数据类型兼容情况说明
序号 | MySQL数据类型 | KingbaseES兼容情况 |
|---|---|---|
1 | BIT | 兼容 |
2 | BOOL | 兼容 |
3 | TINYINT | 兼容 |
4 | SMALLINT | 兼容 |
5 | MEDIUMINT | 兼容 |
6 | INT | 兼容 |
7 | BIGINT | 兼容 |
8 | DECIMAL | 兼容 |
9 | NUMERIC | 兼容 |
10 | FLOAT | 兼容 |
11 | DOUBLE | 兼容 |
12 | DATE | 兼容 |
13 | TIME | 兼容 |
14 | DATETIME | 兼容 |
15 | TIMESTAMP | 兼容 |
16 | YEAR | 兼容 |
17 | CHAR | 兼容 |
18 | VARCHAR | 兼容 |
19 | BINARY | 兼容 |
20 | VARBINARY | 兼容 |
21 | BLOB | 兼容 |
22 | TEXT | 兼容 |
23 | TINYBLOB | 兼容 |
24 | TINYTEXT | 兼容 |
25 | MEDIUMBLOB | 兼容 |
26 | MEDIUMTEXT | 兼容 |
27 | LONGBLOB | 兼容 |
28 | LONGTEXT | 兼容 |
29 | ENUM | 兼容 |
30 | SET | 兼容 |
31 | JSON | 兼容 |
KingbaseES 数据库兼容大部分 MySQL 数据库中支持的内置函数 。
MySQL数值函数兼容说明
序号 | MySQL函数名 | KingbaseES是否兼容 | 功能简要说明 |
|---|---|---|---|
1 | ABS | 兼容 | 绝对值 |
2 | ACOS | 兼容 | 反余弦 |
3 | ASIN | 兼容 | 反正弦 |
4 | ATAN | 兼容 | 反正切 |
5 | ATAN2 | 兼容 | 返回两个变量的反正切 |
6 | CEIL | 兼容 | 返回大于或等于 n 的最小整数 |
7 | CEILING | 兼容 | 返回大于或等于 n 的最小整数 |
8 | COS | 兼容 | 返回余弦 |
9 | COT | 兼容 | 返回余切 |
10 | DIV | 兼容 | 整除 |
11 | DEGREES | 兼容 | 把弧度转化为角度 |
12 | EXP | 兼容 | 返回自然常数 e 指定数值的次方 |
13 | FLOOR | 兼容 | 返回等于或小于 n 的最大整数 |
14 | LN | 兼容 | 返回参数的自然对数 |
15 | LOG | 兼容 | 返回指定数字,指定底数的对数 |
16 | LOG10 | 兼容 | 返回指定数字以10为底的对数 |
17 | MOD | 兼容 | 取余数 |
18 | PI | 兼容 | 返回π值 |
19 | POWER | 兼容 | 计算a的b次幂并返回结果 |
20 | RADIANS | 兼容 | 把角度 dp 转为弧度。 |
21 | RAND | 兼容 | 生成范围 0.0 <= x < 1.0 中的随机值 |
22 | ROUND | 兼容 | 将数字四舍五入到指定的小数位数 |
23 | SIGN | 兼容 | 返回指定数字的符号 |
24 | SIN | 兼容 | 正弦值 |
25 | SQRT | 兼容 | 返回数字的平方根 |
26 | TAN | 兼容 | 正切值 |
MySQL字符串函数兼容说明
序号 | MySQL函数名 | KingbaseES是否兼容 | 功能简要说明 |
|---|---|---|---|
1 | BIT_LENGTH | 兼容 | 返回字符串位长度 |
2 | CHAR_LENGTH, CHARACTER_LENGTH | 兼容 | 返回字符串的字符数 |
3 | CONCAT | 兼容 | 拼接多个字符串 |
4 | CONCAT_WS | 兼容 | 通过指定分隔符来拼接多个字符串 |
5 | FIND_IN_SET | 兼容 | 返回第二个参数中第一个参数的索引(位置) |
6 | FROM_BASE64 | 兼容 | 解码Base64编码的字符串, 并以二进制字符串的形式返回结果 |
7 | ISNULL | 兼容 | 判断表达式 expr 为 NULL,则返回值 1,非空返回 0 |
8 | LCASE | 兼容 | 将字符串转为小写 |
9 | LOCATE | 兼容 | 返回子字符串在字符串中第一次出现的位置索引 |
10 | LOWER | 兼容 | 将字符串转为小写 |
11 | LPAD | 兼容 | 在字符串左侧填充指定的字符串,使其达到指定的长度 |
12 | MID | 兼容 | 返回一个字符串指定位置指定长度的子串 |
13 | OCTET_LENGTH | 兼容 | 返回字符串以字节为单位的长度 |
14 | POSITION | 兼容 | 返回指定子串在指定字符串第一次出现的位置 |
15 | REGEXP_LIKE | 兼容 | 判断一个字符串是否和一个正则表达式匹配 |
16 | REGEXP_REPLACE | 兼容 | 将匹配正则表达式模式的子串替换为新文本 |
17 | REPEAT | 兼容 | 指定字符串重复指定次数并返回新串 |
18 | REPLACE | 兼容 | 将字符串中出现的所有子串替换为新的子串 |
19 | RIGHT | 兼容 | 返回字符串最右边指定数量的字符子串 |
20 | RPAD | 兼容 | 在字符串右侧填充指定的子串,使其达到指的长度 |
21 | SUBSTRING | 兼容 | 从一个字符串中返回指定位置指定长度的子串 |
22 | SUBSTRING_INDEX | 兼容 | 返回字符串中指定间隔符出现在指定次数之前的子串 |
23 | TO_BASE64 | 兼容 | 返回字符串以base-64形式编码的字符串表示 |
24 | TRIM | 兼容 | 删除字符串前导和尾随的指定字符或者空格 |
25 | UCASE | 兼容 | 将字符串转为大写 |
26 | UPPER | 兼容 | 将字符串转换为大写 |
MySQL日期函数兼容说明
序号 | MySQL函数名 | KingbaseES是否兼容 | 功能简要说明 |
|---|---|---|---|
1 | ADDDATE | 兼容 | 指定日期/时间加上指定的时间间隔 |
2 | ADDTIME | 兼容 | 指定时间上加上指定的时间间隔 |
3 | CONVERT | 兼容 | 将输入的 expr 转化为固定的 type 类型 |
4 | CONVERT_TZ | 兼容 | 将一个时区的时候转换为另一个时区的时间 |
5 | CURDATE | 兼容 | 返回当前系统的日期 |
6 | CURRENT_DATE | 兼容 | 返回当前系统的日期 |
7 | CURRENT_TIME | 兼容 | 返回系统时间 |
8 | CURRENT_TIMESTAMP | 兼容 | 返回系统日期时间 |
9 | CURTIME | 兼容 | 返回当前系统的时间 |
10 | DATE_ADD | 兼容 | 从日期时间上加上指定的时间间隔 |
11 | DATE_SUB | 兼容 | 从日期时间上减去指定的时间间隔 |
12 | DATEDIFF | 兼容 | 返回两个日期值之间的天数 |
13 | DAY | 兼容 | 返回指定日期的月份的日期值 |
14 | DAYNAME | 兼容 | 返回指定日期的星期名称 |
15 | DAYOFMONTH | 兼容 | 返回指定日期的月份的日期 |
16 | DAYOFWEEK | 兼容 | 返回给定日期的星期索引 |
17 | DAYOFYEAR | 兼容 | 返回给定日期所在当前年份中的第几天 |
18 | FORMAT_PICO_TIME | 兼容 | 将皮秒值转换为带单位指示符的文本字符串 |
19 | FROM_DAYS | 兼容 | 将天数值转换为日期 |
20 | FROM_UNIXTIME | 兼容 | 将unix时间戳转化为以当前会话时区表示的日期时间值 |
21 | GET_FORMAT | 兼容 | 返回指定的国家地区时间输出格式 |
22 | HOUR | 兼容 | 返回给定时间的小时部分 |
23 | LOCALTIME | 兼容 | 返回系统日期时间 |
24 | LOCALTIMESTAMP | 兼容 | 返回系统日期时间 |
25 | LAST_DAY | 兼容 | 计算日期所在月份的最后一天 |
26 | MAKEDATE | 兼容 | 返回指定年份第 n 天的日期值 |
27 | MAKETIME | 兼容 | 返回由参数指定组成的时间值 |
28 | MICROSECOND | 兼容 | 返回指定时间的微秒值 |
29 | MINUTE | 兼容 | 返回指定时间的分钟值 |
30 | MONTH | 兼容 | 返回指日期的月份值 |
31 | MONTHNAME | 兼容 | 返回指日期的月份名称 |
32 | PERIOD_ADD | 兼容 | 指定年月上加上指定的月份数 |
33 | PERIOD_DIFF | 兼容 | 计算两个年月值相差的月份数 |
34 | QUARTER | 兼容 | 返回日期的季度数 |
35 | SECOND | 兼容 | 返回指定日期时间的秒值 |
36 | SEC_TO_TIME | 兼容 | 将秒数转换为时分秒格式并返回 |
37 | SUBTIME | 兼容 | 指定时间上减去指的的时间间隔 |
38 | TIME | 兼容 | 返回给定日期的时间部分 |
39 | TIMEDIFF | 兼容 | 计算两个时间的差值 |
40 | TIMESTAMP | 兼容 | 将日期时间值n1与时间值n2相加并返回TIMESTMAP 类型值 |
41 | TIMESTAMPADD | 兼容 | 将指定时间间隔加到日期时间值上 |
42 | TIMESTAMPDIFF | 兼容 | 返回两个日期时间的时间间隔 |
43 | TIME_FORMAT | 兼容 | 按照指定的格式格式化时间 |
44 | TIME_TO_SEC | 兼容 | 将输入的时间转换为秒数 |
45 | TO_DAYS | 兼容 | 将指定日期转换为距离0年的天数 |
46 | TO_SECONDS | 兼容 | 返回日期时间值 n 距离 0 年的秒数 |
47 | UNIX_TIMESTAMP | 兼容 | 将 DATE、 TIMESTAMP、 TIME类型的n或指定格式的数值 n 转换为对应 UTC日期时间 |
48 | UTC_DATE | 兼容 | 获取当前服务器的 utc 日期(即格林威治标准日期) |
49 | UTC_TIME | 兼容 | 获取当前服务器的 utc 时间(即格林威治标准时间) |
50 | UTC_TIMESTAMP | 兼容 | 获取当前服务器的utc日期时间(即格林威治标准日期时间) |
51 | WEEK | 兼容 | 返回日期位于当年的第几周 |
52 | WEEKDAY | 兼容 | 返回指定日期的星期索引 |
53 | WEEKOFYEAR | 兼容 | 返回指定日期的所在周数值 |
54 | YEARWEEK | 兼容 | 返回指定日期的年份与日期所在当年周数值 |
MySQL窗口函数兼容说明
序号 | 函数名 | KingbaseES是否兼容 | 功能简要说明 |
|---|---|---|---|
1 | CUME_DIST | 兼容 | 返回当前行的累积分布 |
2 | DENSE_RANK | 兼容 | 返回所在分区内的排名 |
3 | FIRST_VALUE | 兼容 | 返回当前关联窗口的第一行 |
4 | LAG | 兼容 | 返回当前行所在分区内当前行之前指定行之内的值 |
5 | LAST_VALUE | 兼容 | 返回当前关联窗口的最后一行 |
6 | LEAD | 兼容 | 返回当前行所在分区内当前行后之指定行之内的值 |
7 | NTH_VALUE | 兼容 | 从当前行关联窗口的指定一行中返回评估值 |
8 | NTILE | 兼容 | 将当前行所在分区内的所有行尽可能平均分成指定数量的区间 |
9 | PERCENT_RANK | 兼容 | 返回当前行所在分区内的相对排名 |
10 | RANK | 兼容 | 返回当前行所在分区内的排名 |
11 | ROW_NUMBER | 兼容 | 返回当前行所在分区内的序号 |
MySQL JSON函数兼容说明
序号 | 函数名 | KingbaseES是否兼容 | 功能简要说明 |
|---|---|---|---|
1 | JSON_ARRAY | 兼容 | 返回包含所有参数的JSON数组。KingbaseES还提供了其他参数,可以指定结果为NULL的行为,返回的结果数据类型,详见JSON_ARRAY |
2 | JSON_EXTRACT | 兼容 | 功能都是在JSON数组中提取路径表达式指定的数据,详见 JSON_EXTRACT |
3 | JSON_OBJECT | 兼容 | 返回由参数指定的所有键值对的JSON对象。此外,KingbaseES JSON_OBJECT函数还支持另外两种语法 ,参见 JSON_OBJECT |
4 | JSON_TABLE | 兼容,但有差异 | 从指定JSON数组中提取数据并返回一个包含指定列的关系表。KingbaseES和MySQL函数参数有所不同,详见JSON_TABLE |
KingbaseES 数据库兼容大部分 MySQL 数据库中支持的系统视图 。
KingbaseES 数据库兼容 MySQL 数据库的信息模式视图列表如下:
信息模式视图
视图名 | 用途 |
|---|---|
CHARACTER_SETS | 用于列出KES数据库支持的字符集编码及字符集编码的相关信息。 |
COLUMNS | 包含数据库中有关所有表列(或视图列)的信息。 |
KEY_COLUMN_USAGE | 记录键列包含的约束信息(键列为表达式除外)。 |
PARAMETERS | 提供有关存储例程(存储过程和存储函数)的参数以及函数的返回值的信息。 |
ROUTINES | 该视图提供有关存储例程(存储过程和存储函数)的信息。 |
COLUMN_PRIVILEGES | 该临时表提供列级别权限的信息。 |
ENABLED_ROLES | 该视图提供当前会话中可用角色的信息。 |
TABLE_CONSTRAINTS | 该视图提供了表具有的约束。 |
TABLE_PRIVILEGES | 该临时表提供表级别权限的信息。 |
TRIGGERS | 该视图提供了有关触发器的信息。 |
TABLES | 数据库中表的相关信息。 |
VIEWS | 关于数据库中视图(view)的相关信息。 |
SCHEMATA | 提供了数据库的相关信息。 |
PROCESSLIST | 指示当前由服务器内执行的线程集执行的操作。 |
REFERENTIAL_CONSTRAINTS | 当前数据库中外键约束的的信息。 |
COLLATIONS | 提供有关每个字符集的排序规则的信息。 |
COLLATION_CHARACTER_SET_APPLICABILITY | 指示什么字符集适用于什么排序规则。 |
ROLE_TABLE_GRANTS | 有关当前启用的角色可用或由当前启用的角色授予的角色的表权限的信息。 |
ROLE_COLUMN_GRANTS | 有关当前启用的角色可用或由当前启用的角色授予的角色的列权限的信息。 |
ROLE_ROUTINE_GRANTS | 有关当前启用的角色可用或由当前启用的角色授予的角色的例程权限的信息。 |
ADMINISTRABLE_ROLE_AUTHORIZATIONS | 提供哪些适用于当前用户或角色的角色可以授予其他用户或角色。 |
APPLICABLE_ROLES | 有关适用于当前用户的角色的信息。 |
CHECK_CONSTRAINTS | CREATE TABLE允许表和列check约束,该视图提供了有关这些约束的信息。 |
VIEW_ROUTINE_USAGE | 对视图定义中使用的存储函数信息的访问 |
VIEW_TABLE_USAGE | 对视图定义中使用的表和视图信息的访问。 |
PARTITIONS | 记录关于表分区的信息。 |
KingbaseES 数据库支持 MySQL 数据库中绝大部分的 SQL 语法 。
MySQL常量兼容性说明
序号 | 常量名 | KingbaseES是否支持 |
|---|---|---|
1 | 字符值 | 支持 |
2 | 数值 | 支持 |
3 | 时间值 | 支持 |
4 | 十六进制值 | 支持 |
5 | 位字段值 | 支持 |
6 | 布尔值 | 支持 |
7 | 空值 | 支持 |
MySQL操作符兼容性说明
序号 | 操作符 | KingbaseES是否支持 | |
|---|---|---|---|
1 | 算术操作符 | + | 支持 |
- | 支持 | ||
* | 支持 | ||
/ | 支持 | ||
% | 支持 | ||
MOD | 支持 | ||
DIV | 支持 | ||
2 | 逻辑操作符 | NOT | 支持 |
! | 支持 | ||
AND | 支持 | ||
&& | 支持 | ||
OR | 支持 | ||
|| | 支持 | ||
XOR | 支持 | ||
3 | 位操作符 | | | 支持 |
& | 支持 | ||
<< | 支持 | ||
>> | 支持 | ||
~ | 支持 | ||
^ | 支持 | ||
4 | 比较操作符 | == | 支持 |
<=> | 支持 | ||
<> | 支持 | ||
!= | 支持 | ||
< | 支持 | ||
> | 支持 | ||
>= | 支持 | ||
<= | 支持 | ||
5 | 集合操作符 | UNION [ALL] | 支持 |
INTERSECT [ALL] | 支持 | ||
EXCEPT [ALL] | 支持 | ||
MySQL条件比较兼容性说明
序号 | 条件比较 | KingbaseES是否支持 |
|---|---|---|
1 | [NOT]BETWEEN ... AND | 支持 |
2 | [NOT]EXISTS(subquery) | 支持 |
3 | [NOT]IN | 支持 |
4 | IS [NOT] NULL | 支持 |
5 | [NOT] LIKE | 支持 |
MySQL数据对象类型兼容性说明
序号 | 数据对象类型 | KingbaseES是否支持 |
|---|---|---|
1 | 表 | 支持 |
2 | 表空间 | 支持 |
3 | 视图 | 支持 |
4 | 序列 | 支持 |
5 | 自定义函数、存储过程 | 支持 |
6 | 包 | 支持 |
7 | 索引 | 支持 |
8 | 物化视图 | 支持 |
9 | 触发器 | 支持 |
10 | 隐含列 | 支持 |
11 | 约束 | 支持 |
12 | 外部表 | 支持 |
13 | DBLINK | 支持 |
14 | 用户、角色 | 支持 |
MySQL语句兼容性说明
序号 | SQL语句 | KingbaseES支持情况 |
|---|---|---|
1 | CALL语句 | 支持 |
2 | DO语句 | 支持(有差异) |
3 | EXCEPT、INTERSECT、UNION 语句 | 支持 |
4 | INSERT ... SELECT | 支持 |
5 | INSERT ... SET | 支持 |
6 | INSERT ... ON DUPLICATE KEY UPDATE | 支持 |
7 | INSERT DELAYED | 不支持 |
8 | UPDATE ... ORDER BY/LIMIT | 支持 |
9 | LOAD DATA | 支持 |
10 | REPLACE INTO | 支持 |
11 | SELECT ... LIMIT | 支持 |
12 | SELECT ... INTO | 支持 |
13 | SELECT ... JOIN | 支持 |
14 | 包含等号操作符的子查询 | 支持 |
15 | 包含比较操作符的子查询 | 支持 |
16 | 包含ANY、IN、SOME的子查询 | 支持 |
17 | 包含ALL的子查询 | 支持 |
18 | 行子查询 | 支持 |
19 | 包含EXISTS、NOT EXISTS的子查询 | 支持 |
20 | 包含对外层查询表引用的子查询 | 支持 |
21 | 包含FROM子句的子查询 | 支持 |
22 | TABLE语句 | 支持 |
23 | UPDATE语句 | 支持 |
24 | VALUES语句 | 支持 |
25 | WITH AS语句 | 支持 |
26 | START TRANSACTION | 支持 |
27 | COMMIT、ROLLBACK | 支持 |
28 | SAVEPOINT、ROLLBACK TO SAVEPOINT、RELEASE SAVEPOINT | 支持 |
29 | LOCK/UNLOCK INSTANCE | 不支持 |
30 | LOCK/UNLOCK TABLE | 支持 |
31 | SET TRANSACTION | 支持 |
32 | ALTER/CREATE/DROP USER/ROLE | 支持 |
33 | GRANT/REVOKE | 支持 |
34 | SET ROLE | 支持 |
35 | SET PASSWORD FOR | 不支持 |
36 | ALTER/CREATE/DROP RESOURCE GROUP | 支持 |
37 | ANALYZE TABLE | 支持 |
38 | CHECK/CHECKSUM TABLE | 不支持 |
39 | SET、RESET语句 | 支持 |
40 | SHOW语句 | 支持(有差异) |
41 | EXPLAIN语句 | 支持 |
42 | CREATE/ALTER ... COMMENT 'String' | 支持 |
43 | CREATE TABLE ... ON UPDATE | 支持 |
KingbaseES 数据库支持 MySQL 数据库中绝大部分的 PLMySQL 语法。
PLMySQL数据类型兼容性说明
序号 | 数据类型 | KingbaseES支持情况 |
|---|---|---|
1 | 游标 | 支持 |
PLMySQL对象兼容性说明
序号 | 对象 | KingbaseES支持情况 |
|---|---|---|
1 | 触发器 | 支持 |
2 | 存储过程 | 支持 |
3 | 函数 | 支持 |
PLMySQL语句兼容性说明
序号 | 语句 | KingbaseES支持情况 |
|---|---|---|
1 | BEGIN..END复合语句 | 支持 |
2 | DECLARE变量语句 | 支持 |
3 | 异常语句 | 支持 |
4 | CASE 语句 | 支持 |
5 | IF语句 | 支持 |
6 | ITERATE语句 | 支持 |
7 | LEAVE语句 | 支持 |
8 | LOOP语句 | 支持 |
9 | REPEAT语句 | 支持 |
10 | RETURN语句 | 支持 |
11 | WHILE 语句 | 支持 |
12 | 标签语句 | 支持 |
13 | Cursor DECLARE语句 | 支持 |
14 | Cursor OPEN语句 | 支持 |
15 | Cursor FETCH语句 | 支持 |
16 | Cursor CLOSE语句 | 支持 |
17 | 赋值语句 | 支持 |
18 | select语句 | 支持 |
19 | select into语句 | 支持 |
20 | 注释语句 | 支持 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。