当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL数据操作基础(初级)3

MSSQL
SQL Server中容易混淆的数据类型
影响SQL Server性能的主要原因
浅谈SQL Server查询优化器中的JOIN算法
怎样缩小SQL Server数据库日志文件
SQL Server 2005最值得你升级的10个理由
SQL Server 商务智能特性对比
SQL Server 2005 SP1的新特性
怎样使用SQL Server来过滤数据
在SQL Server中处理空值时涉及的三个问题
怎样才能保护好 SQL Server 数据库
SQL SERVER数据库口令的脆弱性
SQL Server中的动态和静态内存分配
SQL存储过程学习:特殊的存储过程-触发器
几条常见的数据库分页 SQL 语句
SQL Server 2008服务器合并功能介绍
SQL Server数据库开发的二十一条军规
SQL Server 2008 的管理能力
快速删除重复记录,SQL Server如何实现?
将MySQL数据导入到Sql Server中
SQL Server和MySQL的安全性分析

MSSQL 中的 SQL数据操作基础(初级)3


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 120 ::
收藏到网摘: n/a

操作字段

通常,当你从一个表中取出字段值时,该值与创建该表时所定义的字段名联系在一起。如果你从表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)

注意有两个作者有相同的名字Ring