处理“结果”窗格中的数据
当您运行了查询或视图后,结果将显示在结果窗格中。然后您就可以处理那些结果。例如,您可以添加和删除行、输入或更改数据和在大型结果集中轻松地导航。
以下信息可以帮助您避免问题并提高处理结果集的效率。
返回结果集
您可以从查询或视图返回结果,并且可以选择是仅打开结果窗格还是打开所有窗格。在两种情况下,查询或视图都将在“查询和视图设计器”中打开。但差别是:一个打开时仅显示结果窗格,另一个打开时则显示“选项”对话框中已选定的所有窗口。默认为所有四个窗格(“结果”、“SQL”、“关系图”和“条件”)。
若要更改查询或视图的设计,以使其返回不同的结果集或以不同的顺序返回记录,请参见设计查询和视图中列出的主题。
您还可以以两种方式决定是返回全部结果集还是返回部分结果集——在查询运行时停止查询或在查询运行前选择返回多少结果。
在结果窗格中导航
您可以使用结果窗格底部的导航栏在记录中快速导航。
系统提供转到第一个和最后一个记录、下一个和上一个记录以及特定记录的按钮。
若要转到特定的记录,请在导航栏的文本框中键入该行的编号,再按 Enter。
有关在“查询和视图设计器”中使用键盘快捷键的信息,请参见在查询和视图设计器中导航。
将更改提交到数据库
结果窗格使用开放式并发控制,因此网格显示的是数据库中的数据副本而不是完全实时的视图。这样,仅当您从行中移开后,更改才提交到数据库。这允许一个以上的用户同时使用数据库。如果存在冲突(例如,如果另一个用户更改了您更改的相同的行,并在您提交前将其提交给了数据库),您将收到一条消息,告诉您该冲突并提供解决方案。
使用 Esc 撤消更改
仅当更改尚未提交到数据库时,才能撤消更改。如果您未从记录中移开或者如果您从记录中移开后收到一条错误信息,指出该更改不会提交,则数据不会提交。如果该更改尚未提交,您可以使用 Esc 键将其撤消。
若要撤消一行中的所有更改,请移到该行中您未编辑过的某个单元格,然后按 Esc 键。
若要撤消对已编辑的特定单元格的更改,请移到该单元格,然后按 Esc 键。
在数据库中添加或删除数据
若要了解您的数据库设计是如何工作的,可能需要向数据库中添加示例数据。您可以将示例数据直接输入到结果窗格中,或者可以将示例数据从另一个程序(如“记事本”或 Excel)复制并粘贴到结果窗格中。
除了可以将行复制到结果窗格中,还可以添加新记录或者修改/删除现有记录。有关更多信息,请参见如何:在“结果”窗格中添加新行、如何:删除“结果”窗格中的行和如何:编辑“结果”窗格中的行。
关于使用 NULL 值和空单元格的提示
当您单击一个空行以添加新记录时,所有列的初始值都为 NULL。如果列允许 Null 值,可将其保持原样。
如果要用 Null 值替换非 Null 值,请键入大写字母的 NULL。结果窗格将对这个词应用斜体格式,以表示它将被识别为 Null 值而不是字符串。
若要键入字符串“null”,请键入这些字母(不包括引号)。只要有一个字母是小写字母,值就会被视为字符串而不是 Null 值。
具有二进制数据类型的列的值在默认情况下具有 NULL 值。这些值不能在结果窗格中更改。
若要输入空格而不是使用 Null 值,请删除现有的文本并从单元格中移出。
验证数据
“查询和视图设计器”可以根据列属性来验证某些数据类型。例如,如果您在具有 float 数据类型的列中输入“abc”,您将收到错误,并且该更改不会被提交到数据库。
当您处于结果窗格时,查看列的数据类型的最快捷的方法是,打开“关系图”窗格并悬停在表或表值对象中列的名称上。
说明 |
---|
结果窗格可以为文本数据类型显示的最大长度为 2,147,483,647。 |
使结果集与查询定义同步
当您处理查询或视图的结果时,可能出现“结果”窗格中的记录与查询定义不同步的情况。例如,如果您用查询搜索到表的五列中的四列,然后使用“关系图”窗格将第五列添加到查询的定义中,则第五列的数据不会自动添加到结果窗格中。若要使结果窗格反映出新的查询定义,必须再次运行查询。
您可以这样来判断:结果窗格的右下角出现一个警报图标和文本“查询已更改”,并且该图标在窗格的左上角反复出现。
协调多个用户所做的更改
当您处理查询或视图的结果时,记录可能被另一个也在处理数据库的用户所更改。
如果情况是这样,当您从发生冲突的单元格中移出时,会立即收到一个通知。然后您可以重写其他用户的更改,用其他用户的更改更新您的结果窗格或者仍然编辑您的结果窗格而不协调差异。如果您选择不协调差异,您的更改将不会提交到数据库。
结果窗格中的限制
不能更新的内容
这些提示也许可帮助您成功地处理结果窗格中的数据。
如果查询中包括的列来自多个表或视图,则查询不能更新。
仅当数据库约束允许时,视图才能更新。
存储过程返回的结果不能更新。
使用 GROUP BY、DISTINCT 或 TO XML 子句的查询或视图不能更新。
表值函数返回的结果只有在某些情况下才能更新。
由查询中的表达式产生的列中的数据。
提供程序没有成功转换的数据。
不能完全表示的内容
从数据库返回结果窗格的内容很大程度上受您所使用的数据源的提供程序控制。结果窗格并不总能转换所有数据库管理系统中的数据。在下面这些情况中就是这样。
二进制数据类型对于那些在结果窗格中工作的人来说通常没什么用,并且它们可能需要很长的下载时间。因此它们由 <Binary data> 或 Null 表示。
精度和小数位数并不能总被保留下来。例如,结果窗格支持的精度为 27。如果数据的数据类型的精度比这个值大,则数据可能会被截断或可能由 <Unable to read data> 表示。
如果您使用的不是 Microsoft SQL Server 数据库,您的提供程序可能不支持某些数据类型。如果您运行的查询包含不受支持的数据类型,则该列的值将返回为 <不支持的数据类型> 并且结果窗格将是只读的。如果您对没有主键的表运行查询并且有一个具有不受支持的数据类型的列(即使您所编写的查询的 SELECT 语句中未包含具有不受支持的数据类型的列),则结果窗格也将是只读的。