SQL数据操作基础(初级)3
2008-04-02 10:53:27来源:互联网 阅读 ()
通常,当您从一个表中取出字段值时,该值和创建该表时所定义的字段名联系在一起。假如您从表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语句从表中取出任何书的价格,显示结果时,价格低的书先显示,价格高的书后显示。
警告:
不是特别需要时,不要对查询结果进行排序,因为服务器完成这项工作要费些力气。这意味着带有ORDER BY 子句的SELECT语句执
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: SQL数据操作基础(初级)1
下一篇: SQL数据操作基础(初级)4
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash