活着的死人 发表于 2015-1-16 22:34:33

MYSQL教程之SQL数据操纵基本(低级)3

DBaaS解决方案可以降低首次投入成本,对于那些小企业来说,他们往往认为内部部署的数据库成本太高,DBaaS的成本和灵活性优势对小企业吸引力更大,他们是云数据库解决方案的重点客户群体。数据操纵字段

一般,当你从一个表中掏出字段值时,该值与创立该表时所界说的字段名接洽在一同。假如你从表authors当选择一切的作者名字,一切的值将会与字段名au_lname相接洽。可是在某些情形下,你必要对字段名举行操纵。在SELECT语句中,你能够在缺省字段名前面仅跟一个新名字来代替它。比方,能够用一个更直不雅易读的名字AuthorLastName来取代字段名au_lname:

SELECTau_lname"AuthorLastName"FROMauthors

当这个SELECT语句实行时,来自字段au_lname的值会与“AuthorLastName”相接洽。查询了局多是如许:

AuthorLastName

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

White

Green

Carson

O’Leary

Straight



(23row(s)affected)

注重字段题目不再是au_lname,而是被AuthorLastName所代替。

你也能够经由过程实行运算,来操纵从一个表前往的字段值。比方,假如你想把表titles中的一切书的代价更加,你可使用上面的
SELECT语句:

SELECTprice*2FROMtitles

当这个查询实行时,每本书的代价从表中掏出时城市更加。可是,经由过程这类路子操纵字段不会改动存储在表中的书价。对字段的运
算只会影响SELECT语句的输入,而不会影响表中的数据。为了同时显现书的原始代价和跌价后的新代价,你可使用上面的查询:

SELECTprice"Originalprice",price*2"Newprice"FROMtitles

当数据从表titles中掏出时,原始代价显现在题目Originalprice上面,更加后的代价显现在题目Newprice上面。了局多是这
样:

originalpricenewprice

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

39.98
11.9523.90

5.98
39.98


(18row(s)affected)

你可使用年夜多半尺度的数学运算符来操纵字段值,如加(+),减(-),乘(*)和除(/)。你也能够一次对多个字段举行运
算,比方:

SELECTprice*ytd_sales"totalrevenue"FROMtitles

在这个例子中,经由过程把代价与发卖量相乘,盘算出了每种书的总发卖额。这个SELECT语句的了局将是如许的:

totalrevenue

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

81,859,05

46,318,20

55,978,78

81,859,05

40,619,68



(18row(s)affected)

最初,你还可使用毗连运算符(它看起来像个加号)来毗连两个字符型字段:

SELECTau_fname+""+au_lname"authorname"FROMauthors

在这个例子中,你把字段au_fname和字段au_lname粘贴在一同,两头用一个逗号离隔,并把查询了局的题目指定为author
name。这个语句的实行了局将是如许的:

authornames

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

JohnsonWhite

MarjorieGreen

CherylCarson

MichaelO’Leary

DeanStraight



(23row(s)affected)

能够看到,SQL为你供应了对查询了局的很多把持。你应当在ASP编程过程当中充实使用这些长处。利用SQL来操纵查询了局几近老是
比利用有一样感化的剧本效力更高。

排序查询了局

本章的先容中曾夸大过,SQL表没有内涵的按次。比方,从一个表中取第二个纪录是没成心义的。从SQL的角度看来,没有一个纪录
在任何其他纪录之前。

但是,你能够利用一个SQL查询了局的按次。在缺省情形下,当纪录从表中掏出时,纪录不以特定的按次呈现。比方,当从表
authors中掏出字段au_lname时,查询了局显现成如许:

au_lname

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

White

Green

Carson

O’Leary

Straight



(23row(s)affected)

看一列没有特定按次的名字是很不便利的。假如把这些名字按字母按次分列,读起来就会简单很多。经由过程利用ORDERBY子句,你可
以强迫一个查询了局按升序分列,就像如许:

SELECTau_lnameFROMauthorsORDERBYau_lname

当这个SELECT语句实行时,作者名字的显现将按字母按次分列。ORDERBY子句将作者名字按升序分列。

你也能够同时对多个列利用ORDERBY子句。比方,假如你想同时按升序显现字段au_lname和字段au_fname,你必要对两个字段都
举行排序:

SELECTau_lname,au_fnameFROMauthorsORDERBYau_lname,au_fname

这个查询起首把了局按au_lname字段举行排序,然后按字段au_fname排序。纪录将按以下的按次掏出:

