仓酷云

标题: MYSQL网页设计SQL数据操纵基本(中级)8 [打印本页]

作者: 飘飘悠悠    时间: 2015-1-16 22:34
标题: MYSQL网页设计SQL数据操纵基本(中级)8
这一切听起来不错,无疑DBaaS具有很多相对于RDBMS的优势。然而MySQL学习教程,DBaaS也有其局限性,云服务中固有的局限性就是之一。当客户开始将数据放入云端时,他们会遭遇到无法控制的网络性能问题。数据更新纪录

要修正表中已存在的一条或多笔记录,应利用SQLUPDATE语句。同DELETE语句一样,UPDATE语句可使用WHERE子句来选择更新特定的纪录。请看这个例子:

UPDATEmytableSETfirst_column=’Updated!’WHEREsecond_column=’UpdateMe!’

这个UPDATE语句更新一切second_column字段的值为’UpdateMe!’的纪录。对一切被选中的纪录,字段first_column的值被置为’Updated!’。

上面是UPDATE语句的完全句法:

UPDATE{table_name|view_name}SET[{table_name|view_name}]

{column_list|variable_list|variable_and_column_list}

[,{column_list2|variable_list2|variable_and_column_list2}…

[,{column_listN|variable_listN|variable_and_column_listN}]]

[WHEREclause]

注重:

你能够对文本型字段利用UPDATE语句。可是,假如你必要更新很长的字符串,应利用UPDATETEXT语句。这部份内容对本书来讲太初级了,因而不加会商。要懂得更多的信息,请参考MicrosoftSQLSever的文档。

假如你不供应WHERE子句,表中的一切纪录都将被更新。偶然这是有效的。比方,假如你想把表titles中的一切书的代价更加,你可使用以下的UPDATE语句:

你也能够同时更新多个字段。比方,上面的UPDATE语句同时更新first_column,second_column,和third_column这三个字段:

UPDATEmytableSETfirst_column=’Updated!’

Second_column=’Updated!’

Third_column=’Updated!’

WHEREfirst_column=’UpdateMe1’

技能:

SQL疏忽语句中过剩的空格。你能够把SQL语句写成任何你最简单读的格局。

 

用SELECT创立纪录和表

你大概已注重到,INSERT语句与DELETE语句和UPDATE语句有一点分歧,它一次只操纵一个纪录。但是,有一个办法可使INSERT语句一次增加多个纪录。要作到这一点,你必要把INSERT语句与SELECT语句分离起来,象如许:

INSERTmytable(first_column,second_column)

SELECTanother_first,another_second

FROManothertable

WHEREanother_first=’CopyMe!’

这个语句从anothertable拷贝纪录到mytable.只要表anothertable中字段another_first的值为’CopyMe!’的纪录才被拷贝。

当为一个表中的纪录创建备份时,这类情势的INSERT语句长短常有效的。在删除一个表中的纪录之前,你能够先用这类办法把它们拷贝到另外一个表中。

假如你必要拷贝全部表,你可使用SELECTINTO语句。比方,上面的语句创立了一个名为newtable的新表,该表包括表mytable的一切数据:

SELECT*INTOnewtableFROMmytable

你也能够指定只要特定的字段被用来创立这个新表。要做到这一点,只需在字段列表中指定你想要拷贝的字段。别的,你可使用WHERE子句来限定拷贝到新表中的纪录。上面的例子只拷贝字段second_columnd的值即是’CopyMe!’的纪录的first_column字段。

SELECTfirst_columnINTOnewtable

FROMmytable

WHEREsecond_column=’CopyMe!’

利用SQL修正已创建的表是很坚苦的。比方,假如你向一个表中增加了一个字段,没有简单的举措往复除它。别的,假如你不当心把一个字段的数据范例给错了,你将没有举措改动它。可是,利用本节中报告的SQL语句,你能够绕过这两个成绩。

比方,假定你想从一个表中删除一个字段。利用SELECTINTO语句,你能够创立该表的一个拷贝,但不包括要删除的字段。这使你既删除该字段,又保存了不想删除的数据。

