SQL语法兼容
语法兼容性¶
针对ANSI/ISO SQL89、ANSI/ISO SQL92、ANSI/ISO SQL99、Oracle、MySQL等为代表的国际主流数据库技术标准,SeaboxSQL数据库在服务器、接口、工具等各组件中全面增强了兼容性,屏蔽了SeaboxSQL数据库与这些产品之间的差异,从而减少了现有应用移植和新应用开发的成本,降低了数据库系统管理员、应用开发人员等学习和使用SeaboxSQL数据库的难度。
Oracle语法兼容¶
SeaboxSQL数据库内部实现了大量的Oracle兼容特性。这些特性从数据类型、SQL语法、标量函数、用户定义包和系统内置包、匿名块、存储过程、触发器和访问接口等多方面对Oracle进行了原生支持。在移植过程中,Oracle程序只需很少甚至不做任何改动就能在SeaboxSQL数据库环境中运行。
Oracle兼容方面的主要实现如下:
-
功能的兼容
-
提供兼容Oracle兼容模式的开关
-
支持Oracle的DUAL伪表
-
支持Oracle的ROWNUM伪列
-
支持Oracel的ROWID伪列
-
支持Oracle的外连接操作符(+)
-
支持Oracle的MERGE INTO语法
-
支持Oracle的DBLink功能
-
支持Oracle的层次查询
-
支持Oracle的同义词
-
兼容Oracle对字符串和空值的处理语义
-
兼容Oracle内置包(DBMS_SQL、DBMS_DDL、DBMS_ALERT、DBMS_JOB、DBMS_ROWID)
-
支持Oracle的Update多字段
-
支持启用和禁用外键约束(仅单机支持)、check约束、唯一约束和主键约束
-
数据类型的兼容
-
支持Oracle的NUMBER类型
-
支持Oracle的VARCHAR2类型
-
兼容Oracle的DATE类型
-
函数的兼容
-
支持Oracle的
EMPTY_BLOB()
和EMPTY_CLOB()
函数 -
支持Oracle的NVL、NVL2函数
-
支持Oracle的TRUNC函数
-
兼容Oracle的SYSDATE函数
-
兼容Oracle的TO_NUMBER函数
-
兼容Oracle的TO_CHAR函数
-
兼容Oracle的TO_DATE、TO_TIMESTAMP、TO_TIMESTAMPTZ函数
-
兼容Oracle的ADD_MONTHS、LAST_DAY和NEXT_DAY函数
-
访问接口的兼容
-
提供OracleOCI部分兼容接口DCI
-
PL/SQL的兼容
-
兼容Oracle的关键字RETURN、IS、DECLARE
-
兼容Oracle的运算符BETWEEN、IN、LIKE
-
兼容Oracle的使用'+'连接字符串
-
兼容Oracle的CASE与GOTO语句
-
兼容Oracle的创建存储过程和函数时参数带有DEFAULT
-
兼容Oracle的调用存储过程和不带参数的函数不带括号
-
兼容Oracle的匿名块
-
兼容Oracle的用户自定义异常
MySQL语法兼容¶
SeaboxSQL数据库内部实现了大量的MySQL兼容特性,兼容MySQL的各种DML、DAL、DDL语法,其中包括:
-
兼容绝大部分MySQL函数(包括JSON函数、加密解密函数等)
-
兼容MySQL 8.0的视图、CTE、窗口函数、分析函数等
-
支持MySQL的各种数据类型,包括类型精度支持(比如时间戳、Decimal类型)
-
兼容常见的MySQL字符串Charset及Collation
-
兼容绝大部分information_schema视图
-
兼容用户权限体系用法,包括GRANT、REVOKE等