日期:2011-05-02 15:21:00 来源:本站整理
<b>SQL数据操作底子(初级)3</b>[MSSQL防范]
本文“<b>SQL数据操作底子(初级)3</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
操作字段
普通,当你从一个表中取出字段值时,该值与成立该表时所定义的字段名接洽在一同.假如你从表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_l 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_l
当这个SELECT语句履行时,只返回一个记录.通过在SELECT语句中包含关键字DISTINCT,你可以删除全部反复的值.比方,假定
有一个关于新闻组信息公布的表,你想取出全部曾在这个新闻组中公布信息的人的名字,那么你可以利用关键字DISTINCT.每个用
户的名字只取一次——固然有的用户公布了不止一篇信息.
告诫:
好像ORDER BY子句一样,强迫服务器返回互不相同的值也会增添运行开销.福气不得不耗费一些时间来完成这项工作.因此,不是
必须的时刻不要利用关键字DISTINCT.
成立新表
前面说过,数据库中的全部数据存储在表中.数据表包含行和列.列决意了表中数据的范例.行包含了实际的数据.
比方,数据库pubs中的表authors有九个字段.此中的一个字段名为为au_lname,这个字段被用来存储作者的名字信息.每次向这个表中增添新作者时,作者名字就被增添到这个字段,产生一条新记录.
通过定义字段,你可以成立一个新表.每个字段有一个名字和一个特定的数据范例(数据范例在背面的"字段范例"一节中报告),比方字段au_lname存储的是字符型数据.一个字段也可以存储别的范例的数据.
利用SQL Sever,成立一个新表的办法是很多的.你可以可履行一个SQL语句或利用SQL事件管理器(SQL Enterprise Manager)来成立一个新表.在下一节里,你将学会若何用SQL语句来成立一个新表.
以上是“<b>SQL数据操作底子(初级)3</b>[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论