Access 2003完整教程:关于 SQL Server 数据库的“查询设计器”注意事项 (ADP)

注释本主题中的信息仅适用于 Microsoft Access 项目 (.adp)。

下面的说明将介绍可以使用的 Microsoft SQL Server 特定功能。

SQL Server 版本

“查询设计器”是专为支持 Microsoft SQL Server 2000 而设计的,但它也与早期版本兼容。当连接到 SQL Server 7.0 或 6.5 时,如果试图使用 SQL Server 2000 功能,则服务器将报告错误。

SQL 语法

当“查询设计器”在 SQL 窗格中建立一条语句时,只要有可能,它就使用特定于 SQL Server 的语法。例如,使用 SQL Server 所有者名称时,数据库对象(如表和视图)将受到限制。

也可以在 SQL 窗格中键入特定于 SQL Server 的语法。在某些情况下验证查询时,“查询设计器”会将特定于服务器的语法转换为 ANSI 标准语法。但是,更改后的查询将返回相同的结果。

标识数据库对象

当在 SQL 窗格中输入数据库对象(表、视图和列)的名称时,必须向 SQL Server 提供足够的信息以标识所需的对象。数据库对象是由唯一的名称标识的。该名称最多可由三部分(当数据库对象为表和视图时)或四部分(当数据库对象为列时)组成:

database.owner.table

database.owner.table.column

注释在 Microsoft SQL Server 7.0 或更高版本中,可以将同一服务器上不同数据库的表联接在一起。这种情况下,数据库对象的名称可由四部分组成。

通常,只需提供足够的限制符以唯一地标识所需的对象即可。例如,如果是在处理名为price的列(位于当前数据库的titles表中),只需按名称引用该列即可,如下列 SQL 语句所示:

SELECT price
FROM titles

但是,如果是在处理两个表(例如ordersproducts),且每个表都有一个名为price的列,则必须用相应的表名称来限制引用,如下列示例所示:

SELECT products.prod_id, orders.price
FROM orders INNER JOIN products ON
 orders.prod_id = products.prod_id

使用“图表”窗格和“网格”窗格处理当前数据库中的表时,“查询设计器”将自动为您添加所有者和表的限制符。如果您不是正在使用的表的所有者,则所有者的姓名将显示在表名称中。例如,如果是在处理pubs数据库,则所有者的姓名dbo将显示在表名之前。如果在同时处理多个表,“查询设计器”将在列名称上添加表名称限制符。

使用引号

