精彩专题推荐:建站之入门课 建站之必修课 建站之关键课 网站价值所在 流量提高专题 css+div 标准 个人网站打造全过程
返回建站学首页
导航:
建站首页 | 网站设计 | 网站开发 | 网站运营 | 网页软件 | 建站指南 | 搜索优化 | 图像处理 | 视频教程 | 书籍教程 | 建站专题
当前位置:首页>网站开发>ASP教程>正文

在ADO使用SELECT语法一


来源:我要学习网 时间:06-11-12 点击: 点击这里收藏本文
SELECT表达式

接着,让我们看看SELECT表达式,SELECT用来在表中寻找符合特定条件的记录,语法如下:

SELECT  [关键字]  {  *  |  表名称.*  |  [表名称.]字段名称1  [AS  别名1]  [,  [表名称.]  字段名称2  [AS  别名2]  [,  ...]]}
FROM  表运算式  [,  ...]  [IN  外部表]
[WHERE...  ]
[GROUP  BY...  ]
[HAVING...  ]
[ORDER  BY...  ]
[WITH  OWNERACCESS  OPTION]

关键字:可以用来限制返回之记录的数量,可以设定为ALL、DISTINCT、DISTINCTROW  、或TOP。如果没有指定述语,缺省值为  ALL。  

*:选取全部的字段。  

别名:代替在表中原有的字段名称。  

表运算式:一个或多个以逗号分隔的表名称。  

外部表:如果表不存在目前的表当中,须设定包含表运算式中表的表名称。

执行SELECT  表达式,并不会改变表之中现有的资料。

一个  SELECT  表达式的最基本语法是:

SELECT  *  FROM  表运算式

您可以使用星号(*)来选取表的全部字段。譬如下例选取  [产品]  表中的全部字段:

SELECT  *  FROM  产品

字段名称包含空格或标点符号时,须使用括号[  ]将它括在其中。例如:

SELECT  [电脑  的产品]

如果在FROM子句中的字段名称中,包含多个的表中时,需在字段名称前加上表名称和点(.)运算子,即  表名称.字段名称。譬如下例选取  [产品]  表的  [价格]  字段和  [订单]  表的  [数量]  字段:

SELECT  产品.价格,  订单.数量

FROM  产品,  订单

WHERE  产品.代号  =  订单.代号

当您使用Recordset  对象时,Recordset并不认得rs(表名称.字段名称)  格式,即rs(“产品.价格”)会发生错误,您必须使用AS来设定字段名称的别名。譬如:

SELECT  产品.价格  AS  价格,  订单.数量AS  数量

FROM  产品,  订单

WHERE  产品.代号  =  订单.代号

如此就可以使用rs(“价格”)  和rs(“数量”),来读取其字段的资料。

与SELECT表达式相关的语法:


关键字:ALL/  DISTINCT/  DISTINCTROW/  TOP。  

WHERE:寻找FROM中的表符合特定条件的资料记录。WHERE  可以使用下面的BETWEEN、LIKE、IN运算子:  

Between...And:判断表达式的值是否落在指定的范围之中。  

Like:寻找相符合的关键字。  

IN运算式:限定范围。  

NOT  IN运算式:表示不属于所指定的范围。  

ORDER  BY子句:可以设定排序的字段。

GROUP  BY子句:将查询的结果做统计。  

HAVING子句:使用在SELECT  表达式中,筛选已经GROUP  BY统计的记录。  

Union:可以合并多组查询的结果。  

JOIN:连接组合两个表中的字段记录。  

子查询(sub  query):表达式中,可以包括SELECT表达式。  

Select...Into:将查询的结果,建立一个产生的表。


详细介绍如下:

ALL/DISTINCT/DISTINCTROW/TOP关键字

使用SELECT查询时,可以加上关键字,以选取所查询的记录。如下:


ALL:返回所有的记录。  

DISTINCT:指定字段中的记录有重复时只返回一条记录,记录不重复。  

DISTINCTROW:指定字段中的记录有重复时都不返回。  

TOP:返回前面几个记录或几个百分比的记录。


语法如下:

SELECT  [ALL  |  DISTINCT  |  DISTINCTROW  |  [TOP  n  [PERCENT]]]
FROM  表

ALL返回所有的记录。不加关键字时,与加ALL的意义相同,将返回所有的记录。譬如下列两个例子的执行结果相同,都从产品表中返回所有的记录:

SELECT  ALL  *  FROM  产品

与以下的执行结果相同:

SELECT  *  FROM  产品

