文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页技术开发数据库教程 → SQL数据操作基础初级3

SQL数据操作基础初级3

时间:2004/11/7 4:14:00来源:本站整理作者:蓝点我要评论(0)

操作字段



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




相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 oracle10g安装图解(wi

最新文章 数据库流行度排行2019oracle10g安装图解(wi SQL2008全部数据导出导入两种方法SQL2005新建复制“找不到存储过程 错误:28Dos远程登录mysql数据库详细图文教程mysql怎么开启远程登录功能

人气排行 mysql自动定时备份数据库的最佳方法-支持wiVisual Foxpro 6.0安装向导图文教程SQL Server 2008 安装图文教程SQL2008全部数据导出导入两种方法SQL 2000/2005/2008 的收缩日志方法,和清理mysql出 Can't connect to MySQL server onoracle10g安装图解(win7)sql2005安装图解_(sql server2005)安装教程