SELECT INTO语句不向调用者返回结果集,而是创建一个包含查询结果集的新表。通过SELECT INTO创建的新表沿用查询结果集的列名称、数据类型、可空性以及IDENTITY属性。但不复制源的约束、索引、触发器。如若需要沿用源的索引、约束和触发器,那么必须在执行完SELECT INO语句后再添加。
如果你的目的只是得到源的空副本,SELECT INTO是个很好的选择。你不需要编写CREATE TABLE语句。
SELECT INTO使用方法
set nocount on; use tempdb; go if OBJECT_ID('dbo.MyOrders') is not null drop table dbo.MyOrders; go select * into dbo.MyOrders from Northwind.dbo.Orders where 1=2
Northwind数据库的下载和安装,请看这篇文章:northwind数据库下载、安装教程
以上sql语句复制了源表Northwind.dbo.Orders列名称、数据类型、可空性以及IDENTITY属性,那么如果我仅仅只需要列名称、数据类型、可空性,不需要IDENTITY属性,该怎么写SELECT INTO呢?
set nocount on; use tempdb; go if OBJECT_ID('dbo.MyOrders') is not null drop table dbo.MyOrders; go select OrderID+0 as OrderID,CustomerID,EmployeeID,OrderDate,RequiredDate,ShippedDate,ShipVia,Freight,ShipName,ShipAddress,ShipCity,ShipRegion,ShipPostalCode,ShipCountry into dbo.MyOrders from Northwind.dbo.Orders where 1=2
使语句OrderID+0 as OrderID就不会向列中复制IDENTITY属性了。