提供7*24专业Sybase数据库远程及现场技术支持,Sybase ASE及Sybase SQL Anywhere数据库修复服务,
请联系电话: (微信),QQ: 289965371!
We supply technical support for Sybase ASE and Sybase SQL Anywhere, also have many years of experience in recovering data from damanged Sybase devices.
Please contact us:
Phone:
Wechat: 13811580958
QQ: 289965371 联系我们获取数据库技术支持!
Email: 289965371@qq.com
扫描下方微信,联系我们:
扫描雨翰数据恢复官方微信获取专业数据库恢复服务

 

随着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数据库技术问题需要咨询,请联系我!

  QQ :289965371 联系我们获取数据库技术支持!
  Email:

以下官方手册为SAP IQ 16.0 SP03中文版:

  1. SAP Sybase IQ 简介
  2. 新功能摘要
  3. IQ 发行公告(linux)
  4. IQ 快速入门(unix)
  5. 安装和配置指南(linux)
  6. 管理:备份、恢复和数据恢复
  7. 管理:数据库
  8. SAP Sybase IQ 错误消息
  9. 管理:全球化
  10. IQ 许可选项指南
  11. 管理:装载管理
  12. IQ 迁移
  13. 管理:Multiplex
  14. 性能和调优指南
  15. IQ 编程
  16. 参考:构件块、表和过程
  17. 参考:语句和选项
  18. 管理:内存行级版本控制
  19. 管理:空间数据
  20. IQ 非结构化数据分析
  21. 用户定义的函数
  22. 管理:用户管理和安全
  23. 实用程序指南

 


< 上一个 | 内容 | 下一步 >

FROM 子句

指定 SELECT 语句中涉及的数据库表或视图。 快速链接:

转至参数 (第 315 页) 转至示例 (第 318 页) 转至用法 (第 319 页) 转至标准 (第 320 页) 转至权限 (第 320 页)


语法

image

... FROM table-expression [,...]


table-expression - (back to Syntax)

image


table-name

| view-name

| procedure-name

| common-table-expression

| (subquery) [[ AS ] derived-table-name [ column_name, ...) ]]

| derived-table

| join-expression

| ( table-expression , ... )

| openstring-expression

| apply-expression

| contains-expression

| dml-derived-table


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)

image


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

参数

(返回顶部) (第 313 页)


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

的两个不同实例。

image

SELECT * FROM T, my_proc(TABLE(SELECT T.Z, T.X FROM T) OVER(PARTITION BY T.Z));

表参数化函数 (TPF) 示例 - 此查询阐释了有效的 FROM 子句。

image

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 列。

image

注意: 只能在 SQL 语句的 FROM 子句中引用表 UDF

image

PARTITION BY – 在逻辑上指定执行引擎如何执行函数调用。执行引擎必须针 对每个分区调用函数,该函数在每次调用时必须处理整个分区。

PARTITION BY 子句还将指定如何对输入数据进行分区以便每次函数调用都会恰 好处理一个分区的数据。函数的调用次数必须等于分区的数量。对于 TPF,可在 运行时通过服务器与 UDF 之间的动态协商建立并行机制特性。如果可以针对 N 个 输入分区并行执行 TPF,则可对函数进行 M 次实例化 (M <=N)。每个函数实例化 都可以多次调用,每次调用恰好消耗一个分区。

只能为 PARTITION BY expression-list PARTITION BY ANY 子句指定一个 TABLE 输入参数。对于所有其它 TABLE 输入参数,必须显式或隐式指定 PARTITION BY NONE 子句。


image

注意: 执行引擎可按任意分区顺序调用函数,并且假定无论分区顺序如何,函数

都会返回相同的结果集。不能将分区拆分为两次函数调用。

image

ORDER BY – 指定每个分区中的输入数据预期由执行引擎按照 expression-list 进 行排序。UDF 预期每个分区都具备这一物理属性。如果只存在一个分区,那么所 有输入数据将按照 ORDER BY 的指定进行排序。可以为任意 TABLE 输入参数指 定包含 PARTITION BY NONE 或不包含 PARTITION BY 子句的 ORDER BY 子句。

derived-table – 可以在 FROM 子句中提供 SELECT 语句来代替表名或视图名。以 这种方式使用的 SELECT 语句称为派生表,并且必须为其提供一个别名。例如, 以下语句包含一个派生表 MyDerivedTable,它按照 UnitPrice Products 表中的产 品进行排序。

image

SELECT TOP 3 *

FROM ( SELECT Description, Quantity,

UnitPrice,

RANK() OVER ( ORDER BY UnitPrice ASC )

AS Rank

FROM Products ) AS MyDerivedTable ORDER BY Rank;