假如你想改动一个字段的数据范例,你能够创立一个包括准确数据范例字段的新表。创立好该表后,你就能够分离利用UPDATE语句和SELECT语句,把本来表中的一切数据拷贝到新表中。经由过程这类办法,你既能够修正表的布局,又能保留原本的数据。

汇合函数

到如今为止,你只进修了怎样依据特定的前提从表中掏出一条或多笔记录。可是,假设你想对一个表中的纪录举行数据统计。比方,假如你想统计存储在表中的一次平易近意检验的投票了局。大概你想晓得一个会见者在你的站点上均匀消费了几工夫。要对表中的任何范例的数据举行统计,都必要利用汇合函数。

MicrosoftSQL撑持五品种型的汇合函数。你能够统计纪录数量,均匀值,最小值,最年夜值,大概乞降。当你利用一个汇合函数时,它只前往一个数,该数值代表这几个统计值之一。

注重:

要在你的ASP网页中利用汇合函数的前往值,你必要给该值起一个名字。要作到这一点,你能够在SELECT语句中,在汇合函数前面紧跟一个字段名,以下例所示:

SELECTAVG(vote)‘the_average’FROMopinion

在这个例子中,vote的均匀值被定名为the_average。如今你能够在你的ASP网页的数据库办法中利用这个名字。

统计字段值的数量

函数COUNT()大概是最有效的汇合函数。你能够用这个函数来统计一个表中有几笔记录。这里有一个例子:

SELECTCOUNT(au_lname)FROMauthors

这个例子盘算表authors中名字(lastname)的数量。假如不异的名字呈现了不止一次,该名字将会被盘算屡次。假如你想晓得名字为某个特定值的作者有几个,你可使用WHERE子句,以下例所示:

SELECTCOUNT(au_lname)FROMauthorsWHEREau_lname=’Ringer’

这个例子前往名字为’Ringer’的作者的数量。假如这个名字在表authors中呈现了两次,则次函数的前往值是2。

假设你想晓得有分歧名字的作者的数量。你能够经由过程利用关头字DISTINCT来失掉该数量。以下例所示:

SELECTCOUNT(DISTINCTau_lname)FROMauthors

假如名字’Ringer’呈现了不止一次,它将只被盘算一次。关头字DISTINCT决意了只要互不不异的值才被盘算。

一般,当你利用COUNT()时,字段中的空值将被疏忽。一样平常来讲,这恰是你所但愿的。可是,假如你仅仅想晓得表中纪录的数量,那末你必要盘算表中一切的纪录─不论它是不是包括空值。上面是一个怎样做到这一点的例子:

SELECTCOUNT(*)FROMauthors

注重函数COUNT()没有指定任何字段。这个语句盘算表中一切纪录所数量,包含有空值的纪录。因而,你不必要指定要被盘算的特定字段。

函数COUNT()在良多分歧情形下是有效的。比方,假定有一个表保留了对你站点的质量举行平易近意查询拜访的了局。这个表有一个名为vote的字段,该字段的值要末是0,要末是1。0暗示否决票,1暗示同意票。要断定同意票的数目,你能够一切上面的SELECT语句:

SELECTCOUNT(vote)FROMopinion_tableWHEREvote=1

盘算字段的均匀值

利用函数COUNT(),你能够统计一个字段中有几个值。但偶然你必要盘算这些值的均匀值。利用函数AVG(),你能够前往一个字段中一切值的均匀值。

假设你对你的站点举行一次较为庞大的平易近意查询拜访。会见者能够在1到10之间投票,暗示他们喜好你站点的水平。你把投票了局保留在名为vote的INT型字段中。要盘算你的用户投票的均匀值,你必要利用函数AVG():

SELECTAVG(vote)FROMopinion

这个SELECT语句的前往值代表用户对你站点的均匀喜好水平。函数AVG()只能对数值型字段利用。这个函数在盘算均匀值时也疏忽空值。

盘算字段值的和

假定你的站点被用来出卖卡片,已运转了两个月,是该盘算赚了几钱的时分了。假定有一个名为orders的表用来纪录一切会见者的定购信息。要盘算一切定购量的总和,你可使用函数SUM():

SELECTSUM(purchase_amount)FROMorders

