编写一次,随处运行
标签: 分析,数据库
Robert Indrigo
发布: 2017-09-14
许多 IBM 数据库客户和独立软件供应商都表示对编写可跨多个平台移植的应用程序感兴趣。IBM® 致力于通过一种通用、可移植且支持 ANSI/ISO SQL 标准的方式,在实现常用 SQL 引擎的数据库平台上提供 SQL 通用性。这些客户的应用程序开发人员要求我们提供一个常用 SQL 语言功能列表作为快速参考。
DB2 现在是所有 IBM 混合数据管理 产品(包括以前称为 dashDB 的产品)的品牌名称。IBM DB2® 和 IBM Big SQL 都设计了兼容的 SQL。如果应用程序通过一个 IBM 数据服务器驱动程序,使用兼容的 SQL 访问存储在这些产品上的数据,那么它们无需进行任何更改就能处理存储在其他产品上的数据。以下表格列出了具体细节和影响兼容性的因素。
某个特性可能不会同时在所有常用 SQL 引擎产品上提供。在一些情况下,出现这种状况只是因为不同的 DB2 产品的发布时间表稍有不同。在其他情况下,出现这种状况是因为客户需求能加速特定 DB2 产品上的 SQL 特性的开发。
可以将这个常用 SQL 应用程序特性摘要版本用作快速参考,其中包含各个平台中常用的特性和功能。要获得更详细的信息,请参阅 SQL 跨平台开发参考指南 (PDF 4.2 MB) 和各个 IBM SQL 产品的 SQL 参考手册。使用这些表格之前,请阅读免责声明。
- 此列表不一定完整。这里显示的特性基于客户的感兴趣程度。在详细查阅这些产品的 SQL 语言参考手册时,您可能会发现其他特性。
- 不应将此列表作为任何 DB2 产品的特性和功能列表。由于一直在发布新功能,所以某个特性可能已存在于一个平台中,但在其他 DB2 平台上仍处于试运行阶段。
- 一般而言,受底层 Hadoop 生态系统限制的引导,Big SQL 兼容性仅关注 SELECT,没有提供完整的 ACID 事务支持。
- 除了核心 SQL 语法之外,还需要考虑周围的操作环境,包括字符排序、隔离级别和数据类型。
- 请使用最新的正式产品发布版本,以获得最高的兼容性。
- IBM DB2 V11.1
- IBM DB2 Warehouse
- IBM Big SQL V4.2
Y产品包含 全面 支持。P****与其他常用 SQL 引擎产品相比,该产品仅包含 部分 支持;请查阅产品信息。
语言元素DB2DB2 WarehouseBig SQL备注标识符 – 普通YYY标识符 – 分隔YYY支持小写字符和结尾下划线的标识符YYY数据类型转换 – 隐式PPPDB2 不支持在 LOB 与非字符串类型之间进行隐式转换。基于代码页自动转换数据YYY常量YYY字符常量的十六进制规范YYYNull 值YYY列引用YYY主机变量引用YYY指示变量YYY扩展指示变量YYY主机结构YYY“友好的”算法和转换YYY函数调用YYY带命名参数的函数调用YYY算术运算符YYY逐位运算符YYY字符串串联YYY将标量子查询编写为表达式YYY将标量全选编写为表达式YYY日期/时间算法YYYCASE 表达式YYYCAST 规范YYY:: 转换运算符YYYXMLCAST 规范YYYROW CHANGE 表达式YYY序列引用(NEXT VALUE 和 PREVIOUS VALUE)YYYOLAP 排序规范(RANK、DENSE_RANK)YYYOLAP 排序规范 (PERCENT_RANK)YYYOLAP 编号规范 (ROW_NUMBER)YYYOLAP 顺序规范(LAG、LEAD)YYYOLAP 聚合函数规范 (CUME_DIST)YYYOLAP 聚合函数规范(FIRST_VALUE、LAST_VALUE)YYYOLAP 聚合函数规范 (NTH_VALUE)YYYOLAP 聚合函数规范 (NTILE)YYYOLAP 聚合函数规范 (RATIO_TO_REPORT)YYYOLAP 聚合规范YYY无类型参数标记YYY无类型 NULLYYY无类型 DEFAULTYYY标准 SQL 的标记产品扩展PPPDB2 仅支持针对 SQL92 入门级 SQL 语法进行标记。诊断区域YYYSQLSTATEYYYSQLCODEYYY描述符区域YYY
语言元素DB2DB2 WarehouseBig SQL备注SMALLINTYYYINT2YP–INTEGERYYYINT4YY–BIGINTYYYINT8YY–DECIMALYYYNUMERICYYYREALYYY为了实现跨平台移植,不要使用 FLOAT(n)。FLOAT4YY–DOUBLE 或 FLOATYYY为了实现跨平台移植,不要使用 FLOAT(n)。FLOAT8YY–DECFLOATYYP在 Big SQL 中,可在大多数 SQL 构造中使用 DECFLOAT 数据类型,但在 Hadoop 和 HBase 表中除外,因为 Hadoop 生态系统中不支持此类型。CHARACTERYYYVARCHARYYY含 CHAR 或 VARCHAR 的 FOR BIT DATAYYYCLOBYYP含 CHAR、VARCHAR 或 CLOB 的 FOR SBCS 或 MIXED DATAPPPNCHARPP–NVARCHARPP–NCLOBPP–BINARYYYP对于 Hadoop 和 HBase 表,BINARY 数据类型与 VARBINARY 同义。Hadoop 中没有固定长度 BINARY 类型。VARBINARYYYPBLOBYYPGRAPHICYY–VARGRAPHICYY–DBCLOBYY–DATEYYYTIMEYYP在 Big SQL 中,可在大多数 SQL 构造中使用 TIME 数据类型,但在 Hadoop 和 HBase 表中除外,因为 Hadoop 生态系统中不支持此类型。TIMESTAMPYYY精确到秒后 0 到 12 位的 TIMESTAMPYYP在 Big SQL 中,最高精确到秒后 9 位。XMLYYP在 Big SQL 中,可在大多数 SQL 构造中使用 XML 数据类型,但在 Hadoop 和 HBase 表中除外,因为 Hadoop 生态系统中不支持此类型。BOOLEANYYPBPCHARPPP用户定义的独特类型YYY用户定义的普通数组类型YYY用户定义的关联数组类型YYY用户定义的游标类型YYY用户定义的行类型YYY用户定义的引用类型YYY用户定义的结构化类型YYY
语言元素DB2DB2 WarehouseBig SQL备注CURRENT CLIENT_ACCTNGYYYCURRENT CLIENT_APPLNAMEYYYCURRENT CLIENT_USERIDYYYCURRENT CLIENT_WRKSTNNAMEYYYCURRENT DATE 或 CURRENT_DATEYYYCURRENT DBPARTITIONNUMYYYCURRENT DECFLOAT ROUNDING MODEYYYCURRENT DEFAULT TRANSFORM GROUPYYYCURRENT DEGREEYYYCURRENT EXPLAIN MODEYYYCURRENT EXPLAIN SNAPSHOTYYYCURRENT FEDERATED ASYNCHRONYYYYCURRENT IMPLICIT XMLPARSE OPTIONYYYCURRENT ISOLATIONYYYCURRENT LOCALE LC_MESSAGESYYYCURRENT LOCALE LC_TIMEYYYCURRENT LOCK TIMEOUTYYYCURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATIONYYYCURRENT MDC ROLLOUT MODEYYYCURRENT MEMBERYYYCURRENT NODEYYYCURRENT OPTIMIZATION PROFILEYYYCURRENT PACKAGE PATHYYYCURRENT PATH 或 CURRENT_PATHYYYCURRENT QUERY OPTIMIZATIONYYYCURRENT REFRESH AGEYYYCURRENT SCHEMA 或 CURRENT_SCHEMAYYYCURRENT SERVERYYYCURRENT SQL_CCFLAGSYYYCURRENT TEMPORAL BUSINESS_TIMEYYYCURRENT TEMPORAL SYSTEM_TIMEYYYCURRENT TIME 或 CURRENT_TIMEYYYCURRENT TIMESTAMP 或 CURRENT_TIMESTAMPYYYCURRENT TIMEZONEYYYCURRENT USER 或 CURRENT_USERYYYSESSION_USERYYYSYSTEM_USERYYYUSERYYY
语言元素DB2DB2 WarehouseBig SQL备注CLIENT_HOSTYYYCLIENT_IPADDRYYYCLIENT_ORIGUSERIDYYYCLIENT_USRSECTOKENYYYMON_INTERVAL_IDYYYPACKAGE_NAMEYYYPACKAGE_SCHEMAYYYPACKAGE_VERSIONYYYROUTINE_MODULEYYYROUTINE_SCHEMAYYYROUTINE_SPECIFIC_NAMEYYYROUTINE_TYPEYYYTRUSTED_CONTEXTYYY
语言元素DB2DB2 WarehouseBig SQL备注除 LOB 类型外的基本 ( = <> < > <= >= ) 行值表达式YYY基本 ( = <> < > <= >= ) LOB 类型表达式PPPDB2 可比较实际长度小于 32672 字节的 LOB 字符串。基本 ( = <> ) 行值表达式YYY基本 ( < > <= >= ) 行值表达式YYY在比较运算符右侧为标量子查询的基本表达式YYY左侧为一个表达式(没有子查询)、右侧为子查询的量化(ALL、ANY 或 SOME)表达式YYYARRAY_EXISTSYYYBETWEEN(无标量子查询)YYYDISTINCTYYYEXISTS(子查询)YYY后跟表达式列表的 INYYYIN 后跟单列子查询YYYIS NULL 和 IS NOT NULL(无标量子查询)YYYISNULL 和 ISNOTNULL(无标量子查询)YYY使用主机变量或字符串常量作为模式的 LIKEYYY含模式和转义表达式的 LIKEYYYOVERLAPSYYYREGEXP_LIKEYYYTYPEYYY不含指定的 XML 模式的 VALIDATEDYYY含指定的 XML 模式的 VALIDATEDYYYXMLEXISTS 传递显式变量YYYXMLEXISTS 隐式传递所有列YYY
语言元素DB2DB2 WarehouseBig SQL备注ARRAY_AGG(普通数组)YYYARRAY_AGG(关联数组)YYYAVGYYYCORRELATION 或 CORRYYYCOUNTYYYCOUNT_BIGYYYCOVAR_POPYYYCOVARIANCE 或 COVARYYYCOVARIANCE_SAMP 或 COVAR_SAMPYYYCUME_DISTYYYGROUPINGYYYLISTAGGPPPDB2 不支持 ON OVERFLOW 子句。MAXYYYMEDIANYYYMINYYYPERCENTILE_CONT 或 PERCENTILE_DISCYYYPERCENT_RANKYYYREGR_AVGXYYYREGR_AVGYYYYREGR_COUNTYYYREGR_INTERCEPT 或 REGR_ICPTYYYREGR_R2YYYREGR_SLOPEYYYREGR_SXXYYYREGR_SXYYYYREGR_SYYYYYSTDDEVYYYSTDDEV_POPYYYSTDDEV_SAMPYYYSUMYYYVARIANCE 或 VARYYYVARIANCE_POP 或 VAR_POPYYYVARIANCE_SAMP 或 VAR_SAMPYYYXMLAGGYYYXMLGROUPYYY
语言元素DB2DB2 WarehouseBig SQL备注ABSVAL 或 ABSYYYACOSYYYADD_DAYSYYYADD_HOURSYYYADD_MINUTESYYYADD_MONTHSYYYADD_SECONDSYYYADD_YEARSYYYAGEYYYARRAY_DELETEYYYARRAY_FIRSTYYYARRAY_LASTYYYARRAY_NEXTYYYARRAY_PRIORYYYARRAY_TRIMYYYASCIIYYYASINYYYATANYYYATAN2YYYATANHYYYBIGINTYYYBINARYYYY位操作函数(BITAND、BITANDNOT、BITNOT、BITOR、BITXOR)YYYBLOBYYYBTRIMYYYCARDINALITYYYYCEIL 或 CEILINGYYYCHAR(无字符串单元)YYYCHARACTER_LENGTH 或 CHAR_LENGTH(无字符串单元)YYY含字符串单元的 CHARACTER_LENGTH 或 CHAR_LENGTHYYYCHRYYYCLOB(无字符串单元)PPPCOALESCE(或 VALUE)YYYCOLLATION_KEYYYYCOLLATION_KEY_BITYYYCOMPARE_DECFLOATYYYCONCATYYYCONTAINSYYYCOSYYYCOSHYYYCOTYYYCURSOR_ROWCOUNTYYYDATAPARTITIONNUMYYYDATEYYYDATE_PARTYYYDATE_TRUNCYYYDAYYYYDAYNAMEYYYDAYOFMONTHYYYDAYOFWEEKYYYDAYOFWEEK_ISOYYYDAYOFYEARYYYDAYSYYYDAYS_BETWEENYYYDAYS_TO_END_OF_MONTHYYYDBCLOB(无字符串单元)PPPDBPARTITIONNUM(另请参见 NODENUMBER)YYYDECFLOATYYYDECFLOAT_FORMATYYYDECIMAL 或 DECYYYDECODEYYYDECRYPT_BINYYYDB2 11.1 中已弃用。DECRYPT_CHARYYYDB2 11.1 中已弃用。DEGREESYYYDEREFYYYDIFFERENCEYYYDIGITSYYYDOUBLE 或 DOUBLE_PRECISIONYYYEMPTY_BLOB、EMPTY_CLOB、EMPTY_DBCLOBYYYENCRYPTYYYDB2 11.1 中已弃用。EVENT_MON_STATEYYYEXPYYYEXTRACTYYYFIRST_DAYYYYFLOATYYYFLOORYYYFROM_UTC_TIMESTAMPYYYGENERATE_UNIQUEYYYGETHINTYYYDB2 11.1 中已弃用。GRAPHIC(无字符串单元)PPPGREATESTYYYHASHYYYHASH4YYYHASH8YYYHASHEDVALUE(另请参见 PARTITION)YYYHEXYYYHEXTORAWYYYHOURYYYHOURS_BETWEENYYYIDENTITY_VAL_LOCALYYYINITCAPYYYINSERT(无字符串单元)PPP含字符串单元的 INSERTYYYINSTR(另请参见 LOCATE_IN_STRING)YYYINSTR2(另请参见 LOCATE_IN_STRING)YYYINSTR4(另请参见 LOCATE_IN_STRING)YYYINSTRB(另请参见 LOCATE_IN_STRING)YYYINTEGER 或 INTYYYINTNAND、INTNOR、INTNXOR 和 INTNNOTYYYJULIAN_DAYYYYLAST_DAYYYYLCASE 或 LOWERYYYLCASE 或 LOWER(区域敏感)YYYLEASTYYYLEFT(无字符串单元)PPP含字符串单元的 LEFTYYYLENGTH(无字符串单元)YYY含字符串单元的 LENGTHYYYLENGTH2YYYLENGTH4YYYLENGTHBYYYLNYYYLOCATE(无字符串单元)PPP含字符串单元的 LOCATEYYYLOCATE_IN_STRING 或 INSTR(无字符串单元)PPP含字符串单元的 LOCATE_IN_STRING 或 INSTRYYYLOGYYYLOG10YYYLPADPPPDB2 仅对 CLOB 参数提供了有限的支持。含 1 个参数的 LTRIMPPPDB2 仅对 CLOB 参数提供了有限的支持。含 2 个参数的 LTRIMPPPMAXYYYMAX_CARDINALITYYYYMICROSECONDYYYMIDNIGHT_SECONDSYYYMINYYYMINUTEYYYMINUTES_BETWEENYYYMODYYYMONTHYYYMONTHNAMEYYYMONTHS_BETWEENYYYMQPUBLISHY–Y最多含 2 个参数的 MQREADY–Y最多含 2 个参数的 MQREADCLOBY–YMQRECEIVEY–YMQRECEIVECLOBY–YMQSENDY–YMQSUBSCRIBEY–YMQUNSUBSCRIBEY–YMULTIPLY_ALTYYYNCHARYYYNCLOBYYYNEXT_DAYYYYNEXT_MONTHYYYNEXT_QUARTERYYYNEXT_WEEKYYYNEXT_YEARYYYNODENUMBERYYYNORMALIZE_DECFLOATYYYNOWYYYNULLIFYYYNVARCHARYYYNVLYYYNVL2YYYOCTET_LENGTHYYYOVERLAY(无字符串单元)PPP含字符串单元的 OVERLAYYYYPARAMETERYYYPARTITIONYYYPOSITION(无字符串单元)PPP含字符串单元的 POSITIONYYYPOSSTRYYYPOWYYYPOWERYYYQUANTIZEYYYQUARTERYYYRADIANSYYYRAISE_ERRORYYYRANDYYYRANDOMYYYRAWTOHEXYYYREALYYYREC2XMLYYYREGEXP_COUNTYYYREGEXP_EXTRACTYYYREGEXP_INSTRYYYREGEXP_MATCH_COUNTYYYREGEXP_REPLACEYYYREGEXP_SUBSTRYYYREPEATYYYREPLACEPPPDB2 不支持 LOB 参数。所含参数第 3 个为可选的 REPLACEPPPDB2 不支持 LOB 参数。RIDYYYRID_BITYYYRIGHT(无字符串单元)PPP含字符串单元的 RIGHTYYYROUND(数值)YYY含第 2 个可选参数的 ROUND(数值)YYYROUND(日期时间)YYYROUND_TIMESTAMPYYYRPADPPPDB2 仅对 CLOB 参数提供了有限的支持。含 1 个参数的 RTRIMPPPDB2 仅对 CLOB 参数提供了有限的支持。含 2 个参数的 RTRIMPPPDB2 仅对 CLOB 参数提供了有限的支持。SCOREYYYSECLABELYYYSECLABEL_BY_NAMEYYYSECLABEL_TO_CHARYYYSECONDYYYSECONDS_BETWEENYYYSIGNYYYSINYYYSINHYYYSMALLINTYYYSOUNDEXYYYSPACEPPPDB2 支持的长度上限为 4000。SQRTYYYSTRIPYYYSTRLEFTYYYSTRPOSYYYSTRRIGHTYYYSUBSTRYYYSUBSTR2YYYSUBSTR4YYYSUBSTRBYYYSUBSTRING(无字符串单元)PPP含字符串单元的 SUBSTRINGYYYTABLE_NAMEYYYTABLE_SCHEMAYYYTANYYYTANHYYYTHIS_MONTHYYYTHIS_QUARTERYYYTHIS_WEEKYYYTHIS_YEARYYYTIMEYYYTIMESTAMPYYYTIMESTAMPDIFFYYYTIMESTAMP_FORMATYYYTIMESTAMP_ISOYYYTOTALORDERYYYTO_CHAR(字符)YYYTO_CHAR(十进制浮点数)YYYTO_CHAR(时间戳)YYYTO_CLOBYYYTO_DATEYYYTO_HEXYYYTO_NCHARYYYTO_NCLOBYYYTO_NUMBERYYYTO_SINGLE_BYTEYYYTO_TIMESTAMPYYYTO_UTC_TIMESTAMPYYYTRANSLATEYY–TRIMPPPDB2 仅对 CLOB 参数提供了有限的支持。TRIM_ARRAYYYYTRUNCATE 或 TRUNC(日期时间)YYY含第 2 个可选参数的 TRUNCATE 或 TRUNC(数值)YYYTRUNCATE 或 TRUNC(数值)YYYTRUNC_TIMESTAMPYYYTYPE_IDYYYTYPE_NAMEYYYTYPE_SCHEMAYYYUCASE 或 UPPERYYYUCASE 或 UPPER(区域敏感)YYYVALUEYYYVARBINARYYYYVARCHAR(无字符串单元)YYYVARCHAR_BIT_FORMATYYYVARCHAR_FORMAT(字符)YYYVARCHAR_FORMAT(十进制浮点数)YYYVARCHAR_FORMAT(时间戳)YYYVARCHAR_FORMAT_BITYYYVARGRAPHIC(无字符串单元)PPPVERIFY_GROUP_FOR_USERYYYVERIFY_ROLE_FOR_USERYYYVERIFY_TRUSTED_CONTEXT_ROLE_FOR_USERYYYWEEKYYYWEEKS_BETWEENYYYWEEK_ISOYYYWIDTH_BUCKETYYYWRAPYYYXML2CLOBYYYXMLATTRIBUTESYYYXMLCOMMENTYYYXMLCONCATYYYXMLDOCUMENTYYYXMLELEMENTYYYXMLFORESTYYYXMLNAMESPACESYYYXMLPARSEYYYXMLPIYYY传递已命名变量的 XMLQUERYYYYXMLQUERY 隐式传递所有列YYYXMLROWYYYXMLSERIALIZEYYYXMLTEXTYYYXMLVALIDATEYYYXMLXSROBJECTIDYYYXSLTRANSFORMYYYYEARYYYYEARS_BETWEENYYYYMD_BETWEENYYY
语言元素DB2DB2 WarehouseBig SQL备注BASE_TABLEYYYMQREADALLY–YMQREADALLCLOBY–YMQRECEIVEALLY–YMQRECEIVEALLCLOBY–YXMLTABLE 传递已命名的变量YYYXMLTABLE 隐式传递所有列YYY
语言元素DB2DB2 WarehouseBig SQL备注CREATE_WRAPPEDYYYXSR_ADDSCHEMADOCYYYXSR_COMPLETEYYYXSR_DTDYYYXSR_EXTENTITYYYYXSR_REGISTERYYY
语言元素DB2DB2 WarehouseBig SQL备注SELECT 子句YYY在 SELECT 子句中使用 AS 从属子句YYY在 SELECT 子句中使用 Qualified _或unqualified_YYY在 SELECT 子句中使用标量子查询以外的表达式YYY允许在 SELECT 子句中使用聚合函数,即使结果表是从一个分组视图中得到的YYYFROM 子句引用单个表或视图YYY含隐式交叉连接 (join)(多个逗号分隔的表引用)的 FROM 子句YYY包含具有关联子句的嵌套表表达式的 FROM 子句YYY包含没有关联子句的嵌套表表达式的 FROM 子句YYY在 TABLE 关键字前使用嵌套表表达式的 FROM 子句YYY在 LATERAL 关键字前使用嵌套表表达式的 FROM 子句YYY含 CROSS JOIN 的 FROM 子句YYY含隐式 INNER JOIN 的 FROM 子句YYY含 LEFT OUTER JOIN 的 FROM 子句YYY含 RIGHT OUTER JOIN 的 FROM 子句YYY包含等同于连接条件的 FULL OUTER JOIN 的 FROM 子句YYY含指定列 JOIN 的 FROM 子句YYY含 TABLESAMPLE 子句的 FROM 子句YYY包含具有关联子句的表函数引用的 FROM 子句YYY包含没有关联子句的表函数引用的 FROM 子句YYY包含具有关联子句的 XMLTABLE 表达式的 FROM 子句YYY包含没有关联子句的 XMLTABLE 表达式的 FROM 子句YYY包含集合派生表(对普通数组执行 UNNEST)的 FROM 子句YYY包含集合派生表(对关联数组执行 UNNEST)的 FROM 子句YYY包含外部表引用的 FROM 子句–Y–包含 DELETE 语句的 FROM 子句YYY包含 INSERT 语句的 FROM 子句YYY包含 UPDATE 语句的 FROM 子句YYYWHERE 子句YYYGROUP BY 引用列名称YYYGROUP BY 引用分组表达式YYYGROUP BY 引用超级组(CUBE 和 ROLLUP)YYYGROUP BY 引用分组集YYYHAVING 子句YYY含隔离子句的子查询YYY含 UNION 或 UNION ALL 的全选YYY含 INTERSECT 或 INTERSECT ALL 的全选YYY含 EXCEPT 或 EXCEPT ALL 的全选YYY含表值构造函数(VALUES 子句)的全选YYY含隔离子句的全选YYP以公用表表达式开头的 SELECT 语句YYY使用递归公用表表达式的 SELECT 语句YYY使用 CONNECT BY 的 SELECT 语句PPPDB2 不支持 CONNECT_BY_ISCYCLE 或 CONNECT_BY_ISLEAF 伪列。含隔离子句的 SELECT 语句YYP作用于限定列名称的 ORDER BY 子句YYY对排序键表达式执行 ORDER BY 子句YYY对不在 SELECT 列表中的表达式执行 ORDER BY 子句YYYORDER BY ORDER OFYYY含列名称列表的 FOR UPDATE 子句YYY含隐式列列表的 FOR UPDATE 子句YYYFOR READ ONLY 子句YYY含整数行数的 OPTIMIZE 子句YYYFETCH FIRST 子句YYYLIMIT 和 OFFSET 子句PPP在 SELECT 语句中不受支持。周期规范YYY
语言元素DB2DB2 WarehouseBig SQL备注静态 CALL 语句YYY含过程名称的主机变量名称的静态 CALL 语句YYY动态 CALL 语句YYY使用命名参数的 CALLYYY含可选的 WHERE、GROUP BY 或 HAVING 子句的 SELECT INTO 语句YYY含公用表表达式的 SELECT INTO 语句YYY含 FETCH FIRST 子句的 SELECT INTO 语句YYY含隔离子句的 SELECT INTO 语句YYY含 LIMIT 和 OFFSET 子句的 SELECT INTO 语句PPPSET 变量语句YYYVALUES INTO 语句YYY
语言元素DB2DB2 WarehouseBig SQL备注搜索的 DELETE 语句YYP含隔离子句的 DELETE 语句YYP含 FETCH FIRST 子句的 DELETE 语句YYP含 OFFSET 子句的 DELETE 语句YYP含 ORDER BY 子句的 DELETE 语句YYP含单行 VALUES 子句的 INSERT 语句YYY含多行 VALUES 子句的 INSERT 语句YYY含全选的 INSERT 语句YYY含隔离子句的 INSERT 语句YYY使用行值表达式的 INSERT 语句YYY使用表引用输入的 MERGE 语句YYP含隔离子句的 MERGE 语句YYP含 IMMEDIATE 子句的 TRUNCATE 语句YYY搜索的 UPDATE 语句YYP含隔离子句的 UPDATE 语句YYP含 FETCH FIRST 子句的 UPDATE 语句YYP含 OFFSET 子句的 UPDATE 语句YYP含 ORDER BY 子句的 UPDATE 语句YYP
语言元素DB2DB2 WarehouseBig SQL备注ALLOCATE CURSOR 语句PPPDB2 仅在 SQL 过程中支持该语句。ASSOCIATE LOCATORS 语句PPPDB2 仅在 SQL 过程中支持该语句。CLOSE 语句YYYDECLARE CURSOR 语句(参见其他游标元素)YYY声明 INSENSITIVE SCROLL 游标PPPDB2 仅通过 CLI 或 JDBC 支持此功能。声明 SENSITIVE STATIC SCROLL 游标PPPDB2 仅通过 CLI 或 JDBC 支持此功能。声明 WITH HOLD 游标YYY声明 WITH RETURN 游标(隐式返回到调用方)YYY声明 WITH RETURN TO CALLER 游标YYY声明 WITH RETURN TO CLIENT 游标YYY位置确定的 DELETE 语句YYP不含游标朝向的 FETCH 语句(隐式 NEXT)YYY指定 FETCH SENSITIVE 或 FETCH INSENSITIVEPPP含 NEXT、PRIOR、FIRST、LAST、BEFORE、AFTER、CURRENT 或 RELATIVE 的 FETCH 语句PPPDB2 仅通过 CLI 或 JDBC 支持这些访存特性。含 ABSOLUTE 的 FETCH 语句PPPDB2 仅通过 CLI 或 JDBC 支持此访存特性。OPEN 语句YYY位置确定的 UPDATE 语句YYP
语言元素DB2DB2 WarehouseBig SQL备注包级别的隔离级别规范YYY语句级别的隔离级别规范YYYRR(SQL2011 标准中的 SERIALIZABLE)YYPRS(SQL2011 标准中的 REPEATABLE READ)YYPCS(SQL2011 标准中的 READ COMMITTED)YYPUR(SQL2011 标准中的 READ UNCOMMITTED)YYY含 USE AND KEEP EXCLUSIVE LOCKS 的隔离子句YYY含 USE AND KEEP SHAREDUPDATE LOCKS 的隔离子句YYYCOMMIT 语句YYYCONNECT 语句(每个事务 1 个站点)YYYCONNECT 语句(每个事务 2 个以上站点)(也称为两阶段落实)YYYDISCONNECT 语句YYYRELEASE 连接语句YYYRELEASE SAVEPOINT 语句YYY工作语句的 ROLLBACK 单元YYYROLLBACK TO SAVEPOINT 语句YYYSAVEPOINT 语句 – 非嵌套YYYSAVEPOINT 语句 – 嵌套YYYSET CONNECTION 语句YYY
语言元素DB2DB2 WarehouseBig SQL备注复合语句(动态)YYY不含 USING 子句的 DESCRIBE 输出语句YYYDESCRIBE INPUT 语句YYYEXECUTE 语句YYY指定一个变量的 EXECUTE IMMEDIATE 语句YYY指定一个表达式的 EXECUTE IMMEDIATE 语句YYY指定 FROM 变量的 PREPARE 语句YYY指定 FROM 表达式的 PREPARE 语句YYY指定游标选项的 PREPARE 语句(ATTRIBUTES 子句)PPPDB2 仅通过 CLI 或 JDBC 支持此功能。
语言元素DB2DB2 WarehouseBig SQL备注SQL 过程中的控制语句YYYSQL 标量函数中的控制语句YYYSQL 表函数中的控制语句YYYSQL 触发器中的控制语句YYY赋值语句YYYCASE 语句YYY复合语句YYY嵌套的非原子复合语句YYY在复合语句中声明的常量YYYFOR 语句YYY针对 ROW_COUNT 语句的 GET DIAGNOSTICSYYY针对 RETURN_STATUS 语句的 GET DIAGNOSTICSYYY针对 MESSAGE_TEXT 语句的 GET DIAGNOSTICSYYYGOTO 语句YYYIF 语句YYYITERATE 语句YYYLEAVE 语句YYYLOOP 语句YYYPIPE 语句YYYREPEAT 语句YYYRESIGNAL 语句YYY来自 SQL 过程的 RETURN 语句YYY来自 SQL 函数的 RETURN 语句YYYSIGNAL 语句YYYWHILE 语句YYY
语言元素DB2DB2 WarehouseBig SQL备注允许在 SQL 程序中使用 DDL 语句YYY支持 DDL 事务语义YYY支持 30 字节列名称YYY支持 128 字节列名称YYY支持 128 字节对象名称YYYALTER FUNCTION 语句PPPALTER MASK 语句YYYALTER MODULE 语句YYYALTER PERMISSION 语句YYYALTER PROCEDURE 语句PPPALTER SEQUENCE 语句YYYALTER TABLE 语句(参见其他标有 ALTAB 的元素)YYYALTER COLUMN (ALTAB)PPPDROP COLUMN (ALTAB)YYYRENAME COLUMN (ALTAB)YYYATTACH 和 DETACH PARTITION (ALTAB)YYYACTIVATE NOT LOGGED (ALTAB)YYYALTER TRIGGER 语句YYYALTER TRUSTED CONTEXT 语句YYYALTER XSROBJECT 语句YYYCOMMENT 语句YYYCREATE ALIAS(表或视图)语句YYYCREATE ALIAS(模块)语句YYYCREATE ALIAS(序列)语句YYYCREATE 或 REPLACE ALIAS 语句YYYCREATE PUBLIC ALIAS(表或视图)语句YYYCREATE PUBLIC ALIAS(模块)语句YYYCREATE PUBLIC ALIAS(序列)语句YYYCREATE OR REPLACE PUBLIC ALIAS 语句YYYCREATE FUNCTION(外部标量)语句YYYCREATE OR REPLACE FUNCTION(外部标量)语句YYYCREATE FUNCTION(源)语句YYYCREATE FUNCTION(SQL 标量)语句YYYCREATE OR REPLACE FUNCTION(SQL 标量)语句YYYCREATE FUNCTION(外部表)语句YYYCREATE OR REPLACE FUNCTION(外部表)语句YYYCREATE FUNCTION(SQL 表)语句YYYCREATE OR REPLACE FUNCTION(SQL 表)语句YYYCREATE FUNCTION(SQL 行)语句YYYCREATE OR REPLACE FUNCTION(SQL 行)语句YYYCREATE FUNCTION(外部通用表)语句YYY含参数默认值的 CREATE FUNCTION 语句YYYCREATE FUNCTION(聚合接口)语句YYYCREATE OR REPLACE FUNCTION(聚合接口)语句YYYCREATE GLOBAL TEMPORARY TABLE 语句YYY作用于列列表的 CREATE INDEXYYP作用于列列表的 CREATE UNIQUE INDEXYYP作用于表达式的 CREATE INDEXYYY作用于 XMLPATTERN 的 CREATE INDEXYYYCREATE MASK 语句YYYCREATE 或 REPLACE MASK 语句YYYCREATE MODULE 语句YYYCREATE 或 REPLACE MODULE 语句YYYCREATE PERMISSION 语句YYYCREATE 或 REPLACE PERMISSION 语句YYYCREATE PROCEDURE(外部)语句YYYCREATE 或 REPLACE PROCEDURE(外部)语句YYYCREATE PROCEDURE (SQL) 语句YYYCREATE 或 REPLACE PROCEDURE (SQL) 语句YYY使用不同数量的参数对现有名称执行的 CREATE PROCEDURE 语句YYY含参数默认值的 CREATE PROCEDURE 语句YYY含 AUTONOMOUS 的 CREATE PROCEDURE 语句YYYCREATE SCHEMAYYY使用列定义的 CREATE TABLE 语句(参见其他标有 CRTAB 的元素)YYYCREATE TABLE 语句 LIKE 其他表/视图(参见其他标有 CRTAB 的元素)YYYCREATE TABLE 语句 LIKE 其他包含身份的表/视图(参见其他标有 CRTAB 的元素)YYYCREATE TABLE 语句 AS 查询(参见其他标有 CRTAB 的元素)YYYCHECK 约束子句(ALTAB、CRTAB)YYPCHECK 约束上的 NOT ENFORCED 子句(ALTAB、CRTAB)YYYDATA CAPTURE 子句(ALTAB、CRTAB)YYP不含指定值的 DEFAULT 子句(ALTAB、CRTAB、DGTTAB)YYY含指定值的 DEFAULT 子句(ALTAB、CRTAB、DGTTAB)YYYIMPLICITLY HIDDEN 子句(ALTAB、CRTAB)YYPVOLATILE 子句(ALTAB、CRTAB)YYP生成的列:IDENTITY 子句(ALTAB、CRTAB、DGTTAB)YYP生成的列:ROW CHANGE TIMESTAMP 子句(ALTAB、CRTAB)YYP生成的列:ROW BEGIN 或 ROW END 子句(ALTAB、CCRTAB)YYP生成的列:TRANSACTION START ID 子句(ALTAB、CCRTAB)YYP生成的列:确定性表达式(ALTAB、CCRTAB)PPPPRIMARY KEY 约束子句(ALTAB、CRTAB)YYPUNIQUE 约束子句(ALTAB、CRTAB)YYP为唯一约束自动生成索引(ALTAB、CRTAB)YYP参考的约束子句(ALTAB、CRTAB)YYP指定 ON DELETE 的 REFERENCES 子句(ALTAB、CRTAB)PPPDB2 不支持 ON DELETE SET DEFAULT。指定 ON UPDATE 的 REFERENCES 子句(ALTAB、CRTAB)YYP指定 NOT ENFORCED 子句的 REFERENCES 子句(ALTAB、CRTAB)YYY指定自我参考表格时无需使用 ALTER TABLEYYY函数从属子句(ALTAB、CRTAB)YYY刷新即时系统维护的 MQT(CRTAB、ALTAB)YYY刷新延迟系统维护的 MQT(CRTAB、ALTAB)YYY用户维护的 MQT(CRTAB、ALTAB)YYYPERIOD 子句(CRTAB、ALTAB)YYPCREATE EXTERNAL TABLE 语句–Y–CREATE ROLE 语句YYYCREATE SEQUENCE 语句YYYCREATE 或 REPLACE SEQUENCE 语句YYYCREATE TRIGGER 语句 – 表上的 BEFORE 或 AFTER 触发器YYYCREATE TRIGGER 语句 – 视图上的 INSTEAD OF 触发器YYYCREATE TRIGGER 语句 – 多个触发器事件YYYCREATE 或 REPLACE TRIGGER 语句YYYCREATE TRUSTED CONTEXT 语句YYY针对普通数组的 CREATE TYPE(数组)语句YYY针对关联数组的 CREATE TYPE(数组)语句YYYCREATE 或 REPLACE TYPE(数组)语句YYYCREATE TYPE(游标)语句YYYCREATE 或 REPLACE TYPE(游标)语句YYYCREATE TYPE(不重复)语句YYY含弱类型规则的 CREATE TYPE(不重复)语句YYYCREATE TYPE(行)语句YYYCREATE 或 REPLACE (行)语句YYYCREATE TYPE(结构化)语句YYYCREATE VARIABLE 语句PPPDB2 不支持基于数组类型的默认值。CREATE VARIABLE 语句 (CONSTANT)YYYCREATE VARIABLE 语句(基于游标-值-构造函数的默认值)YYYCREATE 或 REPLACE VARIABLE 语句PPP使用不含 CHECK OPTION 子句的全选的 CREATE VIEW 语句YYYCREATE VIEW WITH CASCADED CHECK OPTIONYYYCREATE VIEW WITH LOCAL CHECK OPTIONYYYCREATE VIEW WITH ROW MOVEMENTYYYCREATE 或 REPLACE VIEW 语句YYYDECLARE GLOBAL TEMPORARY TABLE 语句(参见其他标有 DGTTAB 的元素)YYYCREATE TEMPORARY TABLE(替代 DECLARE GLOBAL TEMPORARY TABLE)YYY含指定的 RESTRICT 或 CASCADE 行为的 DROP 语句PPPDROP ALIAS 语句YYYDROP FUNCTION 语句YYYDROP INDEX 语句YYYDROP MASK 语句YYYDROP MODULE 语句YYYDROP PACKAGE 语句YYYDROP PERMISSION 语句YYYDROP PROCEDURE 语句YYYDROP SCHEMA 语句PPPDB2 不支持 DROP SCHEMA CASCADE。DROP SEQUENCE 语句YYYDROP TABLE 语句YYYDROP TRIGGER 语句YYYDROP TYPE 语句YYYDROP VARIABLE 语句YYYDROP VIEW 语句YYYDROP XSROBJECT 语句YYYRENAME TABLE 语句PPPRENAME INDEX 语句YYY模糊处理用 SQL 编写的 SQL 对象YYY
语言元素DB2DB2 WarehouseBig SQL备注GRANT(函数特权)语句YYYGRANT(全局变量特权)语句YYYGRANT(模块特权)语句YYYGRANT(包特权)语句YYYGRANT(过程特权)语句YYYGRANT(角色)语句YYYGRANT(模式特权)语句YYYGRANT(序列特权)语句YYYGRANT(表特权)语句YYYGRANT(XSR 对象特权)语句YYYREVOKE(函数特权)语句YYYREVOKE(全局变量特权)语句YYYREVOKE(模块特权)语句YYYREVOKE(包特权)语句YYYREVOKE(过程特权)语句YYYREVOKE(角色)语句YYYREVOKE(模式特权)语句YYYREVOKE(序列特权)语句YYYREVOKE(表特权)语句YYYREVOKE(XSR 对象特权)语句YYYSET SESSION AUTHORIZATION 语句YYYTRANSFER OWNERSHIP 语句YYY
语言元素DB2DB2 WarehouseBig SQL备注BEGIN 和 END DECLARE SECTION 语句YYYDECLARE STATEMENT 语句PPP从 DB2 9.7 开始,仅在复合 SQL(已编译)语句中支持该语句。FREE LOCATOR 语句YYYINCLUDE 语句YYYLOCK TABLE 语句YYPREFRESH TABLE 语句YYYSET COMPILATION ENVIRONMENT 语句YYYSET CONNECTION 语句YYYSET CURRENT DECFLOAT ROUNDING MODE 语句PPPSET CURRENT DEFAULT TRANSFORM GROUP 语句YYYSET CURRENT DEGREE 语句YYYSET CURRENT EXPLAIN MODEYYYSET CURRENT EXPLAIN SNAPSHOT 语句YYYSET CURRENT FEDERATED ASYNCHRONY 语句YYYSET CURRENT IMPLICIT XMLPARSE OPTION 语句YYYSET CURRENT ISOLATION 语句YYYSET CURRENT LOCALE LC_MESSAGES 语句YYYSET CURRENT LOCALE LC_TIME 语句YYYSET CURRENT LOCK TIMEOUT 语句YYYSET CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION 语句YYYSET CURRENT MDC ROLLOUT MODE 语句YYYSET CURRENT OPTIMIZATION PROFILE 语句YYYSET CURRENT PACKAGE PATH 语句YYYSET CURRENT PACKAGESET 语句PPPSET CURRENT QUERY OPTIMIZATION 语句YYYSET CURRENT REFRESH AGE 语句YYYSET CURRENT SQL_CCFLAGS 语句YYYSET CURRENT TEMPORAL BUSINESS_TIME 语句YYYSET CURRENT TEMPORAL SYSTEM_TIME 语句YYYSET ENCRYPTION PASSWORD 语句YYYDB2 11.1 中已弃用。SET EVENT MONITOR STATE 语句YYYSET INTEGRITY 语句YYPSET PASSTHRU 语句YYYSET PATH 语句YYYSET ROLE 语句YYYSET SCHEMA 语句YYYSET SERVER OPTION 语句YYYSET SESSION AUTHORIZATION 语句YYYSET USAGE LIST STATE 语句YYYWHENEVER 语句YYY
语言元素DB2DB2 WarehouseBig SQL备注C 或 C++YYYCOBOLYYYFORTRANYYYJava (SQLJ)YYYPL/IYYYREXXYYY
语言元素DB2DB2 WarehouseBig SQL备注双点表示法PPP\\ 指数运算符PPP# 逐位异或运算符PPPGROUP BY SELECT 子句列PPP引用列别名的表达式PPPNZPLSQL 支持PPP使用 Netezza 语法的 CREATE TABLE ASYYYCREATE TEMP TABLE(DGTT 的替代语法)YYY
此列表不一定完整。选择的特性基于客户的感兴趣程度。可通过详细查阅产品的 SQL 语言参考手册,找到更多常用特性。
此列表不应作为任何 DB2 产品的特性和功能列表。由于不断在发布新功能,所以某个特性可能已存在于一个平台中,但在其他 DB2 平台上仍处于试运行阶段。由于客户和市场差异,不是所有平台都需要同时提供相同的特性。
本文翻译自: Develop portable data applications with common IBM SQL features(2017-09-14)