`
terry0501
  • 浏览: 313705 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

sql 复制表结构,复制数据行

    博客分类:
  • sql
 
阅读更多

sql复制表定义及复制数据行

一、复制表定义

假设我们有一个数据表Person,有Id,FirstName,LastName,Weight,Height5个列,表结构可以参考这一篇。现在我们想创建一个新表叫People,表结构和Person一模一样,也就是列名和数据类型都一致。我们可以通过复制Person表的结构而不是复制表中的记录来创建这个表,贴一下sql代码:

1、Sql Server

sql server使用带有不返回任何行的查询和INTO子句:

1
2
3
4
5
6
7
8
9
10
SELECT
    Id,
    FirstName,
    LastName,
    Weight,
    Height
    INTO People
FROM
    Person(NOLOCK)
    WHERE 1=0

当使用INTO命令来复制表时,查询所返回的行都会加入新生成的表People中(复制表数据见下二),除非我们在WHERE子句条件中定义一个恒为false的条件,即1=0。

还要注意,Person表的Id是自增的主键,但是复制后新建的People表的Id没有变成主键。

2、Oracle、MySql和PostgreSQL

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE People
AS
SELECT
Id,
FirstName,
LastName,
Weight,
Height
FROM
Person
WHERE 1=0

查询部分以及查询条件和Sql Server蛮像的。

3、DB2

1
CREATE TABLE People LIKE Person

SELECT什么的都是浮云,就是这么简洁。从这条语句可以认为IBM完胜MS,Oracle…….吗?

 

二、从一个表向另外的表复制行

还是以Person和People表来举例,假如Person和People表都已经存在,把Person表中Id小于10的人复制到People表中:

1、表结构完全相同

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
INSERT INTO People
(
    --Id,
    FirstName,
    LastName,
    Weight,
    Height
)
SELECT
    --Id,
    FirstName,
    LastName,
    Weight,
    Height
FROM
    Person
    WHERE Id<10

INSERT INTO语句指定要插入的列,SELECT列的顺序和插入处写的列顺序要一致,如果没有指定则插入所有列。

当注意,当我把主键也选择的时候,Sql Server提示“当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'People' 中的标识列插入显式值”。

2、People表少一列

假设People少一列Weight,那么通过下面的sql语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
INSERT INTO People
(
    --Id,
    FirstName,
    LastName,
    --Weight,
    Height
)
SELECT
    --Id,
    FirstName,
    LastName,
    --Weight,
    Height
FROM
    Person
    WHERE Id<10

插入数据正常。

3、People表多一列

假设People表多一列,用身高减去体重,叫做HWDiff,身高和体重是float类型,现在把HWDiff设计成int型,然后执行复制:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
INSERT INTO People
(
    --Id,
    FirstName,
    LastName,
    Weight,
    Height,
    HWDiff
)
SELECT
    --Id,
    FirstName,
    LastName,
    Weight,
    Height,
    Height-Weight AS HWDiff
FROM
    Person
    WHERE Id<10

测试也通过了,这是因为float和int类型可以相互转换(之所以说是相互转换,您可以试着将Person表的Height和Weight设计成int型,而People表的对应列设计成float型,然后再复制试试看,都可以的),当然如果把HWDiff直接设计成float型,那最好了。从2和3可以说明,我们向目标表中只要插入的列和选择的列完全一致,表结构不完全一样也可以正常复制。

分享到:
评论

相关推荐

    sql-server中复制数据库某一个表到另一个数据库中

    复制表结构通常不包含数据,主要目的是在目标数据库中创建与源数据库中相同的表结构。可以使用以下T-SQL命令: ```sql CREATE TABLE [目标数据库名称].[目标架构].[目标表名称] AS SELECT * FROM [源数据库名称]....

    sql复制表结构和数据的实现方法

    在SQL Server中,复制表结构和数据是一项常见的操作,它涉及到数据库管理和数据迁移。下面将详细解释几种使用SELECT ... INTO语句实现复制的方法,并提供相关的示例。 1. **全表备份** 当你需要完全复制一张表的...

    SqlServer表结构转Oracle

    "SqlServer表结构转Oracle"是一个专注于帮助用户将SQL Server的表结构转换为Oracle数据库系统的工具。这个工具的主要目标是确保在不丢失任何重要信息的情况下,实现数据库结构的平滑过渡。 首先,我们来详细了解SQL...

    sql server 从一个数据库复制一张表到另外一个数据库

    使用链接服务器复制表 使用链接服务器,可以使用以下语句来查询远程数据库中的表: select * from ITSX.数据库名.dbo.表名 也可以使用以下语句将远程数据库中的表复制到当前数据库中: select * into 表 from ...

    Oracle复制表数据的两种用法

    在本文中,我们将深入探讨Oracle复制表数据的两种主要方法,并结合提供的“测试插入.sql”文件,理解其在实际操作中的应用。 首先,让我们了解第一种方法:使用`INSERT INTO SELECT`语句。这种方法适用于将一个表的...

    MySQL复制表结构问题的解决方法

    在MySQL数据库管理中,复制表结构是一项常见的任务,特别是在数据迁移、备份或创建测试环境时。本篇文章将深入探讨MySQL复制表结构时遇到的问题及解决方案。 首先,我们要明确复制表结构并不涉及表中的数据,只是...

    Mysql复制表结构、表数据的方法

    MySQL是一种广泛使用的开源关系型数据库管理系统,其复制表结构和数据是常见的数据库管理任务,尤其在数据迁移、备份和恢复时。以下是对标题和描述中所述知识点的详细说明: 1. **复制表结构及数据到新表**: 使用...

    Mssql 复制表结构 表数据.docx

    在SQL Server(Mssql)中,复制表结构和表数据是一项常见的操作,特别是在数据库管理和迁移过程中。以下将详细解释如何实现这些操作。 1. **复制表结构:** - 如果你需要复制一个表的结构,但不需要任何数据,可以...

    oracle复制表结构和复制表数据语句分享

    1. 复制表结构及其数据: 代码如下:create table table_name_new as select * from table_name_old2. 只复制表结构: 代码如下:create table table_name_new as select * from table_name_old where 1=2;或者: 代码...

    SqlServer 数据库表格的复制(数据和表结构同时复制)

    * 可以同时复制数据和表结构,减少手动创建表结构和插入数据的工作量。 * 可以选择要复制的表和字段,提高数据的安全性和一致性。 结语 在本篇文章中,我们详细介绍了如何使用 SqlServer 数据库管理系统中的导出...

    sqlserver表数据插入到oracle表中的一种实现方式(表结构相同)

    表结构的创建比较简单,但是表的数据量太大,一时也想不到怎么把sqlserver表数据复制到oracle中,于是请教公司主管,用存储过程实现可以查询出所有数据的insert脚本,在oracle库中创建好表,直接把sqlserver中的...

    SQLServer数据库表中数据导出成SQL语句工具

    通过这种方式,我们可以轻松地在新的数据库环境中重建相同的表结构。 2. **数据导出**:对于数据部分,工具会遍历每个表的所有记录,并生成一系列INSERT INTO语句。每条语句对应表中的一行数据,包含了所有列的值。...

    SQL 数据表的复制

    在 SQL 中,复制数据表主要通过 `SELECT INTO` 语句来实现。该语句可以从一个或多个源表中选择数据,并将其插入到新创建的目标表中。其基本语法结构如下: ```sql SELECT column_name(s) INTO new_table FROM ...

    sql server从一个数据库复制表到另一个数据库的方法

    2. **连接到源数据库**: 在对象资源管理器中,右键点击你要复制表所在的源数据库,确保你已经正确连接到SQL Server实例。 3. **生成脚本任务**:右键点击源数据库,选择“任务”,然后点击“生成脚本”。这将启动...

    net代码生成器+SQL表结构、数据导出工具

    "net代码生成器+SQL表结构、数据导出工具"正是这样一款实用的软件,它能帮助开发者快速生成MVC和Factory模式的代码,同时具备SQL表结构导出和数据导出的功能。本文将详细介绍这款工具的各个功能点,以期为.NET开发者...

    SQL导出数据表及结构

    "SQL导出数据表及结构"是一个功能强大的工具,它允许用户将数据库中的数据和表结构转换为SQL脚本,以便于备份、迁移或在不同环境中重新创建数据库。这个工具特别适用于SQL Server 2000和SQL Server 2005这两个版本。...

    SQL语句复制表

    #### 一、SQL复制表的基本概念 在数据库管理过程中,经常需要将一个表的数据完全复制到另一个表或者从一个数据库中的表移动到另一个数据库中去。这样的操作通常被称为“复制表”。通过SQL语句可以高效地实现这一功能...

    MySQL复制表结构和内容到另一张表中的SQL语句

    在MySQL数据库管理中,复制表结构和内容是常见的操作,特别是在数据迁移、备份或测试环境中。以下是几种不同的SQL语句,用于实现这一目的: 1. **复制表结构及数据到新表** ```sql CREATE TABLE 新表 SELECT * ...

    数据库快速备份表结构

    `SHOW CREATE TABLE`则会显示创建特定表所需的完整SQL语句,便于复制表结构。 除了手动编写SQL语句,还可以利用各种数据库管理工具,如MySQL Workbench、phpMyAdmin或SQL Server Management Studio,这些工具通常...

    把sql表里面的数据导出到word里面

    总结,将SQL表中的数据导出到Word文档涉及数据库连接、SQL查询、数据处理和文档生成等多个步骤。掌握这些技能有助于提高工作效率,尤其是在需要定期生成报告或分析数据时。通过使用适当的编程语言和库,可以自动化这...

Global site tag (gtag.js) - Google Analytics