如何将信息请求翻译为SQL SELECT语句(三)

日期: 2009-04-27 作者:John L. ViescasMichael J. Hernandez翻译:曾少宁 来源:TechTarget中国 英文

第一眼看来,可能根据请求来定义一个翻译语句有点难度。请求中并没有显示任何字段名称,甚至没有一个项可以选择,因此我们也无法创建一个完整的翻译语句。现在我们该怎么做呢?仔细地查看请求中的每个词并确定它是否暗含了Classes表中一个字段名称。在我们继续更进一步分析之前,让我们花费点时间来再次研究一下这个请求。

我们可以找到这样的词吗?在这种情况下,“kind”这个词可能隐含着Classes表的一个字段名称。为什么呢?因为一种Class同时也可以被认为是一个Class的分类。如果在Classes表中有一个分类字段,那么我们就有了用来完成翻译语句、以及后续SELECT语句所需要的字段名称。假设在Clas……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

第一眼看来,可能根据请求来定义一个翻译语句有点难度。请求中并没有显示任何字段名称,甚至没有一个项可以选择,因此我们也无法创建一个完整的翻译语句。现在我们该怎么做呢?仔细地查看请求中的每个词并确定它是否暗含了Classes表中一个字段名称。在我们继续更进一步分析之前,让我们花费点时间来再次研究一下这个请求。我们可以找到这样的词吗?在这种情况下,“kind”这个词可能隐含着Classes表的一个字段名称。为什么呢?因为一种Class同时也可以被认为是一个Class的分类。如果在Classes表中有一个分类字段,那么我们就有了用来完成翻译语句、以及后续SELECT语句所需要的字段名称。假设在Classes表中有一个分类字段,那么就可以对请求两次执行前面的三个步骤。

  "What kind of classes do we currently offer?"

Translation

Select category from the classes table

Clean Up

Select category from  classes 

SQL

SELECT Category
FROM Classes

  如例所示,这个技术涉及到使用同义词替代请求中的某些词或者短语。如果我们确定了一个词或短语可能隐含一个字段名称,那么我们要尝试用同义词替代它。我们所选择的同义词可能是实际存在数据库上的一个字段。然而,如果第一个出现的同义词不能用,那么可以尝试另外一个。重复这个过程,直到我们找到了可以确定字段名称的同义词,或者我们始终不满意原始的词汇或者任何代表的字段名称的同义词。

  注意:除非特别说明,否则在所有例子的SQL语句部分的字段名称和表名称都是来自Appendix B的Schema for the Sample Databases中的示例数据库。这个适用于本书中剩下的部分所举的例子。

  扩大域的范围

  我们可以在SELECT语句中像检索一个字段一样检索多个字段。列出我们想要在SELECT字句中使用到的字段名称,同时用逗号分开名称。在图4-6显示的语法图中,选择使用多个字段是由column_name下面从右到左的线表示的。行中间的逗号表示我们必须在SELECT字句中使用的下一个字段名称之前插入一个逗号。

  SELECT语句中使用多字段的语法

  图4-6 SELECT语句中使用多字段的语法

  选择在SELECT语句中使用多字段的可以帮我们回答这样一些问题。

  "Show me a current list of our employees and their phone numbers."

Translation

Select the last name, first name, and phone number of all our employees from the employees table

Clean Up

Select  last name, first name,  phone number  from  employees 

SQL

SELECT EmpLastName, EmpFirstName, EmpPhoneNumber 
FROM Employees 

  "What are the names and prices of the products we carry, and under what category is each item listed?"

Translation

Select the name, price, and category of every product from the products table

Clean Up

Select  name, price,  category  from products 

SQL

SELECT ProductName, RetailPrice, Category 
FROM Products 

  当我们在SELECT语句中使用多个字段时,我们就获得了看到更宽范围的信息。有时,在SELECT字句中的字段顺序并不重要——我们可以按任意顺序列出字段。这样给我们提供了用多种方式查看相同信息的灵活性。

  比如,假设我们正在图4-7显示的表上操作,同时我们被要求在数据库上发送下面的请求。

  "Show me a list of subjects, the category each belongs to, and the code we use in our catalog. But I'd like to see the name first, followed by the category and then the code."

翻译

曾少宁
曾少宁

TechTarget中国特约技术编辑,某高校计算机科学专业教师和网络实验室负责人,曾任职某网络国际厂商,关注数据中心、开发运维、数据库及软件开发技术。有多本关于思科数据中心和虚拟化技术的译著,如《思科绿色数据中心建设与管理》和《基于IP的能源管理》等。

相关推荐