join-expressionjoin-operatorjoin-type join-type 关键字包括:

关键字

描述

CROSS JOIN

返回两个源表的笛卡尔乘积(矢量积)

NATURAL JOIN

比较两个表中所有对应的同名列是否相同(特殊等值连接;列的长 度和数据类型都相同)

KEY JOIN

将第一个表的外键值限制为与第二个表的主键值相等

INNER JOIN

丢弃结果表中所有未在两个表中都具备对应行的行

LEFT OUTER JOIN

保留左表中的不匹配行,但丢弃右表中的不匹配行

RIGHT OUTER JOIN

保留右表中的不匹配行,但丢弃左表中的不匹配行

FULL OUTER JOIN

保留左表和右表中的不匹配行


不要混淆 FROM 子句中的逗号方式连接和关键字方式连接。可以使用两种方式编 写同一查询,每种方式使用上述两种连接方式中的其中一种。最好使用 ANSI 语 法关键字方式连接。

以下查询使用逗号方式连接:

image

SELECT *

FROM Products pr, SalesOrders so, SalesOrderItems si WHERE pr.ProductID = so.ProductID

AND pr.ProductID = si.ProductID;

同一查询可以使用更可取的关键字方式连接:


image

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 语句(INSERTUPDATE DELETE)用作查 询的 FROM 子句中的表表达式。


示例

(返回顶部) (第 313 页)

示例 1 – 以下是有效的 FROM 子句:

image

...

FROM Employees

...

...

FROM Employees NATURAL JOIN Departments

...

...

FROM Customers

KEY JOIN SalesOrders

KEY JOIN SalesOrderItems KEY JOIN Products

...


示例 2 – 以下查询说明如何在查询中使用派生表:

image

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 ) WHERE number_of_orders > 3


用法

(返回顶部) (第 313 页)

SELECT 语句需要用一个表列表来指定该语句要使用的表。

image

注意: 虽然此说明针对的是表,但它同样适用于视图(除非另外说明)。

image

FROM 表列表创建由所有指定表中的所有列组成的结果集。组件表中行的所有组合最 初都在结果集中,但 JOIN 条件和/WHERE 条件通常会减少组合数。

其他用户拥有的表可以通过指定 userid 来限定。缺省情况下,如果未指定用户 ID, 则找到的是由当前用户所属的角色拥有的表。

相关名用于为表赋予一个仅供 SQL 语句使用的临时名称。当引用必须由表名限定的 列,但表名很长不方便键入时,相关名颇为有用。在同一查询中多次引用同一表时, 也有必要使用相关名来区分各个表的实例。如果未指定相关名,则表名将在当前语句 中用作相关名。

如果表表达式中的同一个表两次使用相同的相关名,该表按仅列出一次处理。例如, 在以下语句中:

image

SELECT *

FROM SalesOrders

KEY JOIN SalesOrderItems, SalesOrders

KEY JOIN Employees

SalesOrders 表的两个实例按一个实例处理,因此等效于:

image

SELECT *

FROM SalesOrderItems KEY JOIN SalesOrders KEY JOIN Employees

与之相反,在以下语句中,Person 表因具有两个不同的相关名 HUSBAND WIFE

而被视为两个实例进行处理。

image

SELECT *

FROM Person HUSBAND, Person WIFE

连接列需要相似的数据类型来获得最优性能。


性能注意事项 – 在优化程序启用的情况下,SAP Sybase IQ 允许在 FROM 子句中使用

16 64 个表,具体视查询而定;不过,如果在非常复杂的查询的 FROM 子句中使用

16 18 个以上的表,则性能可能会受到影响。

image

注意: 如果省略 FROM 子句,或者查询中的所有表都在 SYSTEM dbspace 中,则 查询将由 SQL Anywhere 而非 SAP Sybase IQ 处理且行为可能不同,特别是关于语 法和语义限制以及选项设置的影响方面。

如果您的查询不需要 FROM 子句,则可以通过添加 FROM iq_dummy 子句强制由 SAP Sybase IQ 处理查询,其中 iq_dummy 是在数据库中创建的包含一行和一列的表。

image


标准

(返回顶部) (第 313 页)

• SQL - 符合 ISO/ANSI SQL 标准。

• SAP Sybase 数据库产品 - 某些 Adaptive Server 版本不支持 JOIN 子句。这样就必须 改用 WHERE 子句构建连接。


权限

(返回顶部) (第 313 页) 必须连接到数据库。

另请参见

• DELETE 语句 (第 258 页)

• SELECT 语句 (第 443 页)




