📄 asp教程:数据库查询语言(1).htm
字号:
<TD width="20%">20000</TD>
<TD width="20%">20000</TD></TR></TBODY></TABLE>
<P><BR></P>
<P> 然后,我们再列出所有男性的姓名、销售目标和销售额 : </P>
<P> Select 姓名,销售目标,销售额 From sales Where 性别 =" 男 " </P>
<P> 结果如下 : <BR></P>
<TABLE cellSpacing=1 cellPadding=0 width="59%" border=1>
<TBODY>
<TR>
<TD width="16%" bgColor=#c0c0c0>姓名</TD>
<TD width="20%" bgColor=#c0c0c0>销售目标</TD>
<TD width="20%" bgColor=#c0c0c0>销售额</TD></TR>
<TR>
<TD width="16%">书生</TD>
<TD width="20%">8000</TD>
<TD width="20%">9000</TD></TR>
<TR>
<TD width="16%">吴冠军</TD>
<TD width="20%">10000</TD>
<TD width="20%">9999</TD></TR>
<TR>
<TD width="16%">雷鸣</TD>
<TD width="20%">8000</TD>
<TD width="20%">10000</TD></TR>
<TR>
<TD width="16%">顾一</TD>
<TD width="20%">9000</TD>
<TD width="20%">9800</TD></TR>
<TR>
<TD width="16%">熠天</TD>
<TD width="20%">20000</TD>
<TD width="20%">20000</TD></TR></TBODY></TABLE>
<P><BR></P> 接下来,我们做一个相对复杂的查询,列出销售额大于销售目标的所有男性的姓名、销售目标和销售额,并且按销售目标排序。
<BR> Select 姓名,销售目标,销售额 <BR> Form sales<BR> Where 销售额 > 销售目标
<BR> And 性别 =" 男 "<BR> Order By 销售目标 <BR>
<P> 结果如下 : <BR></P>
<TABLE cellSpacing=1 cellPadding=0 width="59%" border=1>
<TBODY>
<TR>
<TD width="16%" bgColor=#c0c0c0>姓名</TD>
<TD width="20%" bgColor=#c0c0c0>销售目标</TD>
<TD width="20%" bgColor=#c0c0c0>销售额</TD></TR>
<TR>
<TD width="16%">书生</TD>
<TD width="20%">8000</TD>
<TD width="20%">9000</TD></TR>
<TR>
<TD width="16%">雷鸣</TD>
<TD width="20%">8000</TD>
<TD width="20%">10000</TD></TR>
<TR>
<TD width="16%">顾一</TD>
<TD width="20%">9000</TD>
<TD width="20%">9800</TD></TR>
<TR>
<TD width="16%">熠天</TD>
<TD width="20%">20000</TD>
<TD width="20%">20000</TD></TR></TBODY></TABLE>
<P><BR></P> 大家可以看到,对于简单查询,SQL Select 语句和英文语法很相象,我们来分析一下 SELECT
语句的完整格式,它包括六个子句,其中 SELECT 和 FROM 子句是必须的,其它子句可以任选,每个子句的功能如下 :<BR><BR>
1、Select 子句列出所有要求 SELECT 语句检索的数据项。它放在 SELECT
语句开始处,指定此查询要检索的数据项。这些数据项通常用选择表表示,即一组用“,”隔开的选择项。按照从左到右的顺序,每个选择项产生的一个列的查询结果,一个选择项可能是以下项目:<BR><BR>
(1)、列名:标识 FROM 子句指定表中的列。如果列名作为选择项,则 SQL 直接从数据库表中每行取出该列的值,再将其放在查询结果的相应行中。
<P> (2)、常数:指定在查询结果的每行中都放上该值。 </P>
<P> (3)、SQL 表达式:说明必须将要放入查询结果中的值按表达式的规定进行计算。 </P> 2、From
子句列出包含所要查询数据的表,它由关键字 FROM 后跟一组用逗号分开的表名组成。每个表明都代表一个包括该查询要检索数据的表。这些表称为此 SQL
语句的表源,因为查询结果都源于它们。
<P> 3、Where 子句告诉 SQL 只查询某些行中的数据,这些行用搜索条件描述。 </P>
<P> 4、Group By 子句指定汇总查询,即不是对每行产生一个查询结果,而是将相似的行进行分组,再对每组产生一个汇总结果。 </P>
<P> 5、Having 子句告诉 SQL 只产生有 Group By 得到的某些组的结果,和 Where
子句一样,所需要的组也用一个搜索条件指定。 </P>
<P> 6、Order By 子句将查询结果按一列或多列中的数据排序。如果省略此子句,则查询结果将是无序的。 </P>
<P> 下面作者将提供一个简单但实用的运用 SQL 语句查询的 ASP 程序供大家参考。 </P> 为了使大家更清楚更直接地了解 SQL
语法在 ASP 中的应用,我们先将查询的所有核心过程写成一个名为 query2table 的 SUB,然后利用 ASP 的服务器端包容功能调用该
SUB。请将以下语句剪贴到记事簿,保存为 subdbtable.inc 文件,并置于虚拟目录 asptest 下 : <BR> <
%<BR> sub query2table(inputquery)<BR> set
conntemp=server.createobject("adodb.connection")<BR> conntemp.open
"DSN=Student;uid=student;pwd=aspmagic"<BR> set
rstemp=conntemp.execute(inputquery)<BR> howmanyfields=rstemp.fields.count
-1<BR> ' 统计数据库中的列数 <BR> %><BR> < table border=1><
tr><BR> < %<BR> for i=0 to howmanyfields<BR> %><BR> <
td>< b>< %=rstemp(i).name%>< /B><
/TD><BR> < % next %><BR> < /tr><BR> < %<BR> do while
not rstemp.eof<BR> %><BR> < tr><BR> < % for i = 0 to
howmanyfields<BR> thisvalue=rstemp(i)<BR> If isnull(thisvalue)
then<BR> thisvalue="?<BR> ' 如果字段为空,则将变量 thisvalue 的值定义为一个空格 <BR> end
if%><BR> < td valign=top>< %=thisvalue%><
/td><BR> < % next %><BR> < /tr><BR> <
%rstemp.movenext<BR> loop%><BR> < /table><BR> <
%<BR> rstemp.close<BR> set rstemp=nothing<BR> conntemp.close<BR> set
conntemp=nothingend sub%><BR><BR> 完成了 SUB 的定义过程,在下面几个 ASP
程序中我们只要加入想要使用的 SQL 查询语句,并调用该过程就可以非常方便的得到查询结果。将以下四段代码分别保存为
asp11a.asp、asp11b.asp、asp11c.asp、asp11d.asp 四个 .asp 文件。 <BR><BR> <
HEAD>< TITLE>asp11a.asp< /TITLE>< /HEAD><BR> <
HTML>< body bgcolor="#FFFFFF"><BR> < %<BR> call
query2table("select * from publishers where name like 'A%%'")<BR>' 将表
publishers 中所有姓名中有字母 A 的记录查询出来 <BR> %><BR> < !--#include
virtual="/asptest/subdbtable.inc"-->< /BODY><
/HTML><BR><BR><BR> < HEAD>< TITLE>asp11b.asp<
/TITLE>< /HEAD>< HTML>< body
bgcolor="#FFFFFF"><BR> < %<BR> call query2table("select * from
titles where Year_Published > = 1998")<BR>' 将表 titles 中所有发表年份大于或等于 1998
年的记录查询出来 <BR> %><BR> < !--#include
virtual="/asptest/subdbtable.inc"-->< /BODY><
/HTML><BR><BR><BR> < HEAD>< TITLE>asp11c.asp<
/TITLE>< /HEAD>< HTML>< body
bgcolor="#FFFFFF"><BR> < %<BR> call query2table("select * from
publishers where amount>10000 and sex='male'")<BR>' 将表 publishers
中所有数量大于 10000 且性别为男的记录查询出来 <BR> %><BR> < !--#include
virtual="/asptest/subdbtable.inc"-->< /BODY><
/HTML><BR><BR><BR> < HEAD>< TITLE>asp11d.asp<
/TITLE>< /HEAD>< HTML>< body
bgcolor="#FFFFFF"><BR> < %<BR> call query2table("select * from
publishers where state< > 'NY'")<BR>'将表 publishers
中所有所在城市不为纽约的记录查询出来。<BR> %><BR> < !--#include
virtual="/asptest/subdbtable.inc"-->< /BODY><
/HTML><BR><BR> 利用 subdbtable.inc 文件中的所定义的过程
query2table,你就可以非常迅速地对数据库进行查询,你所要做的只是将“conntemp.open
"DSN=Student;uid=student;pwd=aspmagic"”中的数据库名称、用户身份和密码稍加改动,并在调用
query2table 时输入想要使用的 SQL 查询语句即可。是不是很简单 ? 这就是 ASP 和 SQL 的魅力所在 !!!
<BR><BR> 今天,我们虽然用了一整篇的篇幅只学习了一个 SQL 指令,但请你相信你所获得远不同于一个 DOS 指令,SELECT
指令使得你可以非常容易地对数据库进行查询,或许在这之前你对数据库查询还一无所知,但是通过本篇的学习,你其实已经会使用 ASP
进行常用的数据库查询了,是不是很激动 ? 在下一篇中,作者将继续给大家介绍 SQL
的其它几个基本指令。在结束本文之前,作者在这里要向很多来信的朋友致歉,由于最近作者工作繁忙,实在无暇一一回答各位的问题,请见谅,我会尽量将一些常见的、发生频率较高的问题在文章中写出来,至于一些不常见的问题,我建议大家到下面这个站点提问,你将会得到及时的答复。www.onlinechina.net/friend/flybird/bbs/wwwboard.asp?id=1,
这是作者至今为止所见的最棒的中文 ASP 学习站点,由上海的飞鸟主持,大家务必去看看。
<P align=center><A
href="http://chinese.pku.edu.cn/netstudy/aspteach/asp10.htm">上一节</A> <A
href="http://chinese.pku.edu.cn/netstudy/aspteach/asp12.htm">下一节</A></P>
<P align=center><A
href="http://chinese.pku.edu.cn/netstudy/aspteach/index.asp">在线教程首页</A></P></TD></TR></TBODY></TABLE></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -