mssql 脚本select into 用法简介


项目中我们需要将分区表转换为普通表,我们首先将历史表修改名称,然后采用select *into tablename from [历史表名],
但后续我们在使用系统中,发现系统变的很慢,而且新插入数据时,默认值都消失了,避免后续 select into 滥用,
下文将讲述select into的用法



一、select * into简介


1.1 select *into 功能

将一个表中指定的数据复制至一张新建表中

1.2 select *into 语法简介

select [列名1],[列名2],[列名3],... into [新表名] from [源表名] where [条件]


注意事项:
1 会根据 select 后的列名创建新表并插入数据
[源表名]中的 约束 默认值 索引 触发器 主键 外键 都不会在 新表 中创建
2 采用select into复制新表,[源表名]中的标识列会被复制至新表中,源表中列非空属性not null,也会被一同复制至新表中
3 select * into 无日志功能,无法回退



1.3 select *into应用场景

select *into 主要应用于快速创建数据备份,其它场景谨慎使用此操作



二、select * into举例说明

create table A(keyId int identity(1,1),info varchar(60) not null ,writeDate datetime default getdate())
insert into A (info)values(1)
select keyId,info,writeDate into B from A 
go

sp_help 'A' 
go
sp_help 'B' 
go
mssql_select_into举例

mssql_select_into举例


sp_help A可以查看表A存在默认值属性


sp_help B可以查看表B未复制默认值约束