程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2008中SQL增強之Values新用途

SQL Server 2008中SQL增強之Values新用途

編輯:關於SqlServer

SQL Server 2008中新增功能:可以使用單個Insert命令插入多行。

vIEw plaincopy to clipboardprint?
 Create table Demo_Values  
(PKID int not null identity(1,1) primary key  
,DName Nvarchar(20) null  
,DCode NVarchar(30) null  
,DDate datetime null  
)  
go  
--this SQL is only for SQL Server 2008  
Insert into Demo_Values  
(DName,DCode,DDate)  
values  
('DemoA','AAA',GETDATE()),  
('DemoB','BBB',GETDATE()),  
('DemoC','CCC',GETDATE()),  
('DemoD','DDD',GETDATE()),  
('DemoE','EEE',GETDATE())  
--(5 row(s) affected) 
 Create table Demo_Values
(PKID int not null identity(1,1) primary key
,DName Nvarchar(20) null
,DCode NVarchar(30) null
,DDate datetime null
)
go
--this SQL is only for SQL Server 2008
Insert into Demo_Values
(DName,DCode,DDate)
values
('DemoA','AAA',GETDATE()),
('DemoB','BBB',GETDATE()),
('DemoC','CCC',GETDATE()),
('DemoD','DDD',GETDATE()),
('DemoE','EEE',GETDATE())
--(5 row(s) affected)


除了可以一次性插入多行,values還有更巧妙的用法,不使用永久表或臨時表而表示一個結果集,而且不需要函數或表變量。看下面的例子: 

vIEw plaincopy to clipboardprint?
--this SQL is only for SQL Server 2008  
select DName,DCode,DDate  
from  
(values  
('DemoA','AAA',GETDATE()),  
('DemoB','BBB',GETDATE()),  
('DemoC','CCC',GETDATE()),  
('DemoD','DDD',GETDATE()),  
('DemoE','EEE',GETDATE())  
)  
Demo_Values (DName,DCode,DDate)  
--(5 row(s) affected)  
/*  
DName    DCode    DDate  
DemoA    AAA    2010-10-12 20:37:45.500  
DemoB    BBB    2010-10-12 20:37:45.500  
DemoC    CCC    2010-10-12 20:37:45.500  
DemoD    DDD    2010-10-12 20:37:45.500  
DemoE    EEE    2010-10-12 20:37:45.500  
*/ 
--this SQL is only for SQL Server 2008
select DName,DCode,DDate
from
(values
('DemoA','AAA',GETDATE()),
('DemoB','BBB',GETDATE()),
('DemoC','CCC',GETDATE()),
('DemoD','DDD',GETDATE()),
('DemoE','EEE',GETDATE())
)
Demo_Values (DName,DCode,DDate)
--(5 row(s) affected)
/*
DName    DCode    DDate
DemoA    AAA    2010-10-12 20:37:45.500
DemoB    BBB    2010-10-12 20:37:45.500
DemoC    CCC    2010-10-12 20:37:45.500
DemoD    DDD    2010-10-12 20:37:45.500
DemoE    EEE    2010-10-12 20:37:45.500
*/
 

注意該語句的最後一行定義了“源”名稱和列名,其中列名用於select語句。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved