编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

SQL Server SELECT INTO详解

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属性了。

未经允许不得转载: 技术文章 » 数据库 » SQL Server SELECT INTO详解