DDL
TDSQL PG 兼容 Oracle 中常见的 SQL DDL,具体如下:
| 序号 | Oracle 数据库 | TDSQL PG 数据库 | 说明 |
|---|---|---|---|
| 1 | CREATE DATEBASE | 支持,有差异 | 支持创建数据库指定表空间,不支持指定用户和密码等 |
| 2 | CREATE TABLE | 支持,有差异 | 支持创建表,不支持 MEMOPTIMIZE FOR 选项 |
| 3 | CREATE GLOBAL TEMP TABLE | 支持 | 支持创建全局临时表 |
| 4 | CREATE INDEX | 部分支持 | 支持创建唯一索引和全局索引,不支持创建 BITMAP 索引 |
| 5 | CREATE VIEW | 支持,有差异 | 支持创建普通视图或者 FORCE 创建视图, 不支持 SHARING 选项 |
| 6 | CREATE TABLE ... PARTITION BY | 支持 | 支持创建LIST, RANGE, HASH分区表,且创建时可带分区定义和子分区定义 |
| 7 | CREATE FUNCTION | 支持 | 支持创建函数,可指定 IN/INOUT/OUT 参数 |
| 8 | CREATE PROCEDURE | 支持 | 支持创建存储过程,可指定 IN/INOUT/OUT 参数 |
| 9 | CREATE ROLE/USER | 支持,有差异 | 支持创建角色,不支持 IDENTIFIED BY 子句 |
| 10 | CREATE SCHEMA | 支持 | 支持创建模式 |
| 11 | CREATE SEQUENCE | 部分支持 | 支持创建序列,支持 INCREMENT BY/MAXVALUE/MINVALUE/CYCLE/CACHE/ORDER/NOORDER 选项 |
| 12 | CREATE SYNONYM | 支持 | 支持创建表,视图,函数,存储过程,包等的同义词 |
| 13 | CREATE TABLESPACE | 支持 | 支持创建表空间 |
| 14 | CREATE TRIGGER | 支持 | 支持创建触发器 |
| 15 | CREATE TYPE | 支持 | 支持创建RECORD,嵌套表,TYPE OBJECT,关联数组等类型 |
| 16 | CREATE TYPE BODY | 支持 | 支持创建 TYPE OBJECT 的类型体包括构造函数和成员函数 |
| 17 | CREATE MATERIALIZED VIEW | 支持 | 支持创建物化视图 |
| 18 | CREATE DATABASE LINK | 支持 | 支持创建 DBLINK |
| 19 | CREATE OPERATOR | 支持,有差异 | 支持创建操作符,兼容 PostgreSQL 语法,可以指定 FUNCTION,LEFTARG,COMMTATOR,RESTRICT,HASHES,MERGES 选项 |
| 20 | CREATE PACKAGE | 支持 | 支持创建包 |
| 21 | CREATE PACKAGE BODY | 支持 | 支持创建包体 |
| 22 | ALTER DATABASE | 支持,有差异 | 支持修改数据库的名字,拥有者,设置参数 |
| 23 | ALTER TABLE | 支持,有差异 | 支持修改表的列类型,增加/删除列,增加/删除约束,支持分区表增加/删除分区/TRUNCATE 分区/EXCHANGE 分区,不支持 HASH 分区表修改分区个数,不支持 ENABLE/DISABLE 选项等 |
| 24 | ALTER INDEX | 部分支持 | 支持修改索引的属性 |
| 25 | ALTER MATERIALIZED VIEW | 支持,有差异 | 支持修改物化视图的名字,列的名字和属性,所属的模式,表空间等 |
| 26 | ALTER OPERATOR | 支持,有差异 | 支持修改运算符的名字,拥有者,所属模式,以及上面 CREATE 语句中的其他选项 |
| 27 | ALTER PACKAGE | 支持 | 支持修改包的 EDITIONABLE/NONEDITIONABLE 属性,COMPILE 选项 |
| 28 | ALTER PROCEDURE | 部分支持 | 支持修改存储过程的名字,拥有者以及执行时的参数,不支持 EDITIONABLE/NONEDITIONABLE 属性和 COMPILE 选项 |
| 29 | ALTER SEQUENCE | 部分支持 | 支持修改序列的 INCREMENT BY/MAXVALUE/MINVALUE/CYCLE/CACHE/ORDER/NOORDER 选项 |
| 30 | ALTER ROLE/USER | 支持,有差异 | 支持修改用户的名字和密码,但是不支持 IDENTIFIED 关键字 |
| 31 | ALTER SESSION | 部分支持 | 只支持修改连接的参数 |
| 32 | ALTER SYNONYM | 部分支持 | 只支持修改同义词的拥有者 |
| 33 | ALTER SYSTEM | 部分支持 | 只支持修改全局的参数 |
| 34 | ALTER TRIGGER | 部分支持 | 只支持修改触发器的名字 |
| 35 | ALTER TYPE | 部分支持 | 只支持修改类型的名字,拥有者,域名称,删除和增加域 |
| 36 | ALTER VIEW | 部分支持 | 只支持修改视图的名字,列名和默认值,所属模式,参数值 |
| 37 | DROP ... | 支持 | 支持删除表,视图,函数,数据库,DBLINK 等上面列举的数据库对象 |
| 38 | TRUNCATE | 支持 | 支持清空表数据 |
其中具体涉及到的 SQL DDL 子句,说明如下:
| 序号 | Oracle 数据库 | TDSQL PG 数据库 | 说明 |
|---|---|---|---|
| 1 | CONSTRAINT | 支持 | 约束子句 |
| 2 | LOGGING/NOLOGGING/FILESYSTEM_LIKE_LOGGING | 部分支持,有差异 | 支持对应的 LOG/UNLOG 子句,不支持FILESYSTEM_LIKE_LOGGING |
| 3 | PCTFREE/PCTUSED/INITRANS/MAXTRANS/STORAGE | 支持 | 物理属性子句 |
| 4 | STORAGE clause | 部分支持,有差异 | 存储子句 |
DML
TDSQL PG 兼容 Oracle 中常见的 SQL DML,具体如下:
| 序号 | Oracle 数据库 | TDSQL PG 数据库 | 说明 |
|---|---|---|---|
| 1 | SELECT | 支持 | 支持单表和多表连接;支持多种JOIN连接方式(内连接、外连接);支持子查询;支持层次查询;支持多种窗口函数等 支持多种集合操作:UNION、UNION ALL、INTERSECT、EXCEPT、MINUS等 支持EXPLAIN查看执行计划 支持PIVOT、UNPIVOT 支持 CONNECT BY 子句 支持 OFFSET 子句 支持 GROUP BY 子句 支持 OVER 子句 支持并行查询 |
| 2 | INSERT | 支持 | 支持VALUES插入一行或者多行 支持分区表指定分区插入数据 支持INSERT ... SELECT插入数据 支持同时插入多个目标表(INSERT ALL/FIRST) 支持并行插入 |
| 3 | UPDATE | 支持 | SET支持一次更新多列数据 支持分区表指定分区更新数据 支持并行更新 |
| 4 | DELETE | 支持 | 支持删除表数据 支持分区表指定分区删除数据 |
| 5 | MERGE INTO | 支持 | 支持根据条件执行插入,删除或者更新操作 |
TDSQL PG 兼容常见 SQL 查询和子查询,说明如下:
| 序号 | Oracle数据库 | TDSQL PG数据库 |
|---|---|---|
| 1 | 创建简单查询 | 支持。 |
| 2 | 分层查询 | 支持。 |
| 3 | UNION [ALL],INTERSECT,减运算符 | 支持。 |
| 4 | 查询结果排序 | 支持,有差异。 |
| 5 | Joins | 支持,有差异。 |
| 6 | 使用子查询 | 支持。 |
| 7 | 嵌套子查询的解嵌套 | 支持,有差异。 |
| 8 | 分布式查询 | 支持,有差异。 |
| 9 | 聚集函数嵌套 | 支持。 |
其他常见的 SQL语法
TDSQL PG 兼容 Oracle 中其他常见的 SQL语法,具体如下:
| 序号 | Oracle 数据库 | TDSQL PG 数据库 | 说明 |
|---|---|---|---|
| 1 | ANALYZE | 部分支持 | 只支持更新表的统计信息 |
| 2 | CALL | 部分支持 | 支持调用存储过程,不支持 INTO 子句 |
| 3 | COMMIT | 支持 | 事务提交 |
| 4 | ROLLBACK | 支持 | 事务回滚 |
| 5 | SAVEPOINT | 支持 | 创建恢复点 |
| 6 | GRANT | 支持,有差异 | 赋予用户权限,兼容 PostgreSQL 语法 |
| 7 | REVOKE | 支持,有差异 | 取消用户权限,兼容 PostgreSQL 语法 |
| 8 | SET TRANSACTION | 部分支持,有差异 | 设置事务相关参数,支持 DEFERRABLE/NOT DEFERRABLE/ISOLATION LEVEL/READ/SNAPSHOT,兼容 PostgreSQL 语法 |
| 9 | Hint | 支持 | 与 SQL 语句一起使用以更改执行计划 |