Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建sql表的副本_Sql_Sql Server - Fatal编程技术网

创建sql表的副本

创建sql表的副本,sql,sql-server,Sql,Sql Server,我需要一个查询来创建一个表,该表是完全相同的副本,但具有不同的表名,并且没有使用sql查询来自源表的任何数据 SQL Server管理工作室 对象浏览器 连接->您的服务器 数据库->选择数据库 桌子 右键单击您的表 将表脚本设置为->创建到->新建查询编辑器窗口 这可以帮助您: CREATE TABLE foo AS SELECT... 阅读更多对于MySQL,您可以调用SHOW CREATE TABLE\u name 它将显示一个CREATETABLE查询。只需更改该查询中的表名,就可以

我需要一个查询来创建一个表,该表是完全相同的副本,但具有不同的表名,并且没有使用sql查询来自源表的任何数据

  • 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子句:-)