函数SUM()的前往值代表字段purchase_amount中一切值的均匀值。字段purchase_amount的数据范例大概是MONEY型,但你也能够对别的数值型字段利用函数SUM()。

前往最年夜值或最小值

再一次假定你有一个表用来保留对你的站点举行平易近意查询拜访的了局。会见者能够选择从1到10的值来暗示他们对你站点的评价。假如你想晓得会见者对你站点的最高评价,你可使用以下的语句:

SELECTMAX(vote)FROMopinion

你大概但愿有人对你的站点赐与了很高的评价。经由过程函数MAX(),你能够晓得一个数值型字段的一切值中的最年夜值。假如有人对你的站点投了数字10,函数MAX()将前往该值。

另外一方面,假设你想晓得会见者对你站点的的最低评价,你可使用函数MIN(),以下例所示:

SELECTMIN(vote)FROMopinion

函数MIN()前往一个字段的一切值中的最小值。假如字段是空的,函数MIN()前往空值。

别的经常使用的SQL表达式,函数,和历程

这一节将先容一些别的的SQL手艺。你将进修怎样从表中掏出数据,其某个字段的值处在必定的局限,你还将进修怎样把字段值从一品种型转换成另外一品种型,怎样操纵字符串和日期工夫数据。最初,你将学会一个发送邮件的复杂办法。

经由过程婚配必定局限的值来掏出数据

假定你有一个表用来保留对你的站点举行平易近意查询拜访的了局。如今你想向一切对你的站点的评价在7到10之间的会见者发送书面的感激信。要失掉这些人的名字,你可使用以下的SELECT语句:

SELECTusernameFROMopinionWHEREvote>6andvote<11

这个SELECT语句会完成你的请求。你利用上面的SELECT语句也能够失掉一样的了局:

SELECTusernameFROMopinionWHEREvoteBETWEEN7AND10

这个SELECT语句与上一个语句是等价的。利用哪种语句是编程作风的成绩,但你会发明利用表达式BETWEEN的语句更容易读。

如今假定你只想掏出对你的站点投了1大概10的会见者的名字。要从表opinion中掏出这些名字,你可使用以下的SELECT语句:

SELECTusernameFROMopinionWHEREvote=1orvote

这个SELECT语句会前往准确的了局,没有来由不利用它。可是,存在一种等价的体例。利用以下的SELECT能够失掉不异的了局:

SELECTusernameFROMopinionWHEREvoteIN(1,10)

注重表达式IN的利用。这个SELECT语句只掏出vote的值即是括号中的值之一的纪录。

你也能够利用IN来婚配字符数据。比方,假定你只想掏出BillGates或PresidentClinton的投票值。你可使用以下的SELECT语句:

SELECTvoteFROMopinionWHEREusernameIN(‘BillGates’,’PresidentClinton’)

最初,你能够在利用BETWEEN或IN的同时利用表达式NOT。比方,要掏出那些投票值不在7到10之间的人的名字,你可使用以下的SELECT语句:

SELECTusernameFROMopinionWHEREvoteNOTBETWEEN7and10

要拔取那些某个字段的值不在一列值当中的纪录,你能够同时利用NOT和IN,以下例所示:

SELECTvoteFROMopinion

WHEREusernameNOTIN(‘BillGates’,’PresidentClinton’)

你不是必需在SQL语句中利用BETWEEN或IN,可是,要使你的查询更靠近天然言语,这两个表达式是有匡助的。
而且其固有的弹性使得它易于扩展以处理不断增长的需求,或当需求MySQL学习教程减弱时缩减规模。
作者: 谁可相欹    时间: 2015-1-19 17:12
所以你总能得到相应的升级版本,来满足你的需求。
作者: 兰色精灵    时间: 2015-1-25 11:15
比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
作者: 活着的死人    时间: 2015-2-2 21:53
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
作者: 精灵巫婆    时间: 2015-2-8 07:55
是要和操作系统进行Socket通讯的场景。否则建议慎重!
作者: 冷月葬花魂    时间: 2015-2-25 01:27
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
作者: 灵魂腐蚀    时间: 2015-3-7 15:15
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
作者: 只想知道    时间: 2015-3-15 08:43
sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2