SQL数据操作基础(初级)3
操作字段
通常,当你从一个表中取出字段值时,该值与创建该表时所定义的字段名联系在一起。如果你从表authors中选择所有的作者名字,所有的值将会与字段名au_lname相联系。但是在某些情况下,你需要对字段名进行操作。在SELECT语句中,你可以在缺省字段名后面仅跟一个新名字来取代它。例如,可以用一个更直观易读的名字Author Last Name来代替字段名au_lname: SELECT au_lname "Author Last Name" FROM authors 当这个SELECT语句执行时,来自字段au_lname的值会与“Author Last Name”相联系。查询结果可能是这样: Author Last Name …………………………………………………………………….. White Green Carson O’Leary Straight … (23 row(s) affected) 注意字段标题不再是au_lname,而是被Author Last Name所取代。 你也可以通过执行运算,来操作从一个表返回的字段值。例如,如果你想把表titles中的所有书的价格加倍,你可以使用下面的 SELECT语句: SELECT price*2 FROM titles 当这个查询执行时,每本书的价格从表中取出时都会加倍。但是,通过这种途径操作字段不会改变存储在表中的书价。对字段的运 算只会影响SELECT语句的输出,而不会影响表中的数据。为了同时显示书的原始价格和涨价后的新价格,你可以使用下面的查询: SELECT price "Original price", price*2 "New price" FROM titles 当数据从表titles中取出时,原始价格显示在标题Original price下面,加倍后的价格显示在标题New price下面。结果可能是这 样: original price new price ………………………………………………………………. 39.98 11.95 23.90 5.98 39.98 … (18 row(s) affected) 你可以使用大多数标准的数学运算符来操作字段值,如加(+),减(-),乘(*)和除(/)。你也可以一次对多个字段进行运 算,例如: SELECT price*ytd_sales "total revenue" FROM titles 在这个例子中,通过把价格与销售量相乘,计算出了每种书的总销售额。这个SELECT语句的结果将是这样的: total revenue …………………………………………….. 81,859,05 46,318,20 55,978,78 81,859,05 40,619,68 … (18 row(s) affected) 最后,你还可以使用连接运算符(它看起来像个加号)来连接两个字符型字段: SELECT au_fname+" "+au_lname "author name" FROM authors 在这个例子中,你把字段au_fname和字段au_lname粘贴在一起,中间用一个逗号 隔开,并把查询结果的标题指定为author name。这个语句的执行结果将是这样的: author names ………………………………………………………… Johnson White Marjorie Green Cheryl Carson Michael O’Leary Dean Straight … (23 row(s) affected) 可以看到,SQL为你提供了对查询结果的许多控制。你应该在ASP编程过程中充分利用这些优点。使用SQL来操作查询结果几乎总是 比使用有同样作用的脚本效率更高。 排序查询结果 本章的介绍中曾强调过,SQL表没有内在的顺序。例如,从一个表中取第二个记录是没有意义的。从SQL的角度看来,没有一个记录 在任何其他记录之前。 然而,你可以操纵一个SQL查询结果的顺序。在缺省情况下,当记录从表中取出时,记录不以特定的顺序出现。例如,当从表 authors中取出字段au_lname时,查询结果显示成这样: au_lname ……………………………………. White Green Carson O’Leary Straight … (23 row(s) affected) 看一列没有特定顺序的名字是很不方便的。如果把这些名字按字母顺序排列,读起来就会容易得多。通过使用ORDER BY子句,你可 以强制一个查询结果按升序排列,就像这样: SELECT au_lname FROM authors ORDER BY au_lname 当这个SELECT语句执行时,作者名字的显示将按字母顺序排列。ORDER BY子句将作者名字按升序排列。 你也可以同时对多个列使用ORDER BY子句。例如,如果你想同时按升序显示字段au_lname和字段au_fname,你需要对两个字段都 进行排序: SELECT au_lname,au_fname FROM authors ORDER BY au_lname ,au_fname 这个查询首先把结果按au_lname字段进行排序,然后按字段au_fname排序。记录将按如下的顺序取出: au_lname au_fname ……………………………………………………………………. Bennet Abraham Ringer Albert Ringer Anne Smith Meander … (23 row(s) affected) 注意有两个作者有相同的名字Ringer。名为Albert Ringer的作者出现名为Anne Ringer的作者之前,这是因为姓Albert按字母顺 序应排在姓Anne之前。 如果你想把查询结果按相反的顺序排列,你可以使用关键字DESC。关键字DESC把查询结果按降序排列,如下例所示: SELECT au_lname,au_fname FROM authors WHERE au_lname=”Ringer” ORDER BY au_lname ,au_fname DESC 这个查询从表authors中取出所有名字为Ringer的作者记录。ORDER BY子句根据作者的名字和姓,将查询结果按降序排列。结果是 这样的: au_lname au_fname ………………………………………………………………………………………. Ringer Anne Ringer Albert (2 row(s) affectec) 注意在这个表中,姓Anne出现在姓Albert之前。作者名字按降序显示。 你也可以按数值型字段对一个查询结果进行排序。例如,如果你想按降序取出所有书的价格,你可以使用如下的SQL查询: SELECT price FROM titles ORDER BY price DESC 这个SELECT语句从表中取出所有书的价格,显示结果时,价格低的书先显示,价格高的书后显示。 上一篇:SQL数据操作基础(初级)1 下一篇:SQL数据操作基础(初级)2 更多相关文章
|
推荐文章
精彩文章
|