--------------------------------------华丽的分割线-------------------------------------------------------------------------

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)上提取数据的非常规恢复工具
  1. 适用于所有的SQL Anywhere版本    包括:5.x,6.x,7.x,8.x,9.x,10.x,11.x,12.x,16.x,17.x
  2. 适用于所有的UltraLite版本
  3. 能够恢复出来表结构和数据
  4. 能够恢复自定义数据类型
  5. 能够恢复存储过程等对象的语法
  6. 能够导出到目标数据库
  7. 能够导出到SQL文件并生成导入脚本
  8. 支持多种字符集,包括:cp850、cp936、gb18030、utf8等
  9. 能够恢复未加密或者简单加密类型的数据
  10. 简单易用
  11. 限制:不支持AES加密的数据文件
请参考:研发成功了从Sybase SQL Anywhere的DB文件上恢复数据的工具
            SQL Anywhere数据库非常规恢复工具ReadASADB使用介绍

Sybase SQL Anywhere数据库恢复工具ReadASADB适用场景

各种误操作:

  1. 误截断表(truncate table)
  2. 误删除表(drop table)
  3. 错误的where条件误删数据
  4. 误删除db或log文件
  5. 误删除表中的字段

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的主要功能:

  1. 被勒索病毒加密数据文件及备份文件情况下的恢复;
  2. 系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏的备份文件情况下的恢复;
  3. 因断电、硬盘坏道等造成数据库文件损坏情况下的恢复;
  4. delete数据恢复、误update数据恢复、误删除表(drop)恢复、误truncate表恢复 等;
  5. 各种Sybase内部系统表损坏、索引错误的修复;
  6. master数据库损坏而无法正常运行情况下的恢复;
  7. Sybase数据库被标记为可疑,不可用等情况的恢复;
  8. Sybase数据库中数据文件内部出现坏块情况下的恢复;
  9. Sybase数据库无数据文件但有日志文件的情况下的恢复;
  10. Sybase数据库只有数据文件无任何日志文件的情况下的恢复;
  11. Sybase数据文件被误删除情况下的碎片提取恢复;
  12. 磁盘阵列上的Sybase数据库被误格式化情况下的数据库恢复;
  13. 数据库sysobjects等系统表损坏无法正常应用情况下的恢复;
  14. Sybase数据库还原数据库出现失败情况下的恢复;
  15. 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.x


-------------------------------------------------------------------------------------------

SQL Server数据库恢复工具SQLRescue:

一个不依赖数据库管理系统、直接从SQL Server数据库文件上提取数据的业内领先的恢复工具!
能够从损坏的SQL Server数据库文件(.mdf)上提取数据的非常规恢复工具。

SQL Server数据库恢复工具SQLRescue的主要功能:

  1. 系统崩溃只剩下数据文件的情况下的恢复,即无日志文件或者日志文件损坏情况下的恢复;
  2. 断电导致数据库文件损坏情况下的恢复;
  3. 硬盘坏道造成数据库损坏情况下的恢复;
  4. 数据文件内部存在坏页情况下的恢复;
  5. 企业管理器误删除数据表记录,管理软件误删除数据表记录的恢复;
  6. 并闩锁错误、格式化、误删除后导致软件不能使用的情况;
  7. 无法读取并闩锁页sysindexes失败情况下的修复;
  8. 数据文件被误删除情况下的碎片提取恢复;
  9. 系统表损坏、索引错误、误删除数据库表、删除记录的数据找回;
  10. master数据库损坏而无法正常运行情况下的恢复;
  11. 数据文件无法附加情况下的数据恢复;
  12. 数据库被标记为可疑,质疑,不可用等情况的恢复;
  13. 数据库sysobjects等系统表损坏情况下的恢复;
  14. 数据被误(drop、delete、truncate)删除表数据的恢复,误update后的数据恢复等;
  15. 还原时报一致性错误,错误823等情况下的数据恢复,各种错误提示的数据库文件修复;
  16. 数据库被误格式化等情况下的数据库恢复;
  17. 日志收缩造成数据库损坏情况下的恢复;
  18. 仅剩损坏的备份文件情况下的恢复。

SQL Server数据库恢复工具SQLRescue技术特点:

只要SQL Server数据库的数据文件存在,我们就有办法帮您从数据文件中找回重要数据。
  1. 从数据文件中直接恢复数据
  2. 不能附加时直接恢复数据并生成新的数据库
  3. 系统表损坏的数据库修复
  4. 快速修复SQL 823错误、连接中断错误

SQL Server数据库恢复工具SQLRescue支持的版本:

Microsoft SQL Server 7.0, 2000, 2005, 2008, 2008R2, 2012, 2014, 2016, 2017,2019。
+-------------------------------------华丽的分割线-------------------------------------------------------------------------