在ADO使用SELECT语法一
程序员文章站
2024-01-28 17:40:04
select表达式
接着,让我们看看select表达式,select用来在表中寻找符合特定条件的记录,语法如下:
select [关键字] { * | 表名称.* | [表名称.]字段名称1 [...
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.如下,[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运算子。
接着,让我们看看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.如下,[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运算子。
推荐阅读
-
在ADO使用SELECT语法一
-
UWPDemo(二)创建一个简单MVVM模式的UWP应用——SQLite在UWP中的使用
-
怎么在PHP函数中使用另外一个函数返回的数组
-
在同一张表中使用字段 A 去更新字段 B 的思考
-
在Access中使用“存储过程”(一)
-
[JAVA IDEA]在使用maven项目中,无法读取resources文件夹中的配置文件的一种解决方案
-
svg矢量图标在html中的使用, (知识点:1.通过h5中的css实现点击变色,2.一个svg文件包含多个图标)
-
JSON进阶第一篇 在PHP与javascript 中使用JSON
-
html综述一 jQuery基础使用(动态在body中创建div节点)_html/css_WEB-ITnose
-
在MYSQL语法中使用trim函数删除两侧字符_MySQL