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

SQL数据操作基础(初级)3,第1张

SQL数据操作基础(初级)3,第2张

操作领域

通常,当您从表中取出字段值时,该值与创建表时定义的字段名称相关联。如果从表authors中选择所有的作者姓名,所有的值都将与字段名au_lname相关联。但是在某些情况下,您需要操作字段名称。在SELECT语句中,可以用新名称替换默认字段名称。例如,字段名称au_lname可以替换为更直观、更易读的名称Author Last Name:

从作者中选择au_lname“作者姓氏”

当执行这个SELECT语句时,来自字段au_lname的值将与“作者姓氏”相关联。该查询可能如下所示:

作者姓氏

…………………………………………………………………… ..

白色的

格林(姓氏);绿色的

卡森

奥利里

直的

(受影响的23行)

请注意,字段标题不再是au_lname,而是替换为作者姓氏。

还可以通过执行运算来操作从表中返回的字段值。例如,如果要将标题表中所有书籍的价格翻倍,可以使用下面的
SELECT语句:

从标题中选择价格*2

当这个查询被执行时,每本书的价格将会翻倍。但是,以这种方式操作该字段不会改变表中存储的图书价格。字段
的操作只会影响SELECT语句的输出,而不会影响表中的数据。为了同时显示图书的原价和涨价后的新价格,可以使用下面的查询:

从标题中选择价格“原价”,价格*2“新价格”

当从表标题中取出数据时,原始价格显示在标题“原始价格”下,加倍的价格显示在标题“新价格”下。结果可能是这样的
示例:

原价新价

……………………………………………………………….

39.98

5.98
39.98

(受影响的18行)

您可以使用大多数标准的数学运算符来处理字段值,例如加(+)、减(-)、乘(*)和除(/)。您也可以一次计算多个字段
,例如:

从标题中选择price*ytd_sales“总收入”

在本例中,每本书的总销售额是通过将价格乘以销售量计算出来的。该SELECT语句的结果将如下所示:

总收入

…………………………………………… ..

81,859,05

46,318,20

55,978,78

81,859,05

40,619,68

(受影响的18行)

最后,您还可以使用连接运算符(看起来像一个加号)来连接两个字符字段:

从作者中选择au_fname+" "+au_lname "作者姓名"

在本例中,您将字段au_fname和au_lname粘贴在一起,用逗号分隔,并将查询结果的标题指定为author
name。该语句的执行结果将如下所示:

作者姓名

…………………………………………………………

约翰逊·怀特

马乔里·格林

谢丽尔·卡森

迈克尔·奥利里

迪恩直男

(受影响的23行)

如您所见,SQL为您提供了对查询结果的大量控制。你应该在ASP编程中充分利用这些优势。使用SQL操作查询结果几乎总是
比使用具有相同效果的脚本更有效。

对查询结果排序

正如本章介绍中所强调的,SQL表没有内部顺序。例如,从表中取出第二条记录是没有意义的。从SQL的角度来看,没有任何记录
在任何其他记录之前。

但是,您可以操纵SQL查询结果的顺序。默认情况下,从表中提取记录时,记录不会以特定的顺序出现。例如,当从表
authors中取出字段au_lname时,查询结果显示如下:

au _ inname

…………………………………….

白色的

格林(姓氏);绿色的

卡森

奥利里

直的

(受影响的23行)

不按特定顺序看名单是不方便的。如果你把这些名字按字母顺序排列,阅读起来会容易得多。通过使用ORDER BY子句,您可以
强制查询结果按升序排序,如下所示:

SELECT au _ lname FROM authors ORDER BY au _ lname

当执行这个SELECT语句时,作者的名字将按字母顺序显示。order子句按升序对作者姓名进行排序。

还可以同时对多个列使用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

…………………………………………………………………….

伯奈特·亚伯拉罕

林格·艾伯特

林格·安妮

史密斯河曲

(受影响的23行)

注意两个作者有相同的名字Ringer。名为艾伯特·林格的作者出现在名为安妮·林格的作者之前,因为按字母顺序姓艾伯特应该在姓安妮之前。

如果你想把查询结果逆序排列,你可以使用关键字DESC。关键字DESC按降序对查询结果进行排序,如下例所示:

SELECT au_lname,au_fname FROM authors

其中au _ lname = " Ringer " ORDER BY au _ lname,au_fname DESC

该查询从表authors中获取所有名为Ringer的作者记录。order子句根据作者的名和姓对查询结果进行降序排序。结果是这样的
:

au_lname

……………………………………………………………………………………….

林格·安妮

林格·艾伯特

(2行影响c)

请注意,在此表中,姓氏Anne出现在姓氏Albert之前。作者姓名按降序显示。

您还可以按数值字段对查询结果进行排序。例如,如果您想按降序列出所有书籍的价格,可以使用以下SQL查询:

从标题中选择价格,按价格DESC排序

这个SELECT语句从表中取出所有书籍的价格。显示结果时,价格低的书先显示,价格高的书后显示。

警告:

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

拿出不同的记录。

一个表可能在同一列中有重复的值。例如,在数据库pubs的authors表中有两个作者的名字相同。如果您从该表中取出
的所有姓名,姓名振铃器将显示两次。

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

从作者中选择不同的au_lname,其中au_lname="Ringer "

当执行这个SELECT语句时,只返回一条记录。通过在SELECT语句中包含关键字DISTINCT,可以删除所有重复的值。举个例子,假设
有一个关于新闻组信息发布的表,你想把这个新闻组里所有发布过信息的人的名字都拿出来,那么你可以使用关键字DISTINCT。每个
帐户的名称只使用一次,尽管有些用户发布了不止一条消息。

警告:

就像ORDER BY子句一样,强制服务器返回不同的值也会增加运行开销。傅琦不得不花一些时间来完成这项工作。因此,不必要时不要使用关键字DISTINCT

创建新表格

如前所述,数据库中的所有数据都存储在表中。包括数据表行和列。列确定表中数据的类型。行包含实际数据。

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

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

使用SQL Sever创建新表有许多方法。您可以使用SQL企业管理器执行SQL语句或创建新表。在下一节中,您将学习如何用SQL语句创建一个新表。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » SQL数据操作基础(初级)3

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情