⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 50241.htm

📁 一本很基础的SQL讲解
💻 HTM
字号:
<link href="./dzs_cs.css" rel="stylesheet" type="text/css" /><table width="96%" border="0" align="center" cellpadding="0" cellspacing="0">      <tr>        <td>&nbsp;</td>      </tr>      <tr>        <td height="24" align="center" valign="bottom" class="d_font3">如何对SQL Server数据表和数据库进行迭代操作</td>      </tr>      <tr>        <td height="3" bgcolor="#E3E3E3"></td>      </tr>      <tr>        <td>&nbsp;</td>      </tr>      <tr>        <td class="d_font4"><P>本文介绍了master数据库中两个非常有用但在SQL Server在线教科书中没有提到的存储过程。</P>
<P>这些系统过程对于处理以下任务非常方便,如判断使用的存储空间大小、行数、用户表索引等等。第一个过程sp_MSForEachDB对于感兴趣的服务器上的每个数据库执行三条命令。</P>
<P><A>◆</A>@command1:第一个执行的命令<BR><A>◆</A>@replacechar:用另一个占位赋替换“?”<BR><A>◆</A>@command2:第二个执行的命令<BR><A>◆</A>@command3:第三个执行的命令<BR><A>◆</A>@precommand:进入循环前执行的命令<BR><A>◆</A>@postcommand:循环结束后执行的命令</P>
<P>每个命令集(即使该集合只含有一条命令)作为一个批处理对每个数据库执行,所以当我们要将捕获的结果输出到文本而不是标准结果集表时,这将非常有用。</P>
<P>为了实现这一要求,选择菜单中的查询按钮|输出结果|输出到文本或者按快捷键[Ctrl]T。</P>
<P>下面的代码返回服务器上每个数据库中用户数据表的数目:</P>
<P>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code bgColor=#e6e6e6><PRE><P>exec sp_MSForEachDB<BR>@command1 = "use ? exec sp_SpaceUsed"</P></PRE></TD></TR></TBODY></TABLE></P>
<P>The abbreviated output looks like this:简短输出可能如下:</P>
<P>数据库名数据库大小未分配空间大小</P>
<P>--------------------- ------------------ <BR>master 5.25 MB1.26 MB</P>
<P>reserved data index_size unused<BR>------------------ ------------------ <BR>2808 KB 1144 KB 1080 KB 584 KB</P>
<P>第二个过程sp_MSForEachTable接受7个参数:</P>
<P><A>◆</A>@command1:第一个执行的命令<BR><A>◆</A>@replacechar:用另一个占位符替换“?”<BR><A>◆</A>@command2:第二个执行的命令<BR><A>◆</A>@command3:第三个执行的命令<BR><A>◆</A>@whereand:Where条件语句 (或 Order By 语句) <BR><A>◆</A>@precommand:进入循环前执行的命令 <BR><A>◆</A>@postcommand:循环结束后执行的命令</P>
<P>通过对要传递的参数命名,可以跳过传递空值的要求。当要执行的命令中含有一个问号时,参数@replacechar十分有用。@whereand参数的实现可以根据过滤器缩小输出的范围。</P>
<P>你还可以加入一个ORDER BY语句。下面的例子返回AdventureWorks数据库中每个数据表的行数,并按照数据表明对它们排序:</P>
<P>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code bgColor=#e6e6e6><PRE><P>exec sp_MSForEachTable<BR>@command1 = "Print '?'"<BR>, @command2 = "select count(*) from ?"<BR>, @whereand = "ORDER BY 1"</P></PRE></TD></TR></TBODY></TABLE></P>
<P>下面是一些输出结果:</P>
<P>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=2 width=400 align=center borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code bgColor=#e6e6e6><PRE><P>[HumanResources].[Department]<BR>-----------<BR>16</P><P>[HumanResources].[Employee]<BR>-----------<BR>290</P><P>[HumanResources].[EmployeeAddress]<BR>-----------<BR>290</P><P>[HumanResources].[EmployeeDepartmentHistory]<BR>-----------<BR>296</P></PRE></TD></TR></TBODY></TABLE></P>
<P>我喜欢通过模式和表名对数据表排序。</P>
<P><FONT size=4>【相关文章】</FONT></P>
<UL type=disc>
<LI><A href="http://database.51cto.com/art/200706/50114.htm" target=_blank><U><FONT color=blue>使用C#创建SQL Server的存储过程</FONT></U></A></LI></UL>
<UL type=disc>
<LI><A href="http://database.51cto.com/art/200706/49249.htm" target=_blank><U><FONT color=blue>SQL Server根据访问历史日志自动分析并提供优化策略</FONT></U></A></LI></UL>
<UL type=disc>
<LI><A href="http://database.51cto.com/art/200704/46420.htm" target=_blank><U><FONT color=blue>SQL Server如何访问sybase数据库的表</FONT></U></A></LI></UL>
<DIV align=right>【责任编辑:<A class=ln href="mailto:sunsj@51cto.com">火凤凰</A> TEL:(010)68476606-8007】</DIV></td>      </tr>      <tr>        <td class="d_font4">&nbsp;</td>      </tr>    </table>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -