更新时间:2022-08-16 GMT+08:00

语法

本章节介绍了在PostgreSQL11开源版本的基础上,PostgreSQL增强版支持的语法。

  • 支持CREATE SEQUENCE语法。
  • 支持CREATE/ALTER DATABASE语法。
  • 支持CREATE/ALTER VIEW语法。
  • 支持CREATE TABLE语法。
  • 支持CREATE TABLESPACE语法。
  • 支持CLUSTER语法。
  • 支持FORALL语法;
  • 支持CREATE/DROP DIRECTORY语法。
  • 支持ALTER TABLE ADD CONSTRAINT USING INDEX语法;
  • 支持INSERT INTO语句的目标列名可以使用表名或表别名修饰。
  • 支持非分区表的ROWNUM伪列;
  • 支持字段表达式创建索引:CREATE INDEX ON COLUMN_EXPR;
  • 支持ALTER TABLE...MODIFY修改表字段。
  • 支持VARCHAR、CHARACTER数据类型指定长度单位。
  • 支持TYPE/NAME/VERSION/VALUE/INTERVAL作为别名。
  • 支持存储过程语法。
  • 支持DATE数据类型。
  • 支持HASH、RANGE、LIST分区表创建语法。
  • 支持MERGE操作语法:
    MERGE [HINT] INTO table_name USING ({subquery | table_name | view_name}) alias ON (condition) merge_update_clause merge_insert_clause;
  • 支持时间间隔操作语法:
    INTERVAL YEAR TO MONTH,INTERVAL DAY (l) TO SECOND (P);
  • 支持CREATE TRIGGER带BODY体语法:
    CREATE TRIGGER name... {DECLARE ... BEGIN | BEGIN} body END;
  • 支持存储过程游标语法:
    CURSOR cursor_name [ parameter_list ] IS select_statement, TYPE type_name IS REF CURSOR;
  • 支持存储过程游标变量:
    SQL%ISOPEN,SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT,cursor%ISOPEN,cursor%FOUND,cursor%NOTFOUND,cursor%ROWCOUNT;
  • 支持定时任务高级包:
    DBMS_JOB.SUBMIT,DBMS_JOB.ISUBMIT,DBMS_JOB.REMOVE,DBMS_JOB.BROKEN,DBMS_JOB.CHANGE,DBMS_JOB.WHAT,DBMS_JOB.NEXT_DATE,DBMS_JOB.INTERVAL;
  • 支持CREATE USER语法:
    {DEFAULT COLLATION | DEFAULT TABLESPACE | [LOCAL] TEMPORARY TABLESPACE} Clause;
  • 支持修改会话属性:
    ALTER SESSION SET param_name = value;
  • 支持匿名块。
  • 支持存储过程跨模式访问。
  • 存储过程支持SQLCODE内置变量;
  • 存储过程语法兼容增强:支持以存储过程名作为结束标签,支持FOR VAR IN SELECT-CLAUSE,LOOP循环允许指定结束标签名,支持in参数指定默认值;
  • 支持子查询不指定别名。
  • CREATE SEQUENCE支持NOCYCLE。
  • CREATE/ALTER USER语法中允许使用IDENTIFIED BY关键字替代PASSWORD关键字。
  • UPDATE SET语法中允许指定表名或别名修饰。
  • UPDATE SET支持单字段(columnname)=(value)语法。
  • ALTER TABLE支持MODIFY NOT NULL语法和ENABLE语法。
  • 空字符串和NULL等价。
  • 序列操作新增语法:sequencCURRVAL,sequencNEXTVAL。
  • 创建用户时支持同时创建同名schema。
  • 删除表记录语法中FROM关键字。
  • 支持XML数据类型伪列COLUMN_VALUE。
  • 支持外连接运算符(+);
  • 支持数据类型INTERVAL与数字之间的运算操作:+、-、>、<、>=、<=、<>;
  • 支持分区表的DML操作:SELECT、INSERT、UPDATE、DELETE;
  • 分区表支持二级分区;
  • 分区表支持以表达式作为分区边界;
  • 支持触发器DDL:支持使用schema修饰等;
  • 支持时间格式IYY;
  • 支持CREATE/ALTER MATERIALIZED VIEW语法;
  • 支持CREATE TYPE语法;
  • 支持create profile语法;
  • 支持列约束的enable/disable语法;
  • 支持分区表指定tablespace options语法;
  • 支持DROP TABLE tablename [CASCADE CONSTRAINTS] [PURGE]语法;
  • 支持存储过程动态SQL语法EXECUTE IMMEDIATE,当前版本不支持带DECLARE申明的匿名块动态执行;
  • 支持FUNCTION定义;
  • 支持CONNECT BY查询:支持伪列LEVEL、CONNECT_BY_ROOT、CONNECT_BY_ISLEAF;支持函数sys_connect_by_path;支持CONNECT_BY_ROOT操作;支持ORDER SIBLINGS;
  • 支持TIME数据类型精度;
  • 支持虚拟列:column_name datatype [GENERATED ALWAYS] AS (expression) [VIRTUAL];
  • 支持一维数组的定义:CREATE OR REPLACE TYPE array_name AS VARRAY (len) OF typename;
  • 支持一维数组的访问:array_name.extend, array_name.count, array_name.first, array_name.last;
  • ROLLUP、CUBE、GROUPING SETS分组查询支持grouping_id([expr1[, expr2[, ...exprn]]])和group_id();
  • 支持无分组字段返回的排序查询语句:SELECT SUM(colname) FROM tbl ORDER BY colname;