au_lnameau_fname

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

BennetAbraham

RingerAlbert

RingerAnne

SmithMeander



(23row(s)affected)

注重有两个作者有不异的名字Ringer。名为AlbertRinger的作者呈现名为AnneRinger的作者之前,这是由于姓Albert按字母顺
序应排在姓Anne之前。

假如你想把查询了局按相反的按次分列,你可使用关头字DESC。关头字DESC把查询了局按降序分列,以下例所示:

SELECTau_lname,au_fnameFROMauthors

WHEREau_lname=”Ringer”ORDERBYau_lname,au_fnameDESC

这个查询从表authors中掏出一切名字为Ringer的作者纪录。ORDERBY子句依据作者的名字和姓,将查询了局按降序分列。了局是
如许的:

au_lnameau_fname

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

RingerAnne

RingerAlbert

(2row(s)affectec)

注重在这个表中,姓Anne呈现在姓Albert之前。作者名字按降序显现。

你也能够按数值型字段对一个查询了局举行排序。比方,假如你想按降序掏出一切书的代价,你可使用以下的SQL查询:

SELECTpriceFROMtitlesORDERBYpriceDESC

这个SELECT语句从表中掏出一切书的代价,显现了局时,代价低的书先显现,代价高的书后显现。

告诫:

不是出格必要时,不要对查询了局举行排序,由于服务器完成这项事情要费些力量。这意味着带有ORDERBY子句的SELECT语句执
行起来比一样平常的SELECT语句花的工夫长。

掏出互不不异的纪录

一个表有大概在统一列中有反复的值。比方,数据库pubs的表authors中有两个作者的名字是Ringer。假如你从这个表中掏出一切
的名字,名字Ringer将会显现两次。

在特定情形下,你大概只要乐趣从一个表中掏出互不不异的值。假如一个字段有反复的值,你大概但愿每一个值只被拔取一次,你可
以利用关头字DISTINCT来做到这一点:

SELCETDISTINCTau_lnameFROMauthorsWHEREau_lname="Ringer"

当这个SELECT语句实行时,只前往一个纪录。经由过程在SELECT语句中包括关头字DISTINCT,你能够删除一切反复的值。比方,假定
有一个关于旧事组信息公布的表,你想掏出一切曾在这个旧事组中公布信息的人的名字,那末你可使用关头字DISTINCT。每一个用
户的名字只取一次――只管有的用户公布了不止一篇信息。

告诫:

好像ORDERBY子句一样,强迫服务器前往互不不异的值也会增添运转开支。福分不能不消费一些工夫来完成这项事情。因而,不是
必需的时分不要利用关头字DISTINCT。

创立新表

后面说过,数据库中的一切数据存储在表中。数据表包含行和列。列决意了表中数据的范例。行包括了实践的数据。

比方,数据库pubs中的表authors有九个字段。个中的一个字段名为为au_lname,这个字段被用来存储作者的名字信息。每次向这个表中增加新作者时,作者名字就被增加到这个字段,发生一条新纪录。

经由过程界说字段,你能够创立一个新表。每一个字段有一个名字和一个特定的数据范例(数据范例在前面的“字段范例”一节中报告),比方字段au_lname存储的是字符型数据。一个字段也能够存储别的范例的数据。

利用SQLSever,创立一个新表的办法是良多的。你能够可实行一个SQL语句或利用SQL事件办理器(SQLEnterpriseManager)来创立一个新表。鄙人一节里,你将学会怎样用SQL语句来创立一个新表。
应用程序需要使用数据库,数据库本身需要设计、开发和部署。还有MySQL学习教程,客户怎样实施混合系统,或者需要帮助管理多个云服务?

谁可相欹 发表于 2015-1-18 18:13:41

你可以简单地认为适合的就是好,不适合就是不好。

若相依 发表于 2015-1-22 19:55:18

groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。

兰色精灵 发表于 2015-1-31 10:46:26

财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..

柔情似水 发表于 2015-2-6 19:00:33

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。

飘飘悠悠 发表于 2015-2-18 08:44:31

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

再现理想 发表于 2015-3-6 02:13:01

连做梦都在想页面结构是怎么样的,绝非虚言

灵魂腐蚀 发表于 2015-3-12 18:40:04

相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐

第二个灵魂 发表于 2015-3-20 01:50:00

代替了原来VB式的错误判断。比Oracle高级不少。
页: [1]
查看完整版本: MYSQL教程之SQL数据操纵基本(低级)3