DISTINCT不选取指定字段之中的重复资料。使用DISTINCT后,查询的结果,列在SELECT  DISTINCT后的每个字段的资料值,若相同则只取一条记录,换句话说,指定字段的资料不会有重复的现象。例如,在产品表之中有一些产品名称相同的产品,加上DISTINCT的SQL表达式只会返回一条记录字段为产品名称资料相同的记录:

SELECT  DISTINCT  产品名称  FROM  产品

如果您不加上DISTINCT,上例查询将返回数个包含相同产品名称的记录。

如果SELECT  DISTINCT子句后指定数个字段,查询的结果,所有字段的组合值不会有重复的现象。

DISTINCTROW则不返回指定字段所有重复的记录。

TOP  n  [PERCENT]  ,返回前面几条记录或几个百分比的记录。排列的顺序可以使用ORDER  BY子句来指定。譬如找到成绩前10名的学生姓名:

SELECT  TOP  10  姓名
FROM  学生
ORDER  BY  成绩

如果您没有包含ORDER  BY子句,查询将由学生表返回任意的10个记录。

TOP不在相同值间作选择,如果第10及第11的成绩是相同的,查询将返回11个记录。

您可使用PERCENT来设定前面几个百分比的记录,譬如譬如找到成绩前10%的学生姓名:

SELECT  TOP  10  PERCENT  姓名
FROM  学生
ORDER  BY  成绩

让我们看一个在ASP程式中使用这个SQL指令的例子。

可以利用Distinct找出不重复的记录,譬如ASP程式rs7.asp如下,[Insert  Into  产品(代号,名称)  Select  Distinct  代号,名称  From  产品  where  代号  =’’C2000’’]  使用Distinct与Insert  Into新增代号为C2000的记录:

<%

’’Distinct  代号,名称只判断代号,名称是否相同,  相同者只加一条记录

sql  =  "Insert  Into  产品(代号,名称)  Select  Distinct  代号,名称  From  产品  where  代号  =’’C2000’’"  

Set  a  =  conn1.Execute(sql)

Set  rs3  =  Server.CreateObject("ADODB.Recordset")

sql  =  "Select  *  from  产品  where  代号  =’’C2000’’"  

rs3.Open  sql,conn1,1,1,1

%>

<TABLE  COLSPAN=8  CELLPADDING=5  BORDER=0>

<TR>

<TD  ALIGN=CENTER  BGCOLOR="#800000"><FONT  COLOR="#FFFFFF">代号</FONT></TD>

<TD  ALIGN=CENTER  BGCOLOR="#800000"><FONT  COLOR="#FFFFFF">名称</FONT></TD>

<TD  ALIGN=CENTER  BGCOLOR="#800000"><FONT  COLOR="#FFFFFF">价格</FONT></TD>

<TD  ALIGN=CENTER  BGCOLOR="#800000"><FONT  COLOR="#FFFFFF">数量</FONT></TD>

</TR>

<%  Do  while  not  rs3.EOF  %>

<TR>

<TD  BGCOLOR="f7efde"  ALIGN=CENTER><%=  rs3("代号")%></TD>

<TD  BGCOLOR="f7efde"  ALIGN=CENTER><%=  rs3("名称")%></TD>

<TD  BGCOLOR="f7efde"  ALIGN=CENTER><%=  rs3("价格")%></TD>

<TD  BGCOLOR="f7efde"  ALIGN=CENTER><%=  rs3("数量")%></TD>

</TR>  

<%  

rs3.MoveNext  

Loop

rs3.Close

%>

</TABLE>

WHERE

WHERE寻找FROM中的表符合特定条件的资料记录,WHERE  使用在SELECT、UPDATE、或DELETE表达式。

如果SELECT查询中没有指定WHERE子句,将返回表中所有的资料。如果在SELECT查询多个表,且没有使用WHERE子句、或JOIN  子句的话,查询结果为多个表资料的乘积。

WHERE设定特定的条件,譬如:


FROM  产品  WHERE  分类  =  ’’电脑’’:表示选择  [分类]  为  [电脑]  的  [产品]  

WHERE  价格  Between  1000  And  5000:表示价格介于1000至5000之间  。

一个WHERE子句,最多可包含40个运算式,运算式之间由AND或OR等逻辑运算子相连结。

设定特定的条件时,依照字段类型,前后加不同的符号,譬如:


文字:前后加单引号,譬如WHERE  分类  =  ’’电脑’’。  

数字:前后不加符号,譬如WHERE  数量  >  100。  

日期:前后加#号,譬如WHERE  日期  =  #5/15/99#。

WHERE可以使用下面的BETWEEN、LIKE、IN运算子。

  把此文章收藏到:          
广而告之
文章搜索
  • Google JZxue.Com

关于我们 | 联系我们 | 友情链接 | 网站地图
Copyright © 2005 - 2006 建站学 All rights reserved.