设为首页 加入收藏 网站搜索 繁體中文 中国建站网 — 站长资源平台

MSJetSQLforAccess2000中级篇(III)

来源本站整理 作者:佚名 时间:2006-3-28 15:40:46 该文得分0

  《基础Microsoft Jet SQL for Access 2000》一文告诉我们如何使用SQL来检索和管理存储在数据库中的信息。本文的后面部分将讨论中级数据操纵语言(DML)语句,这将使得用户可以更好的控制信息检索和处理的方式。
  
  谓词
  
  谓词指限定一个SELECT 语句的子句,同WHERE 子句类似,但是谓词是在书写列的列表之前定义的。谓词还可以进一步的限制用户所提取的记录集,在某些情况下,过滤出任何可能存在的重复值。
  
  ALL关键字
  
  在SQL语句中,如果没有定义任何谓词的话,将使用缺省的ALL关键字。它意味着所有的符合SQL语句所设定的条件的记录都将被提取出来。回到我们的发票数据库中,从顾客表中提取所域的记录如下:
  
  SELECT *
  FROM tblCustomers
  
  注意尽管这里ALL关键词并没有定义,但它是缺省值。我们也可以如下书写该语句:
  
  SELECT ALL *
  FROM tblCustomers
  
  DISTINCT关键字
  
  DISTINCT关键字用来控制结果集中重复的值如何进行处理,那些对于指定的列来说用户相同值的行将被过滤掉。如果多于指定的列大于一,则所有指定的列的结合将作为过滤条件。例如,如果用户查询Customers表中姓氏不同的记录,则返回的值都将是唯一的,任何重复姓氏的名字都将以结果集中的一个记录作为其结果。
  
  SELECT DISTINCT [Last Name]
  FROM tblCustomers
  
  尤其要注意的是,使用DISTINCT关键字的查询所返回的结果集不能更新,即是只读的。
  
  DISTINCTROW
  
  DISTINCTROW 关键字和DISTINCT关键字类似,但前者是基于整行而非个别的域的。他只有在处理多个表时,并且只有在用户从某几个但非全部的表中选择数据域时才是有用的。如果用户的查询是基于一个表的,或者要从所有的表中选择数据域,则DISTINCTROW 关键字本质上和ALL关键字相同。
  
  例如,在我们的发票数据库中,每个顾客都可能没有、有一个或多个发票记录。假设我们希望找出有多少拥有多于一张发票的顾客,这时可以使用DISTINCTROW关键字来进行选择。
  
  SELECT DISTINCTROW [Last Name], [First Name]
  FROM tblCustomers INNER JOIN tblInvoices
  ON tblCustomers.CustomerID = tblInvoices.CustomerID
  
  如果我们不使用DISTINCTROW 关键字,得到的将是每个顾客的所有发票记录的行。(这里的 INNER JOIN 语句将在后面的部分讲解)。
  
  TOP关键字
  
  TOP关键字用来返回通过ORDER BY子句所指定的数据行中顶部或底部的某些行。ORDER BY 子句用来指定这些数据列是用升序还是降序排列。如果存在相等值,则TOP关键字将返回所有值相等的行。比如我们希望确定我们的发票数据库中最高额的三条发票记录,可以如下书写SQL语句:
  
  SELECT TOP 3 InvoiceDate, Amount
  FROM tblInvoices
  ORDER BY Amount DESC
  
  我们也可以将PERCENT关键字和TOP关键字同时使用,来返回由ORDER BY子句所指定的数据行中顶部或底部的一定比例的行,如下所示:
  
  SELECT TOP 25 PERCENT InvoiceDate, Amount
  FROM tblInvoices
  ORDER BY Amount DESC
  
  注意如果用户没有定义ORDER BY 子句,则TOP关键字将毫无意义,返回的是随机采样的一些行。
  
  要了解有关谓词的更多信息,请在Office 助手中或在Microsoft Access 帮助的回答向导的标签页中输入ALL、DISTINCT等谓词,然后单击查找。
  
  SQL 表达式
  
  一个SQL表达式就是作为SQL语句的一部分的一个字符串,并可以得到一个值。你可以任意组合运算符、常数、文字值、函数、域名、控制和属性来建立你的SQL表达式。而" Microsoft Jet SQL for Access 2000高级版"一文就向你描述了如何在WHERE子句中使用表达式来限制SQL语句;而且在本文随后的部分,我们将学习各种能够用于表达式的SQL操作符。
  
  IN操作
  
  IN操作是用来判断一个表达式的值是否属于一个指定列表中的值。如果这个表达式等于列表中的一个值,IN操作的返回值为True。而当没有找到,IN操作返回值为False。让我们假设我们想找到所有住在华盛顿州或乔治亚州的销售部成员。我们可以写一个带着长长的WHERE 子句,并使用AND逻辑操作符的SQL语句,而使用IN操作符会缩短我们写的语句。
  
  SELECT *
  FROM tblShipping
  WHERE State IN ('WA','GA')
  
  通过使用NOT逻辑操作符,我们可以检索出IN操作的反操作结果,这个语句会返回所有不住在华盛顿州的销售部成员。
  
  SELECT *
  FROM tblShipping
  WHERE State NOT IN ('WA')
  
  BETWEEN操作
  
  BETWEEN操作用于判断一个表达式的值是否介于一个特定的范围之间。如果这个表达式的值介于这个特定范围之间,包括范围开始和结束的值,这个BETWEEN操作返回True。如果这个表达式得值不属于这个范围,则BETWEEN操作返回值为False。假设我们想找到所以金额介于50美圆到100美圆之间的所有发票。我们最好在WHERE 子句使用BETWEEN 操作以及关键字AND设定范围。
  
  SELECT *
  FROM tblInvoices
  WHERE Amount BETWEEN 50 and 100
  
  通过使用NOT逻辑操作符,我们可以检索出BETWEEN操作的反操作结果,找到不在范围中的所有发票数量。
  
  SELECT *
  FROM tblInvoices
  WHERE Amount NOT BETWEEN 50 and 100
  
  注意这个范围可以设定为相反的顺序并依旧得到相同的结果 (BETWEEN 100 和 50),但许多的适用于ODBC的数据库要求这个范围遵从从头到尾的顺序。如果你设计你的应用程序可以兼容或升级为适用于ODBC的数据库,你就应该总是按照从头到尾的方法使用。
  
  LIKE操作
  
  LIKE 操作operator is used to determine if the value of an expression compares to that of a pattern. 一个样式就是就是一个完全的字符串或是一个包含有一个或多个通配符的部分字符串。通过使用LIKE 操作,你可以在一个结果集里查找一个域并找到所有符合特殊的样式的值。
  
  SELECT *
  FROM tblCustomers
  WHERE [Last Name] LIKE 'Johnson'
  
  为了返回所有的名字以字母J开头的顾客,我们使用星号通配符。
  
  SELECT *
  FROM tblCustomers
  WHERE [Last Name] LIKE 'J*'
  
  通过使用NOT逻辑操作符,我们

[1] [2]  下一页

相关文章
广告赞助
网友评论

共有 0 位网友发表了评论,平均得分: 0 查看完整内容

用户名:

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

(注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码