Tag: 微软SQL Server 2008之行值构造器
RSS
热门关键字:  如何赚钱  赚钱  网站赚钱  网站推广  机遇
当前位置 :| 网上赚钱>网络编程>Mssql>

微软SQL Server 2008之行值构造器

来源: 作者:cyw 时间:2008-07-05

相信大家都知道怎样使用数据操作语言(DML)对SQL Server表的数据进行插入、删除和更新等处理。有时候,我们需要用INSERT语句进行插入的数据实在是多得让人头疼,有很多传统但繁琐的方法可以用来插入大批量数据,不过SQL Server 2008提供了一种能够简化数据插入过程的新方法。本文将为大家简单介绍这些用来插入数据的方法之间的差异,其中包括SQL Server 2008提供的新方法——行值构造器(Row Value Constructor)。

我们向表插入数据的传统方法有三个,介绍如下:

方法一

假设我们有一个名为MyTestDB的数据库,其中有一个名为MyTest1的表,数据库和表的创建过程如下:

USE [master]
GO
IF EXISTS (SELECT name FROM sys.databases
WHERE name = N'MyTestDB')
DROP DATABASE [MyTestDB]
GO
Create database MyTestDB
Go
Use [MyTestDB]
Go
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[MyTest1]')
AND type in (N'U'))
DROP TABLE [dbo].[MyTest1]
GO
USE [MyTestDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MyTest1](
[Id] [int] NULL,
[Fname] [varchar](100) NULL,
[Lname] [varchar](100) NULL,
[salary] [money] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO


现在我们用传统的ANSI插入语句向上表添加5行数据,这里需要用到带VALUE从句的INSERT SQL语句来插入数据,脚本如下:

insert into MyTest1 (id ,fname ,lname , salary) values (1 , 'John' , 'Smith' , 150000.00)

insert into MyTest1 (id ,fname ,lname , salary) values (2 , 'Hillary' , 'Swank' , 250000.00)

insert into MyTest1 (id ,fname ,lname , salary) values (3 , 'Elisa' , 'Smith' , 120000.00)

insert into MyTest1 (id ,fname ,lname , salary) values (4 , 'Liz' , 'Carleno' , 151000.00)

insert into MyTest1 (id ,fname ,lname , salary) values (5 , 'Tony' , 'Mcnamara' , 150300.00)

执行结果如下:

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

方法二

假设我们在上述的MyTestDB数据库中有表MyTest2,如下:

USE [MyTestDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyTest2]')

AND type in (N'U'))
DROP TABLE [dbo].[MyTest2]
GO
CREATE TABLE [dbo].[MyTest2](
[Id] [int] NULL,
[Fname] [varchar](100) NULL,
[Lname] [varchar](100) NULL,
[salary] [money] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

下面我们再用另外一种传统的插入方法同样添加5行数据,也就是使用带SELECT从句的INSERT SQL语句,脚本如下:

insert into MyTest2 select 1 , 'John' , 'Smith' , 150000.00

insert into MyTest2 select 2 , 'Hillary' , 'Swank' , 250000.00

insert into MyTest2 select 3 , 'Elisa' , 'Smith' , 120000.00

insert into MyTest2 select 4 , 'Liz' , 'Carleno' , 151000.00

insert into MyTest2 select 5 , 'Tony' , 'Mcnamara' , 150300.00

执行结果如下:

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

方法三

同样的,我们再假设上述的MyTestDB数据库中有表MyTest3,如下:

USE [MyTestDB]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyTest3]')

AND type in (N'U'))
DROP TABLE [dbo].[MyTest3]
GO
USE [MyTestDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MyTest3](
[Id] [int] NULL,
[Fname] [varchar](100) NULL,
[Lname] [varchar](100) NULL,
[salary] [money] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

下面我们用第三种传统的插入方法同样添加5行数据,这里使用的是带SELECT从句和UNION从句的INSERT SQL语句,脚本如下:

insert into MyTest3

select 1 , 'John' , 'Smith' , 150000.00

union select 2 , 'Hillary' , 'Swank' , 250000.00

union select 3 , 'Elisa' , 'Smith' , 120000.00

union select 4 , 'Liz' , 'Carleno' , 151000.00

union select 5 , 'Tony' , 'Mcnamara' , 150300.00

执行结果如下:

(5 row(s) affected)

方法四

最后一种方法,需要插入数据的对象是MyTestDB数据库中的表MyTest4,如下:

USE [MyTestDB]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyTest4]')

AND type in (N'U'))
DROP TABLE [dbo].[MyTest4]
GO
USE [MyTestDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[MyTest4](
[Id] [int] NULL,
[Fname] [varchar](100) NULL,
[Lname] [varchar](100) NULL,
[salary] [money] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO

现在我们要用到SQL Server 2008中提供的新方法——行值构造器的插入SQL语句为上述表插入5行数据,这种方法可以在一个INSERT语句中一次性插入多行数据,脚本如下:

insert into MyTest4 (id ,fname ,lname , salary) values


(1 , 'John' , 'Smith' , 150000.00),

(2 , 'Hillary' , 'Swank' , 250000.00),

(3 , 'Elisa' , 'Smith' , 120000.00),

(4 , 'Liz' , 'Carleno' , 151000.00),

(5 , 'Tony' , 'Mcnamara' , 150300.00)

执行结果如下:

(5 row(s) affected)


上一篇:微软数据平台开发与SQL Server 2008
下一篇:SQL Server 2008 数据加载创世界记录

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册

微软SQL Server 2008之行值构造器


手机冲Q币 Q币充值 QQ靓号 手机挂QQ 春药 QQ会员 QQ业务 催情药 QQ千里眼 看电影 热血江湖 移动QQ 七彩谷 情趣内衣 超级QQ QQ号码 开通黄钻 性具 QQ等级 内衣 QQ加油站 QQ空间 性保健 壮阳药 买书网 性冷淡 自慰器具 QQ短信超人 性无能 性器具 如何壮阳 阴茎增长 PCDANDAN 7位靓号 自慰棒 情趣内衣 成人性具 补肾 问道 挣QQ币 性用品 性保键品 欢爱谷 桔色 性之谷 早泄 阳痿 内裤 增大 丝袜 丁字裤 性生活用品



网站IPC证备案中 QQ客户中心 itzzz.net