常见SQL语法

最近更新时间: 2026-03-13 09:03:00

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 语句一起使用以更改执行计划