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语句从表中取出所有书的价格,显示结果时,价格低的书先显示,价格高的书后显示。

警告:

不是特别需要时,不要对查询结果进行排序,因为服务器完成这项工作要费些力气。这意味着带有ORDER BY 子句的SELECT语句执
行起来比一般的SELECT语句花的时间长。

取出互不相同的记录

一个表有可能在同一列中有重复的值。例如,数据库pubs的表authors中有两个作者的名字是Ringer。如果你从这个表中取出所有
的名字,名字Ringer将会显示两次。

在特定情况下,你可能只有兴趣从一个表中取出互不相同的值。如果一个字段有重复的值,你也许希望每个值只被选取一次,你可
以使用关键字DISTINCT来做到这一点:

SELCET DISTINCT au_lname FROM authors WHERE au_lname="Ringer"

当这个SELECT语句执行时,只返回一个记录。通过在SELECT语句中包含关键字DISTINCT,你可以删除所有重复的值。例如,假设
有一个关于新闻组信息发布的表,你想取出所有曾在这个新闻组中发布信息的人的名字,那么你可以使用关键字DISTINCT。每个用
户的名字只取一次——尽管有的用户发布了不止一篇信息。

警告:

如同ORDER BY子句一样,强制服务器返回互不相同的值也会增加运行开销。福气不得不花费一些时间来完成这项工作。因此,不是
必须的时候不要使用关键字DISTINCT。

创建新表

前面说过,数据库中的所有数据存储在表中。数据表包括行和列。列决定了表中数据的类型。行包含了实际的数据。

例如,数据库pubs中的表authors有九个字段。其中的一个字段名为为au_lname,这个字段被用来存储作者的名字信息。每次向这个表中添加新作者时,作者名字就被添加到这个字段,产生一条新记录。

通过定义字段,你可以创建一个新表。每个字段有一个名字和一个特定的数据类型(数据类型在后面的“字段类型”一节中讲述),例如字段au_lname存储的是字符型数据。一个字段也可以存储其它类型的数据。

使用SQL Sever,创建一个新表的方法是很多的。你可以可执行一个SQL语句或使用SQL事务管理器(SQL Enterprise Manager)来创建一个新表。在下一节里,你将学会如何用SQL语句来创建一个新表。

时间: 2024-11-02 13:23:32

SQL数据操作基础(初级)3的相关文章

SQL数据操作基础(初级)1

数据 为了建立交互站点,你需要使用数据库来存储来自访问者的信息.例如,你要建立一个职业介绍服务的站点,你就需要存储诸如个人简历,所感兴趣的工作等等这样的信息.创建动态网叶也需要使用数据库,如果你想显示符合来访者要求的最好的工作,你就需要从数据库中取出这份工作的信息.你将会发现,在许多情况下需要使用数据库. 在这一章里,你将学会怎样使用"结构化查询语言"(SQL]来操作数据库.SQL语言是数据库的标准语言.在Active SeverPages 中,无论何时你要访问一个数据库,你就要使用S

SQL数据操作基础(初级)5

数据 使用SQL事务管理器创建新表 你可以使用前面几节所讲的方法创建新表.但是,使用事务管理器创建新表会更容易.这一节介绍如何使用这个程序创建新表. 从任务栏的SQL Sever程序组中选择SQL Enterprise Manager,启动该程序,你会看到如图10.4所示的窗口.浏览服务管理器窗口中的树形结构,选择名为Database的文件夹.打开文件夹Database后,选择你在第三章中所建立的数据库. 注意: 如果你还没有创建自己的数据库,回到第三章创建它.你决不要向master,tempd

SQL数据操作基础(初级)4

数据 用SQL创建新表 注意: 如果你还没有建立自己的数据库,现在就跳回到第三章创建这个库.你绝不能向master,tempdb或任何其他任何系统数据库中添加数据. 从SQL Sever程序组(在任务栏中)中启动ISQL/w程序.出现查询窗口后,从窗口顶部的下拉列表中选择你在第三章所创建的数据库.下一步,在查询窗口中键入下面的SQL语句,单击执行查询按钮,执行这个语句: CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entry

SQL数据操作基础(初级)2

数据 使用ISQL执行SELECT查询 当你安装SQL Sever时,你同时安装了一个叫作ISQL/w的应用程序.ISQL/w允许你执行交互的SQL查询.在把查询包括到你的ASP网页中之前,用ISQL/w对其进行测试是非常有用的. 注意: 在这本书的第一部份,你学习了怎样安装和配置Microsoft SQL Sever .如果没有安装SQL Sever或者SQL Sever不能运行,请参阅第三章"安装和使用SQL Sever". 选择任务上SQL Sever程序组中的ISQL_w以启动

SQL数据操作基础(中级)10

数据 操作日期和时间 日期和时间函数对建立一个站点是非常有用的.站点的主人往往对一个表中的数据何时被更新感兴趣.通过日期和时间函数,你可以在毫秒级跟踪一个表的改变. 返回当前日期和时间 通过函数GETDATE(),你可以获得当前的日期和时间.例如,语句SELECT GETDATE()返回如下的结果: -----------.. NOV 30 1997 3:29AM (1 row(s) affected) 显然,如果你将来使用这个函数,你得到的日期将比这个时间晚,或者梗早. 函数GETDATE()

SQL数据操作基础(中级)6

数据 第十章"SQL基础"向你初步介绍了SQL.你学会了如何用SELECT语句进行查询,你还学会了如何建立自己的表.在这一章里,你将加深你的SQL知识.你将学习如何建立索引来加快查询速度.你还将学会如果用更多的SQL语句和函数来操作表中的数据. 建立索引 假设你想找到本书中的某一个句子.你可以一页一页地逐页搜索,但这会花很多时间.而通过使用本书的索引,你可以很快地找到你要搜索的主题. 表的索引与附在一本书后面的索引非常相似.它可以极大地提高查询的速度.对一个较大的表来说,通过加索引,一

SQL数据操作基础(中级)9

数据 转换数据 SQL Sever足够强大,可以在需要的时候把大部分数值从一种类型转换为另一种类型.例如,要比较SMALLINT型和INT型数据的大小,你不需要进行显式的类型转换.SQL Sever会为你完成这项工作.但是,当你想在字符型数据和其它类型的数据之间进行转换时,你的确需要自己进行转换操作.例如,假设你想从一个MONEY型字段中取出所有的值,并在结果后面加上字符串"US Dollars".你需要使用函数CONVERT(),如下例所示: SELECT CONVERT(CHAR(

SQL数据操作基础(中级)8

数据 更新记录 要修改表中已经存在的一条或多条记录,应使用SQL UPDATE语句.同DELETE语句一样,UPDATE语句可以使用WHERE子句来选择更新特定的记录.请看这个例子: UPDATE mytable SET first_column='Updated!' WHERE second_column='Update Me!' 这个UPDATE 语句更新所有second_column字段的值为'Update Me!'的记录.对所有被选中的记录,字段first_column的值被置为'Upd

SQL数据操作基础(中级)7

数据 用SQL建立索引 为了给一个表建立索引,启动任务栏SQL Sever程序组中的ISQL/w程序.进入查询窗口后,输入下面的语句: CREATE INDEX mycolumn_index ON mytable (myclumn) 这个语句建立了一个名为mycolumn_index的索引.你可以给一个索引起任何名字,但你应该在索引名中包含所索引的字段名,这对你将来弄清楚建立该索引的意图是有帮助的. 注意: 在本书中你执行任何SQL语句,都会收到如下的信息: This command did n