一、复制表结构

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

1、Sql Server

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

SELECT
Id,
FirstName,
LastName,
Weight,
Height
INTO People
FROM
Person(NOLOCK)
WHERE 1=0

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

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

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

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

1、表结构完全相同

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' 中的标识列插入显式值”。

最新文章

  1. mysqldump和xtrabackup备份原理实现说明
  2. 20145320《Java程序设计》第4周学习总结
  3. BZOJ3098 Hash Killer II
  4. PAT 解题报告 1052. Linked List Sorting (25)
  5. DOM之兄弟节点
  6. 聊聊并发(八)——Fork/Join框架介绍
  7. C语言基础(不断更新)
  8. centos下cp -r 命令可拷贝文件夹
  9. 【转】【iOS】导航栏那些事儿
  10. 如何快速方便的输出向量vector容器中不重复的内容
  11. SQL Server存储过程同时返回分页结果集和总数
  12. ignite学习笔记
  13. jQuary学习の五のAJAX
  14. 【转】python f-string
  15. Confluence 6 Windows 中以服务方式自动重启的原因
  16. 转sql server新增、修改字段语句(整理)
  17. poj2185 kmp求最小覆盖矩阵,好题!
  18. c#从基础学起string.Join(&quot;,&quot;, keys.ToArray())
  19. 剑指OFFER例题——从尾到头打印链表
  20. rect用法

热门文章

  1. kubernetes rabbitmq 集群安装配置
  2. Mysql之正则匹配
  3. 字符串的最小最大表示法O(n)
  4. 自制Linux映像和发行版Robomind
  5. Activiti工作流引擎数据库表结构
  6. javascript 面向对象 new 关键字 原型链 构造函数
  7. DNSmasq安装配置
  8. web.xml listener配置
  9. iOS开发进阶 - 自定义UICollectionViewLayout实现瀑布流布局
  10. windows使用Pandoc将Markdown转换为PDF文件