|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQLAB创始人之一的的女儿也叫My。rowcount的用法:
rowcount的感化就是用来限制前面的sql在前往指定的行数以后便中断处置,好比上面的示例,
setrowcount10
select*from表A
如许的查询只会前往表A中的前10条数据。它和"selecttop10*from表A"的感化一样。注重一点,setrowcount的设置会在全部会话中无效。好比上面的sql示例:
setrowcount10
select*from表A
go
select*from表B
表A和表B都只会前往前10条数据。
要作废setrowcount的限制,只需设置setrowcount0就能够了。
从下面的示例来看,仿佛rowcount没有多年夜的用途,限定查询了局的数据,我们利用top就能够了,并且还不必忧虑假如健忘作废rowcount的设置而对前面的sql的影响。但鄙人面的情形下,rowcount的设置就会给我们带来很年夜的便利哦。
我们都晓得selecttop前面不克不及加参数,只能利用一个详细的int范例的数字。假如我们想完成top前面跟参数的功效,就只要机关sql字符串,然后利用exec来实行了。好比:
declare@nint
declare@sqlnvarchar(1000)
set@n=10
set@sql=selecttop+cast(@nasvarchar(10))+*from表A
exec(@sql)
先不说下面语句中exec的功能,单从sql的可读性下去看就很不友爱。但假如我们利用rowcount来办理,就显的很文雅了,由于setrowcount前面是可使用参数的。示比方下:
declare@nint
set@n=10
setrowcount@n
select*from表A
注重:setrowcount的限制对修正,删除一样无效。好比上面的示例:
setrowcount10
update表asetqty=10whereid<100
如许,下面语句最多只会修正表a中id<100的前10条数据(假定id<100的数据数目年夜于10)
删除也是一样
setrowcount10
deletefrom表a
如许,下面的语句最多只会删除表a中前10条数据。
@@Rowcount的用法
@@Rowcount与Rowcount看起来很像,只相差了两个@,但它们的功效是纷歧样的,@@Rowcount次要是前往前次sql语句所影响的数据行数,好比:
selecttop2*from表A
select@@Rowcount
假如表A中的数据量年夜于或即是2,那末select@@Rowcount就会前往2,假如只要1条或0条数据,那末select@@Rowcount就会前往1大概0。
注重,不要把@@Rowcount了解为只前往查询的了局数目,删除,修正,新增等语句,也会准确的前往@@Rowcount值。好比:
update表Asetgid=awheregid=a
select@@Rowcount
假如表A中存在gid=a的数据,那末select@@Rowcount就会前往它所修正数据的行数,假如不存在gid=a的数据,那末select@@Rowcount就会前往0,删除与新增都是一样。
那末,哪些中央我们会用到@@Rowcount呢?
1、大概我们见到@@Rowcount身影最多的中央是触发器中,好的触发器,一样平常城市在最后面加上if@@rowcount=0return语句,好比:
createtriggerti_tableaontableaafterupdate
as
if@@rowcount=0return
……
如许,假如tablea被修正的数据行数为0,那末触发器ti_tablea就会间接加入,而不必实行前面的代码了。
2、第二个大概用到的中央就是我们可使用@@rowcount来作递回或轮回。好比上面示例:
declare@nint
set@n=1
select*fromclient_goodswhereid=@n
while@@rowcount>0
begin
set@n=@n+1
select*fromclient_goodswhereid=@n
end
这个示例是先查询client_goods中是不是有id=1的数据,假如有,再查询是不是有id=2的数据,一向查下往,直到id没有一连为止。固然人人在看这个示例的时分不要思索这个示例的意义,它只是申明了@@rowcount能够作为轮回前提来用。
rowcount与@@rowcount的别的用法,接待人人在批评中增补。mysqld进程在一个写入当中被杀死;计算机的意外关闭(例如,如果计算机掉电);一个硬件错误。 |
|