SQL 中字面字符串的标准分隔符是单引号 (')。默认情况下,SQL Server 保留双引号 (") 作为数据库对象的分隔符。

为避免混淆,“查询设计器”总是将“引用的标识符”设为开启状态。这样,双引号将始终被解释为数据库对象分隔符。如果此前将“引用的标识符”设为关闭状态,“查询设计器”将覆盖用户的设置。

因此,在“查询设计器”中,请始终使用单引号将字面字符串括起来。只有在数据库对象分隔符需要时,才应使用双引号。

区分大小写

SQL Server 数据库中的文本信息可以保存为大写字母、小写字母或者是二者的组合。例如,姓可以显示为“SMITH”、“Smith”或“smith”。

数据库可以区分大小写,也可以不区分大小,这依赖于用户安装 SQL Server 的方式。如果数据库区分大小写,当搜索文本数据时,必须使用准确的大小写字母组合来构造搜索条件。例如,如果是查找某个名称(例如“Smith”),就不能使用这样的搜索条件:“=smith”或“=SMITH”。

此外,如果安装的服务器区分大小写,则必须用正确的大小写字符组合来提供数据库、所有者、表和列的名称。如果提供的名称大小写不能准确匹配,则 SQL Server 将返回“对象名称无效”的错误报告。

使用“图表”和“网格”窗格创建查询时,“查询设计器”将总是精确地反映出服务器的大小写相关性。但是,如果是在 SQL 窗格中输入查询, 则必须按照服务器解析名称的方式谨慎地匹配名称。

如果是使用不区分大小写选项来安装服务器,则可使用任意大小写字符的组合来输入数据库对象标识符和搜索条件。

提示

若要确定服务器是否区分大小写,请执行系统存储过程sp_server_info,然后检查第 18 行的内容。如果服务器安装时使用的是不区分大小写设置,则sort_order选项将设置为 nocase。

在“网格”窗格和 SQL 窗格中输入关键字

“查询设计器”支持在“网格”窗格和 SQL 窗格中使用某些 SQL Server 常量、变量和保留列名称。通常,可通过键盘输入这些值,但“网格”窗格并未在下拉列表中显示这些值。“查询设计器”所支持的名称的示例有:

输入货币值

在“网格”窗格中,若要指定将某个数据解释为金额,请在该值的前面加上 $ 或 $-(为负值时)。在表示千位数据时,请不要加上逗号或其他分隔符。这样设置值的格式可能会通知正在向其中输入值的“查询设计器”,将其视为moneysmallmoney类型列中的数据,或者与其中的数据进行比较。值将四舍五入最高到百分位上。

不论使用的是哪种货币,都可使用 $。当查询在数据表视图中显示金额列的值时,将不包含前缀 $。货币数据有可能在千位后加上逗号或其他分隔符,也有可能不加,这取决于 Windows“区域设置”对话框中的设置。

使用 GUID 数据类型

在 Microsoft SQL Server 7.0 中或更高版本,可以包含对 GUID 数据类型的引用,后者用于存储全局唯一标识符。在“更新”和“追加”查询中,可调用 NEWID(?) 函数来生成新的 GUID 型数据,并将其保存在数据库中。

创建“选择”查询时,GUID 类型列唯一允许使用的操作是基于等号的比较(=<>)。

输入空值

如果使用的是 Microsoft SQL Server 7.0 或更高版本,则在“更新”、“追加值”和“生成表”查询中可指定零长字符串,其方法是输入一对单引号,如下列“更新”查询所示:

UPDATE employee
SET minit = ''
WHERE emp_id = 'CFS88322F'

在 SQL Server 6.5 或更早的版本中,两个单引号被视为单个空格。例如,可以在下列表达式中使用引号:'abc' + '' + 'def'。最终生成的值将是'abc def'

包含优化器提示

如果直接在 SQL 窗格中输入查询,可添加优化器提示来指定特定索引的使用、锁定方法等。但是。在重新设置 SQL 窗格中的内容的格式时,“查询设计器”可能不会保留这些注释。优化器注释不是以图形方式表现的。

有关优化器提示的详细信息,请参阅 Microsoft SQL Server 文档。

从 ANSI 到 OEM 字符的转换

使用 SQL Server 时,含有扩展字符(即在 ASCII 值 32(空格)到 126 (~) 以外的字符,包括诸如“?”、“?”、“é”、“?”、和“?”等国际字符)的数据需要进行特殊处理。

结果集内扩展字符的表示方式与所用的代码页有关。代码页是计算机用于正确解析和显示数据而使用的字符集。代码页通常对应不同的平台和语言,且在全球应用程序中广泛使用。例如,ASCII 值 174 可能在一种代码页上显示为符号 "",而在另一种代码页上则显示为人字形字符。

通常,代码页分为 ANSI 代码页和 OEM 代码页。ANSI 代码页(其中大的 ASCII 值代表国际通用字符)用于 Windows 代码页。OEM 代码页(其中大的 ASCII 值代表画线和标点字符)则是为 MS-DOS 设计的。

当数据输入到 SQL Server 数据库中时,本地(客户)计算机上的 SQL Server 设置将指定数据是以 ANSI 格式还是以 OEM 格式存储。指定该选项是利用“从 ANSI 到 OEM 的自动转换”选项(位于“SQL Server 客户端配置”对话框中的“DB 库选项”选项卡上)来完成的。单击“开始”菜单上“程序”中 Microsoft SQL Server 7.0 或更高版本上的“客户端网络实用工具”,可访问上述对话框。(有关自动从 ANSI 向 OEM 转换的详细信息,请参阅 SQL Server 文档。)

默认情况下,该选项是为 SQL Server Client 选择的。它会将大 ASCII 字符值的数据转换为 OEM 字符。例如,如果设定 OEM 转换选项后,在列中输入姓名“Günther”,然后保存行,则在数据库中存储行时,字符“ü”将转换为另一个字符。

在“查询设计器”中创建的查询结果受扩展字符数据的存储格式和“SQL Server 客户端配置”对话框中 OEM 转换选项设置的影响。这取决于这些变化情况:

一般而言,如果数据是以 OEM 格式存储的,则应设置 OEM 转换选项,这样数据即可予以正确显示,从而可确保能搜索到该数据。如果数据是以 ANSI 格式存储的(即未转换为 OEM 格式),但已设置 OEM 转换选项,则数据将无法进行正确显示,且无法进行搜索。

若要确定数据的存储格式是否为 OEM 格式,可以使用查询来显示所用一个或多个表的内容。如果扩展字符显示不正确,则说明 OEM 转换设置可能存在错误。此时可关闭查询和 Access 项目,更改“SQL Server 客户端配置”对话框中的设置,然后再次打开 Access 项目和查询。

不受支持和部分受支持的查询类型

有些合法的 SQL Server 查询类型在“查询设计器”中无法以图形方式表示。您仍可在 SQL 窗格中输入这些查询类型,且它们也能正确执行。但在执行查询或更改窗格时,“查询设计器”将显示“查询定义不同”对话框并报告错误。

有些类型的 SQL Server 查询不受图形方式支持,其中包括:

上页:Access 2003完整教程:关于数据库对象的所有权 (ADP) 下页:Access 2003完整教程:关于“查询设计器”布局 (ADP)

Access 2003完整教程:关于 SQL Server 数据库的“查询设计器”注意事项 (ADP)

Access 2003完整教程:关于“查询设计器”布局 (ADP)Access 2003完整教程:在查询中选择与值不匹配的行 (ADP)
Access 2003完整教程:关于创建查询 (ADP)Access 2003完整教程:关于聚合函数 (ADP)
Access 2003完整教程:关于“查询设计器”中的汇总和分组行为 (ADP)Access 2003完整教程:关于不同的查询类型 (ADP)
Access 2003完整教程:关于“表设计器” (ADP)Access 2003完整教程:关于表关系 (ADP)
Access 2003完整教程:关于表 (ADP)Access 2003完整教程:联接的类型 (ADP)
Access 2003完整教程:关于使用具有国际化数据的“查询设计器” (ADP)Access 2003完整教程:使用通配符示例 (ADP)
Access 2003完整教程:关于多用户环境 (ADP)Access 2003完整教程:关于触发器 (ADP)
Access 2003完整教程:向所选列添加公式将会删除该列参与的所有索引和关系。Access 2003完整教程:向所选列添加公式将会删除该列作为外键参与的所有关系。
Access 2003完整教程:数据库中已经存在有同名的数据库图表。Access 2003完整教程:不能将表达式用作参数值。
Access 2003完整教程:在您处理该数据库图表时,其他用户也对其做了修改。Access 2003完整教程:索引视图中不能使用星号 (*)。
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号