数据库操作

转自:http://www.cnblogs.com/huakai/archive/2009/11/10/1599642.html

 

 

从表中随即取出10条记录:

 

select top 10 * from dbo.Products order by newid()

 

 

复制表:不知道此处的where 1<>1是什么意思,但是第一句是把数据和结构一起复制到新表中,而第二句只是把表结构复制到新表中,数据并没有复制过去。

(注意:user3和user4是自动新建的表,不是数据库中已经存在的表)

 

select * into user3 from user1   --(所影响的行数为 3 行)
select * into user4 from user1 where 1<>1 --(所影响的行数为 0 行)

 

把表user1中的数据复制到user4中,注意,这里user4是数据库中已经存在的表,这个语句不会自己新建表。

 

insert into user4 select * from user1

 

 

存储过程(store procedue):

存储过程只在创造时进行编译,以后每次执行存储过程都不需要在重新编译,而一般的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

当对数据库进行复杂操作时,如对多个表进行Update,Insert,Query,Delete时,可将此复杂操作用存储过程封装起来,与数据库提供的事务处理结合一起使用。

 

游标(cursor):

从结果集中逐一地读取一条记录

游标操作有4个基本步骤:声明游标,打开游标,提取数据,关闭游标。

 


declare my_cursor cursor scroll dynamic
for

select UserName from user2
open my_cursor  --打开游标

declare @myname nvarchar(50)
fetch next from my_cursor into @myname  --读取第一行数据

while (@@fetch_status=0--循环控制游标活动
begin 
print 'My Name:'+@myname

fetch next from my_cursor into @myname --在循环体内部读取其余行数据
end
close my_cursor  --关闭游标
deallocate my_cursor --释放游标

 

scroll 表示可随意移动游标指针,否则游标只能向前移动

dynamic 表示可以读写游标,否则游标为只读

游标的使用可能导致并发性能降低,并可能导致不必要的锁定或堵塞,因此尽量使用只读游标。

 

SQL Server中,局部变量以@开头,全局变量以@@开头。

 

触发器(Trigger):

触发器是一种特殊类型的存储过程,它在指定表中的数据发生变化时自动执行,可以以insert,update或delete语句作为触发条件,触发器可以在这些语句执行之前或执行之后自动执行。

 


create trigger my_trigger on user2 --触发器名称,触发表
for insert,update --触发条件
as
declare --声明变量
@UserID int(4)
@UserName nvarchar(50
)
select @UserID=UserID,@UserName=
UserName

if@UserName='bb'

--以下执行省略

 

 

连接池:

在Web应该系统中,每一次数据访问请求都必须经历建立数据库连接,打开数据库,存取数据和关闭数据库连接等步骤,打开与关闭数据库都是比较耗时的。为此,ASP.NET自动将数据库连接存放在连接池中。连接池可以大幅度提供程序的性能和效率,用户不必等待建立全新的数据库连接过程,而是直接利用现成的数据库连接。

 

你可能感兴趣的:(数据库)