随着Sybase被完全整合到SAP下,Sybase原来的支持网站被SAP Support Portal取代。
只有购买了SAP服务的用户才能使用账号登录SAP Support Portal进行介质下载、补丁升级、报Incident等。
目前,原Sybase所有产品(包括:Adaptive Server Enterprise、Sybase IQ、Replication Server、PowerDesigner等)的官方手册仍然可以从https://infocenter.sybase.com/help/index.jsp进行浏览或下载。暂不清楚该网站https://infocenter.sybase.com/help/index.jsp何时会被完全迁移到SAP Support上!
Sybase官方手册英文版有html和pdf两种格式,而中文版手册只有pdf一种格式。为了国内Sybase用户更方便、快捷地搜索Sybase常见产品的官方手册内容,特将中文版Sybase官方手册转为html格式!
Sybase产品官方手册中文版的html格式所有内容的版权归SAP公司所有!本博客站长是Sybase数据库的铁杆粉丝!
如有Sybase数据库技术问题需要咨询,请联系我!
以下官方手册为SAP IQ 16.0 SP03中文版:
FROM 子句
指定 SELECT 语句中涉及的数据库表或视图。 快速链接:
转至参数 (第 171 页) 转至示例 (第 173 页) 转至用法 (第 174 页) 转至标准 (第 175 页) 转至权限 (第 175 页)
语法
... FROM table-expression [,...]
table-expression - (back to Syntax) table-name
| common-table-expression
| (subquery) [[ AS ] derived-table-name [ column_name, ...) ]]
| ( table-expression , ... )
table-name - (back to table-expression)
[ userid.] table-name ]
[ [ AS ] correlation-name ]
[ FORCE INDEX ( index-name ) ]
view-name - (back to table-expression)
[ userid.]view-name [ [ AS ] correlation-name ]
procedure-name - (back to table-expression)
[ owner, ] procedure-name ([ parameter, ...]) [ WITH(column-name datatype, )]
[ [ AS ] correlation-name ]
parameter - (back to procedure-name)
scalar-expression | table-parameter
table-parameter - (back to parameter)
TABLE ( select-statement) [ OVER ( table-parameter-over )]
table-parameter-over - (back to table-parameter)
[ PARTITION BY {ANY
| NONE| table-expression } ]
[ ORDER BY { expression | integer } [ ASC | DESC ] [, ...] ]
derived-table - (back to table-expression)
( select-statement )
[ AS ] correlation-name [ ( column-name, ... ) ]
join-expression - (back to table-expression)
table-expression join-operator table-expression
[ ON join-condition ]
join-operator - (back to join-expression)
[ KEY | NATURAL ] [ join-type ] JOIN | CROSS JOIN
join-type - (back to join-operator) INNER
| LEFT [ OUTER ]
| RIGHT [ OUTER ]
| FULL [ OUTER ]
openstring-expression - (back to table-expression)
OPENSTRING ( { FILE | VALUE } string-expression )
WITH ( rowset-schema )
[ OPTION ( scan-option ... ) ] [ AS ] correlation-name
apply-expression - (back to table-expression)
table-expression { CROSS | OUTER } APPLY table-expression
contains-expression - (back to table-expression)
{ table-name | view-name } CONTAINS
( column-name [,...], contains-query ) [ [ AS ] score-correlation-name ]
rowset-schema - (back to openstring-expression) column-schema-list
| TABLE [owner.]table-name [ ( column-list ) ]
column-schema-list - (back to rowset-schema)
{ column-name user-or-base-type | filler( ) } [ , ... ]
column-list - (back to rowset-schema)
{ column-name | filler( ) } [ , ... ]
scan-option - (back to openstring-expression) BYTE ORDER MARK { ON | OFF }
| COMMENTS INTRODUCED BY comment-prefix
| DELIMITED BY string
| ENCODING encoding
| ESCAPE CHARACTER character
| ESCAPES { ON | OFF }
| FORMAT { TEXT | BCP }
| HEXADECIMAL { ON | OFF }
| QUOTE string
| QUOTES { ON | OFF }
| ROW DELIMITED BY string
| SKIP integer
| STRIP { ON | OFF | LTRIM | RTRIM | BOTH }
contains-query - (back to contains-expression)
string
dml-derived-table - (back to table-expression)
( dml-statement ) REFERENCING ( [ table-version-names | NONE ] )
dml-statement - (back to dml-derived-table)
insert-statement update-statement delete-statement
table-version-names - (back to dml-derived-table)
OLD [ AS ] correlation-name [ FINAL [ AS ] correlation-name ]
| FINAL [ AS ] correlation-name
参数
(返回顶部) (第 168 页)
• table-name – 基表或临时表。其他用户拥有的表可以通过指定用户 ID 来限定。 缺省情况下,如果未指定用户 ID,则找到的是由当前用户所属的组拥有的表。
• view-name – 指定要在查询中包含的视图。同表一样,其他用户拥有的视图可以 通过指定用户 ID 来限定。缺省情况下,如果未指定用户 ID,找到的将是由当前 用户所属的组拥有的视图。尽管语法上允许在视图上使用表提示,但这些提示并 不起任何作用。
• procedure-name – 返回结果集的存储过程。此子句仅适用于 SELECT 语句的 FROM 子句。过程名后需要加括号,即使该过程没有参数。可指定 DEFAULT 替代可选 参数。
• parameter – 指定 scalar-parameter 或 table-parameter 子句。scalar-parameter 是有效 SQL 数据类型的任意对象。如果对象同样也是在 table-parameter 外部使用,则可 使用表、视图或公用 table-expression 名称指定该 table-parameter,并将其视为此对 象的新实例。
此查询阐释了有效的 FROM 子句,其中对同一个表 T 的两次引用可视为同一个表 T
的两个不同实例。
SELECT * FROM T, my_proc(TABLE(SELECT T.Z, T.X FROM T) OVER(PARTITION BY T.Z));
表参数化函数 (TPF) 示例 - 此查询阐释了有效的 FROM 子句。
SELECT * FROM R, SELECT * FROM my_udf(1);
SELECT * FROM my_tpf(1, TABLE(SELECT c1, c2 FROM t)) (my_proc(R.X, TABLE T OVER PARTITION BY T.X)) AS XX;
如果将子查询用于定义 TABLE 参数,则必须持续应用以下限制:
• table-parameter 子句的类型必须为 IN。
• PARTITION BY 或 ORDER BY 子句必须参考派生表的列和外部引用。 expression-list 中的表达式可以是一个整数 K,表示 TABLE 输入参数的第 K 列。
注意: 只能在 SQL 语句的 FROM 子句中引用表 UDF。
• PARTITION BY – 在逻辑上指定执行引擎如何执行函数调用。执行引擎必须针 对每个分区调用函数,该函数在每次调用时必须处理整个分区。
PARTITION BY 子句还将指定如何对输入数据进行分区以便每次函数调用都会恰 好处理一个分区的数据。函数的调用次数必须等于分区的数量。对于 TPF,可在 运行时通过服务器与 UDF 之间的动态协商建立并行机制特性。如果可以针对 N 个
输入分区并行执行 TPF,则可对函数进行 M 次实例化 (M <=N)。每个函数实例化 都可以多次调用,每次调用恰好消耗一个分区。
只能为 PARTITION BY expression-list 或 PARTITION BY ANY 子句指定一个 TABLE 输入参数。对于所有其它 TABLE 输入参数,必须显式或隐式指定 PARTITION BY NONE 子句。
注意: 执行引擎可按任意分区顺序调用函数,并且假定无论分区顺序如何,函数 都会返回相同的结果集。不能将分区拆分为两次函数调用。
• ORDER BY – 指定每个分区中的输入数据预期由执行引擎按照 expression-list 进 行排序。UDF 预期每个分区都具备这一物理属性。如果只存在一个分区,那么所 有输入数据将按照 ORDER BY 的指定进行排序。可以为任意 TABLE 输入参数指 定包含 PARTITION BY NONE 或不包含 PARTITION BY 子句的 ORDER BY 子句。
• derived-table – 可以在 FROM 子句中提供 SELECT 语句来代替表名或视图名。以 这种方式使用的 SELECT 语句称为派生表,并且必须为其提供一个别名。例如, 以下语句包含一个派生表 MyDerivedTable,它按照 UnitPrice 对 Products 表中的产 品进行排序。
SELECT TOP 3 *
FROM ( SELECT Description, Quantity,
UnitPrice,
RANK() OVER ( ORDER BY UnitPrice ASC )
AS Rank
FROM Products ) AS MyDerivedTable ORDER BY Rank;
• join-expression、join-operator、join-type – join-type 关键字包括:
关键字 |
描述 |
CROSS JOIN |
返回两个源表的笛卡尔乘积(矢量积) |
NATURAL JOIN |
比较两个表中所有对应的同名列是否相同(特殊等值连接;列的长 度和数据类型都相同) |
KEY JOIN |
将第一个表的外键值限制为与第二个表的主键值相等 |
INNER JOIN |
丢弃结果表中所有未在两个表中都具备对应行的行 |
LEFT OUTER JOIN |
保留左表中的不匹配行,但丢弃右表中的不匹配行 |
RIGHT OUTER JOIN |
保留右表中的不匹配行,但丢弃左表中的不匹配行 |
FULL OUTER JOIN |
保留左表和右表中的不匹配行 |
不要混淆 FROM 子句中的逗号方式连接和关键字方式连接。可以使用两种方式编 写同一查询,每种方式使用上述两种连接方式中的其中一种。最好使用 ANSI 语 法关键字方式连接。
以下查询使用逗号方式连接:
SELECT *
FROM Products pr, SalesOrders so, SalesOrderItems si WHERE pr.ProductID = so.ProductID
AND pr.ProductID = si.ProductID;
同一查询可以使用更可取的关键字方式连接:
SELECT *
FROM Products pr INNER JOIN SalesOrders so ON (pr.ProductID = so.ProductID)
INNER JOIN SalesOrderItems si
ON (pr.ProductID = si.ProductID);
ON 子句用于过滤内连接、左连接、右连接和完全连接的数据。交叉连接没有 ON 子句。在内连接中,ON 子句等效于 WHERE 子句。但在外连接中,ON 和 WHERE 子句有所区别。在外连接中,ON 子句用于过滤矢量积的行,然后将通过空值扩 展的不匹配行包含在结果中。WHERE 子句则可对通过外连接生成的匹配行和不 匹配行中的行都予以消除。务必确保所需的不匹配行不会被 WHERE 子句中的谓 词消除。
不能在外连接 ON 子句内使用子查询。
• openstring-expression – 指定 OPENSTRING 子句以便在文件或 BLOB 中进行查 询,此时将这些源的内容视作行的集合。这样做时,由于不是对已定义的结构(如 表或视图)进行查询,因此还需为将要生成的结果集指定有关文件或 BLOB 的模 式的信息。此子句适用于 SELECT 语句的 FROM 子句。UPDATE 或 DELETE 语 句不支持此子句。
• apply-expression – 此子句用于指定一个连接条件,即针对左侧 table-expression 的 每一行计算右侧的 table-expression。例如,可以使用 apply 表达式为表表达式中的 每一行计算函数、过程或派生表。
• contains-expression – 在表名后使用 CONTAINS 子句可对表进行过滤,从而仅返 回与 contains-query 所指定的全文查询相匹配的行。表的每个匹配行与分数列一起 返回,可以使用 score-correlation-name(如果已指定)引用此分数列。如果未指定 score-correlation-name,则使用缺省相关名 contains 来引用分数列。
• dml-derived-table – 支持将 DML 语句(INSERT、UPDATE 或 DELETE)用作查 询的 FROM 子句中的表表达式。
(返回顶部) (第 168 页)
• 示例 1 – 以下是有效的 FROM 子句:
...
FROM Employees
...
...
FROM Employees NATURAL JOIN Departments
...
...
FROM Customers
KEY JOIN SalesOrders
KEY JOIN SalesOrderItems KEY JOIN Products
...
• 示例 2 – 以下查询说明如何在查询中使用派生表:
SELECT Surname, GivenName, number_of_orders FROM Customers JOIN
( SELECT CustomerID, count(*) FROM SalesOrders
GROUP BY CustomerID )
AS sales_order_counts ( CustomerID,
number_of_orders ) ON ( Customers.ID = sales_order_counts.cust_id )
用法
(返回顶部) (第 168 页)
SELECT 语句需要用一个表列表来指定该语句要使用的表。
注意: 虽然此说明针对的是表,但它同样适用于视图(除非另外说明)。
FROM 表列表创建由所有指定表中的所有列组成的结果集。组件表中行的所有组合最 初都在结果集中,但 JOIN 条件和/或 WHERE 条件通常会减少组合数。
其他用户拥有的表可以通过指定 userid 来限定。缺省情况下,如果未指定用户 ID, 则找到的是由当前用户所属的角色拥有的表。
相关名用于为表赋予一个仅供 SQL 语句使用的临时名称。当引用必须由表名限定的 列,但表名很长不方便键入时,相关名颇为有用。在同一查询中多次引用同一表时, 也有必要使用相关名来区分各个表的实例。如果未指定相关名,则表名将在当前语句 中用作相关名。
如果表表达式中的同一个表两次使用相同的相关名,该表按仅列出一次处理。例如, 在以下语句中:
SELECT *
FROM SalesOrders
KEY JOIN SalesOrderItems, SalesOrders
KEY JOIN Employees
SalesOrders 表的两个实例按一个实例处理,因此等效于:
SELECT *
FROM SalesOrderItems KEY JOIN SalesOrders KEY JOIN Employees
与之相反,在以下语句中,Person 表因具有两个不同的相关名 HUSBAND 和 WIFE
而被视为两个实例进行处理。
SELECT *
FROM Person HUSBAND, Person WIFE
• 性能注意事项 – 在优化程序启用的情况下,SAP Sybase IQ 允许在 FROM 子句中使用
16 到 64 个表,具体视查询而定;不过,如果在非常复杂的查询的 FROM 子句中使用
16 到 18 个以上的表,则性能可能会受到影响。
注意: 如果省略 FROM 子句,或者查询中的所有表都在 SYSTEM dbspace 中,则 查询将由 SQL Anywhere 而非 SAP Sybase IQ 处理且行为可能不同,特别是关于语 法和语义限制以及选项设置的影响方面。
如果您的查询不需要 FROM 子句,则可以通过添加 FROM iq_dummy 子句强制由 SAP Sybase IQ 处理查询,其中 iq_dummy 是在数据库中创建的包含一行和一列的表。
(返回顶部) (第 168 页)
• SQL - 符合 ISO/ANSI SQL 标准。
• SAP Sybase 数据库产品 - 某些 Adaptive Server 版本不支持 JOIN 子句。这样就必须 改用 WHERE 子句构建连接。
(返回顶部) (第 168 页) 必须连接到数据库。
Sybase SQL Anywhere数据库恢复工具ReadASADB:
之前就已经研发成功了能够从Sybase SQL Anywhere的DB文件中恢复数据的工具: ReadASADB。此工具支持ASA v5.0, v6.0, v7.0, v8.0, v9.0, v10.0, v11.0, v12.0, v16.0, v17.0等版本。
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具。
恢复Sybase SQL Anywhere的工具在国内处于领先水平。
Sybase SQL Anywhere数据库恢复工具ReadASADB功能
能够从损坏的SQL Anywhere数据文件(.db)和UltraLite数据文件(.udb)上提取数据的非常规恢复工具
- 适用于所有的SQL Anywhere版本 包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x,16.x,17.x
- 适用于所有的UltraLite版本
- 能够恢复出来表结构和数据
- 能够恢复自定义数据类型
- 能够恢复存储过程等对象的语法
- 能够导出到目标数据库
- 能够导出到SQL文件并生成导入脚本
- 支持多种字符集,包括:cp850、cp936、gb18030、utf8等
- 能够恢复未加密或者简单加密类型的数据
- 简单易用
- 限制:不支持AES加密的数据文件
SQL Anywhere数据库非常规恢复工具ReadASADB使用介绍
Sybase SQL Anywhere数据库恢复工具ReadASADB适用场景
各种误操作:
- 误截断表(truncate table)
- 误删除表(drop table)
- 错误的where条件误删数据
- 误删除db或log文件
- 误删除表中的字段
Sybase SQL Anywhere数据库恢复工具ReadASADB的应用场景:
1.因为物理磁盘故障、操作系统、系统软件方面或者掉电等等原因导致的Sybase SQL Anywhere数据库无法打开的情况;
2.误操作,包括truncate table,drop table,不正确的where条件导致的误删除等;
Sybase SQL Anywhere无法打开时,比较常见的错误是:Assertion failed。
如:
1、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Checkpoint log: invalid bitmap page -- transaction rolled back
2、Internal database error *** ERROR *** Assertion failed:201819 (8.0.1.2600) Page number on page does not match page requested -- transaction rolled back
3、Internal database error *** ERROR *** Assertion failed:200502 (9.0.2.2451) Checksum failure on page 23 -- transaction rolled back
4、File is shorter than expected
5、Internal database error *** ERROR *** Assertion failed: 201116 Invalid free list index page found while processing checkpoint log -- transaction rolled back
6、*** ERROR *** Assertion failed: 51901 Page for requested record not a table page or record not present on page
7、*** ERROR *** Assertion failed: 201417 (7.0.4.3541) Invalid count or free space offset detected on a table page
8、Internal database error *** ERROR *** Assertion failed: 201425 (8.0.3.5594) Invalid count or free space offset detected on a free list page -- transaction rolled back.
9、Internal database error *** ERROR *** Assertion failed: 100702 (8.0.1.2600) Unable to modify indexes for a row referenced in rollback log -- transaction rolled back
Sybase ASE数据库恢复工具READSYBDEVICE:
一个不依赖数据库管理系统、直接从Sybase数据库设备文件上提取数据的业内领先的恢复工具!能够从损坏的Sybase ASE设备文件(.dat)上提取数据的非常规恢复工具。
Sybase ASE数据库恢复工具READSYBDEVICE的主要功能:
- 被勒索病毒加密数据文件及备份文件情况下的恢复;
- 系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏的备份文件情况下的恢复;
- 因断电、硬盘坏道等造成数据库文件损坏情况下的恢复;
- delete数据恢复、误update数据恢复、误删除表(drop)恢复、误truncate表恢复 等;
- 各种Sybase内部系统表损坏、索引错误的修复;
- master数据库损坏而无法正常运行情况下的恢复;
- Sybase数据库被标记为可疑,不可用等情况的恢复;
- Sybase数据库中数据文件内部出现坏块情况下的恢复;
- Sybase数据库无数据文件但有日志文件的情况下的恢复;
- Sybase数据库只有数据文件无任何日志文件的情况下的恢复;
- Sybase数据文件被误删除情况下的碎片提取恢复;
- 磁盘阵列上的Sybase数据库被误格式化情况下的数据库恢复;
- 数据库sysobjects等系统表损坏无法正常应用情况下的恢复;
- Sybase数据库还原数据库出现失败情况下的恢复;
- Sybase数据库只剩下损坏的备份文件情况下的恢复。
Sybase ASE数据库恢复工具READSYBDEVICE支持的版本:
Sybase ASE 11.0.x,11.5.x,11.9.x,12.0.x,12.5.x,15.0.x,15.5.x,15.7.x,16.0.xSQL Server数据库恢复工具SQLRescue:
一个不依赖数据库管理系统、直接从SQL Server数据库文件上提取数据的业内领先的恢复工具!能够从损坏的SQL Server数据库文件(.mdf)上提取数据的非常规恢复工具。
SQL Server数据库恢复工具SQLRescue的主要功能:
- 系统崩溃只剩下数据文件的情况下的恢复,即无日志文件或者日志文件损坏情况下的恢复;
- 断电导致数据库文件损坏情况下的恢复;
- 硬盘坏道造成数据库损坏情况下的恢复;
- 数据文件内部存在坏页情况下的恢复;
- 企业管理器误删除数据表记录,管理软件误删除数据表记录的恢复;
- 并闩锁错误、格式化、误删除后导致软件不能使用的情况;
- 无法读取并闩锁页sysindexes失败情况下的修复;
- 数据文件被误删除情况下的碎片提取恢复;
- 系统表损坏、索引错误、误删除数据库表、删除记录的数据找回;
- master数据库损坏而无法正常运行情况下的恢复;
- 数据文件无法附加情况下的数据恢复;
- 数据库被标记为可疑,质疑,不可用等情况的恢复;
- 数据库sysobjects等系统表损坏情况下的恢复;
- 数据被误(drop、delete、truncate)删除表数据的恢复,误update后的数据恢复等;
- 还原时报一致性错误,错误823等情况下的数据恢复,各种错误提示的数据库文件修复;
- 数据库被误格式化等情况下的数据库恢复;
- 日志收缩造成数据库损坏情况下的恢复;
- 仅剩损坏的备份文件情况下的恢复。
SQL Server数据库恢复工具SQLRescue技术特点:
只要SQL Server数据库的数据文件存在,我们就有办法帮您从数据文件中找回重要数据。- 从数据文件中直接恢复数据
- 不能附加时直接恢复数据并生成新的数据库
- 系统表损坏的数据库修复
- 快速修复SQL 823错误、连接中断错误
SQL Server数据库恢复工具SQLRescue支持的版本:
Microsoft SQL Server 7.0, 2000, 2005, 2008, 2008R2, 2012, 2014, 2016, 2017,2019。+-------------------------------------华丽的分割线-------------------------------------------------------------------------