本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2012 中通过仅复制列定义或者复制定义和数据将列从一个表复制到另一个表。
本主题内容
开始之前:
限制和局限
安全性
若要复制列,请使用:
SQL Server Management Studio
Transact-SQL
开始之前
限制和局限
当将具有别名数据类型的列从一个数据库复制到另一个数据库时,别名数据类型在目标数据库中可能不可用。 在这种情况下,将为该列分配该数据库中可用的匹配度最高的基数据类型。
安全性
权限
需要对表的 ALTER 权限。
[返回页首]
使用 SQL Server Management Studio
将列定义从一个表复制到另一个表
右键单击相应表,然后单击**“设计”**,打开要复制的列所在的表以及要复制到的表。
单击包含要复制的列的表的选项卡,然后选择这些列。
在**“编辑”菜单中,单击“复制”**。
单击要将列复制到的表的选项卡。
选择要排在插入列之后的列,然后在**“编辑”菜单中,单击“粘贴”**。
将数据从一个表复制到另一个表
按照以上关于复制列定义的说明执行操作。
注意
在开始将数据从一个表复制到另一个表之前,请确保目标列中的数据类型与源列的数据类型相兼容。
在对象资源管理器中,右键单击**“视图”节点,然后单击“新建视图”**。
在**“查询设计器”菜单中,指向“更改类型”,再单击“插入结果”**。
在**“选择插入结果的目标表”对话框中选择要将数据复制到的表,再单击“确定”**。
如果在同一个表中复制行,则可将源表作为目标表添加。
注意
查询设计器无法事先确定可以更新哪些表和视图。 因此,“选择插入结果的目标表”对话框中的表列表将显示正在查询的数据连接中的所有可用表和视图,甚至显示不能将行复制到其中的表和视图。
右键单击“关系图”窗格的主题,然后在快捷菜单中单击**“将表添加到关系图”**。
在**“添加表”对话框中选择要从中复制数据的各个表,单击“添加”,再单击“关闭”**。
这些表将以缩略形式显示在“关系图”窗格中。
在缩略表中,选中要从中复制数据的所有列的复选框。
在“条件”窗格的**“追加”**列中,为每个目标列选择要从其中复制数据的列。
通过在“条件”窗格中输入搜索条件来指定要复制的行。 有关详细信息,请参阅指定搜索条件 (Visual Database Tools)。
如果未指定搜索条件,则源表中的所有行都会复制到目标表中。
若要复制摘要信息,请指定**“分组依据”**选项。 有关详细信息,请参阅汇总或聚合表中所有行的值 (Visual Database Tools)。
单击**“执行 SQL”**按钮以运行该查询。
在执行“插入结果”查询时,不会在“结果”窗格中报告任何结果。 但是,会显示一条消息,指出已复制的行数。
[返回页首]
使用 Transact-SQL
将列定义从一个表复制到另一个表
- 不能通过使用 Transact-SQL 语句将单独列从一个表复制到另一个现有表。 但是,您可以通过使用 SELECT INTO 在默认文件组中创建一个新表,并将来自查询的结果行插入该表中。 有关详细信息,请参阅 INTO 子句 (Transact-SQL)。
将数据从一个表复制到另一个表
在**“对象资源管理器”**中,连接到数据库引擎的实例。
在标准菜单栏上,单击**“新建查询”**。
将以下示例复制并粘贴到查询窗口中,然后单击**“执行”**。
USE AdventureWorks2012; GO CREATE TABLE dbo.EmployeeSales ( BusinessEntityID varchar(11) NOT NULL, SalesYTD money NOT NULL ); GO INSERT INTO dbo.EmployeeSales SELECT BusinessEntityID, SalesYTD FROM Sales.SalesPerson; GO
[返回页首]