<p>在这一章里,你将学会怎样使用&ldquo;结构化查询语言&rdquo;(SQL〕来操作数据库。SQL语言是数据库的标准语言。在Active SeverPages 中,无论何时你要访问一个数据库,你就要使用SQL语言。因此,掌握好SQL对ASP编程是非常重要的。<br /> <br /> <b>注意:</b><br /> 你可以把&ldquo;SQL&rdquo;读作&ldquo;sequel&rdquo;,也可以按单个字母的读音读作S-Q-L。 两种发音都是正确的,每种发音各有大量的支持者。<br /> 在本书里,认为&ldquo;SQL&rdquo;读作&ldquo;sequel&rdquo;。<br /> <br /> SQL介绍:<br /> 在学习SQL的细节之前,你需要理解它的两大特点。一个特点容易掌握,另一个掌握起来有点困难。<br /> <br /> 第一个特点是所有SQL数据库中的数据都存储在表中。<br /> <br /> SQL的第二个特点有些难于掌握。这种语言被设计为不允许你按照某种特定的顺序来取出记录,因为这样做会降低SQL Sever取记录的效率。使用SQL,你只能按查询条件来读取记录。<br /> <br /> 当考虑如何从表中取出记录时,自然会想到按记录的位置读取它们。例如,也许你会尝试通过一个循环,逐个记录地扫描,来选出<br /> 特定的记录。在使用SQL时,你必须训练自己,不要有这种思路。<br /> <br /> 假如你想选出所有的名字是&ldquo;Bill Gates&rdquo;的记录,如果使用传统的编程语言,你也许会构造一个循环,逐个查看表中的记录,看<br /> 名字域是否是&ldquo;Bill Gates&rdquo;。<br /> <br /> 这种选择记录的方法是可行的,但是效率不高。使用SQL,你只要说,&ldquo;选择所有名字域等于Bill Gates的记录&rdquo;,SQL就会为你选<br /> 出所有符合条件的记录。SQL会确定实现查询的最佳方法。<br /> <br /> 建设你想取出表中的前十个记录。使用传统的编程语言,你可以做一个循环,取出前十个记录后结束循环。但使用标准的SQL查询,<br /> 这是不可能实现的。从SQL的角度来说,在一个表中不存在前十个记录这种概念。<br /> <br /> 开始时,当你知道你不能用SQL实现某些你感觉应该能实现的功能,你会受到挫折。你也许会以头撞墙甚至想写恶毒的信件给SQL的<br /> 设计者们。但后来你会认识到,SQL的这个特点不仅不是个限制,反而是其长处。因为SQL不根据位置来读取记录,它读取记录可以<br /> 很快。<br /> <br /> 综上所述,SQL有两个特点:所有数据存储在表中,从SQL的角度来说,表中的记录没有顺序。在下一节,你将学会怎样用SQL从表<br /> 中选择特殊的记录。<br /> <br /> 使用SQL从表中取记录。<br /> <br /> SQL的主要功能之一是实现数据库查询。<br /> <br /> 多数Internet 引擎允许逻辑查询。在逻辑查询中,你可以包括特殊的运算符如AND、OR和NOT,你使用这些运算符来选择特定的记<br /> 录。例如,你可以用AND来限制查询结果。如果你执行一个对Active Sever Pages AND SQL的搜索。你将得到其描述中同时包含<br /> Active Sever Pages 和SQL的记录。当你需要限制查询结果时,你可以使用AND。<br /> <br /> 如果你需要扩展查询的结果,你可以使用逻辑操作符OR。例如,如果你执行一个搜索,搜索所有的其描述中包含Active Sever<br /> Pages OR SQL的站点,你收到的列表中将包括所有其描述中同时包含两个表达式或其中任何一个表达式的站点。<br /> <br /> 如果你想从搜索结果中排除特定的站点,你可以使用NOT。例如,查询&ldquo;Active Sever Pages &rdquo;AND NOT &ldquo;SQL&rdquo;将返回一个列<br /> 表,列表中的站点包含Active Sever Pages,但不包含SQL。当必须排除特定的记录时,你可以使用NOT。<br /> <br /> 用SQL执行的查询与用Internet搜索引擎执行的搜索非常相似。 当你执行一个SQL查询时,通过使用包括逻辑运算符的查询条件,<br /> 你可以得到一个记录列表。此时查询结果是来自一个或多个表。<br /> <br /> SQL查询的句法非常简单。假设有一个名为email_table 的表,包含名字和地址两个字段,要得到Bill Gates 的e_mail地址,你<br /> 可以使用下面的查询:<br /> <br /> SELECT email from email_table WHERE name=&quot;Bill Gates&quot;<br /> <br /> 当这个查询执行时,就从名为email_table的表中读取Bill Gates的e_mail 地址。这个简单的语句包括三部分:<br /> <br /> ■ SELECT语句的第一部分指名要选取的列。在此例中,只有email列被选取。当执行 时,只显示email列的值<br /> billg@microsoft.com。<br /> <br /> ■ SELECTT语句的第二部份指明要从哪个(些)表中查询数据。在此例中,要查询的表名为email_table 。<br /> <br /> ■ 最后,SELECT语句的WHERE子句指明要选择满足什么条件的记录。在此例中,查询条件为只有name列的值为Bill Gates 的记录<br /> 才被选取。<br /> <br /> Bill Gates很有可能拥有不止一个email地址。如果表中包含Bill Gates的多个email地址。用上述的SELECT语句可以读取他所有<br /> 的email地址。SELECT语句从表中取出所有name字段值为Bill Gates 的记录的email 字段的值。<br /> <br /> 前面说过,查询可以在查询条件中包含逻辑运算符。假如你想读取Bill Gates 或Clinton总统的所有email地址,你可以使用下面<br /> 的查询语句:<br /> <br /> SELECT email FROM email_table WHERE name=&quot;Bill Gates&quot; OR<br /> <br /> name=&quot;president Clinton&quot;<br /> <br /> 此例中的查询条件比前一个复杂了一点。这个语句从表email_table中选出所有name列为Bill Gates或president Clinton的记录。如果表中含有Bill Gates或president Clinton的多个地址,所有的地址都被读取。<br /> </p>
T:0.006565s,M:252.01 KB
返回顶部 留言