创建sql表的副本
我需要一个查询来创建一个表,该表是完全相同的副本,但具有不同的表名,并且没有使用sql查询来自源表的任何数据创建sql表的副本,sql,sql-server,Sql,Sql Server,我需要一个查询来创建一个表,该表是完全相同的副本,但具有不同的表名,并且没有使用sql查询来自源表的任何数据 SQL Server管理工作室 对象浏览器 连接->您的服务器 数据库->选择数据库 桌子 右键单击您的表 将表脚本设置为->创建到->新建查询编辑器窗口 这可以帮助您: CREATE TABLE foo AS SELECT... 阅读更多对于MySQL,您可以调用SHOW CREATE TABLE\u name 它将显示一个CREATETABLE查询。只需更改该查询中的表名,就可以
- SQL Server管理工作室
- 对象浏览器
- 连接->您的服务器
- 数据库->选择数据库
- 桌子
- 右键单击您的表
- 将表脚本设置为->创建到->新建查询编辑器窗口
- 这可以帮助您:
CREATE TABLE foo AS SELECT...
阅读更多对于MySQL,您可以调用SHOW CREATE TABLE\u name 它将显示一个CREATETABLE查询。只需更改该查询中的表名,就可以了 如果您使用Postgresql:
CREATE TABLE LIKE table_name
你可以试试这个
SELECT * INTO Table_Copy
FROM Table
where 1=2
它将创建一个具有相同结构的空表
select * into newtablename from sourcetablename
go
truncate newtablename
go
这将产生一个精确的副本,但它也会复制您首先使用truncate语句删除的数据。Jonathan拥有它(UPPOUTED),您可能应该使用它,因为它更便于移植。我通常使用类似的方法:
SELECT TOP 0 * INTO [New_Table] FROM [Old_Table]
我认为这更好地表达了您正在做的事情,但我喜欢Jonathan的,因为“Top0”是特定于SQL Server的,所以他的更便于移植
SELECT * INTO Table_Copy
FROM Table
where 1=2
当我尝试在没有任何数据的情况下创建表的副本时,这非常有效
SELECT * INTO Table_Copy
FROM Table
这也将创建一个带有数据的复制副本。将表格创建为select*from
它将创建一个具有不同名称的新表,但将所有现有数据从旧表复制到新表。在postgres中,您可以使用INHERITS或LIKE关键字复制表(仅复制表的结构) 创建新的表客户机(如客户机)强> 或 创建表客户端\u new()继承(客户端) 使用继承会在新的子表及其父表之间创建持久关系。对父表的模式修改通常也会传播到子表,默认情况下,子表的数据包含在父表的扫描中。
LIKE子句指定一个表,新表从中自动复制所有列名、它们的数据类型以及它们的NOTNULL约束。与继承不同,新表和原始表在创建完成后完全解耦。对原始表所做的更改将不会应用于新表,并且无法在原始表的扫描中包含新表的数据。是否将创建表作为选择Oracle ism?您可以在上面发布的参考中找到它。很多RDB都有这个功能。我不认为你会得到FK、索引或类似的东西,但是如果你只需要一个quick-n-dirty,这就可以了。不幸的是,他标记了
sql server
。不幸的是,他标记了sql server
。这是可行的,但必须在新表中插入所有数据,然后将其删除。使用top 0
或不产生结果的where子句可以避免大量无用的工作……没错!为什么我没有想到Where 1=2子句:-)