仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1487|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网站制作之SQL言语疾速入门(三)

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:18:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
从刚开始练习的PHP基础语法练习,到PHP语言在WEB中的应用,再到实际的项目开发,如留言版,相册系统,中小型公司网站系统,以及期间做过的有关团队合作的小游戏,让我受益匪浅,学到了很多。sql言语|疾速入门   咱们平常利用SQL言语的任务过程当中,利用最多的仍是从已创立好的数据库中查询信息。上面,咱们就来具体引见一下若何利用SQL言语完成各类数据库查询操作。

SELECT…FROM

  为便利解说,咱们在数据库中创立名为Store_Information的以下数据表。

Store_Information

Store_Name
Sales
Date

Los Angeles
00
Jan-10-2000

San Diego
0
Jan-11-2000

Los Angeles
0
Jan-12-2000

Boston
0
Jan-12-2000


  SQL言语顶用于数据库查询的最复杂的号令就是SELECT…FROM,语法格局为:

SELECT "column_name" FROM "table_name"

例如,假如咱们但愿查询Store_Information数据表中一切的商铺称号时,可使用以下号令:

SELECT store_name FROM Store_Information

查询了局显示为:

Store_Name

Los Angeles

San Diego

Los Angeles

Boston

假如用户但愿一次查询多个字段,可以将所要查询的字段称号顺次到场SELECT关头字以后,两头用“,”离隔便可。

DISTINCT

  SELECT关头字撑持用户查询数据表中指定字段的一切数据,然而如许有时就会不成防止的呈现反复信息。假如用户但愿只查询那些具有分歧纪录值的信息的话,可使用SQL言语的DISTINCT关头字。语法格局以下:

SELECT DISTINCT "column_name"

FROM "table_name"

例如,咱们可使用以下号令查询Store_Information数据表具有分歧纪录值的一切纪录。

SELECT DISTINCT Store_Name FROM Store_Information

查询了局以下:

Store_Name

Los Angeles

San Diego

Boston

WHERE

  除选择具有分歧纪录值的纪录以外,有时咱们能够还会需求依据某些前提对数据库中的数据停止查询。例如,咱们能够需求查询Store_Information数据表中发卖额超越1000美圆的商铺。为此,咱们可使用SQL言语的WHERE关头字设定查询前提。语法格局以下:

SELECT "column_name"

FROM "table_name"

WHERE "condition"

由此,咱们可使用以下号令查询发卖额超越1000美圆的商铺信息:

SELECT store_name FROM Store_Information WHERE Sales > 1000

查询了局显示为:

store_name

Los Angeles

运算函数

  如今,咱们已懂得到在利用SQL言语停止数据库查询操作时可以经由过程对数值的判别设定天真的查询前提。为了加强对运算的撑持才能,SQL供应了浩瀚适用的运算函数供宽大用户利用。例如,咱们可以直接在SQL号令中挪用SUM或AVG这两个分离用于盘算总数战争均数的函数。语法格局以下:

SELECT "function type"("column_name")

FROM "table_name"

假如咱们但愿查询Store_Information数据表中一切商铺的总发卖额的话,可使用以下号令:

SELECT SUM(Sales) FROM Store_Information

查询了局显示为:

SUM(Sales)

50

COUNT

  除SUM和AVG函数以外,COUNT函数是SQL言语中另外一个较为经常使用的运算函数。COUNT函数可以用来盘算数据表中指定字段所包括的纪录数量。语法格局为:

SELECT COUNT("column_name")

FROM "table_name"

例如,假如咱们但愿查询Store_Information数据表中的有关商铺的纪录条数时,可使用以下号令:

SELECT COUNT(store_name)

FROM Store_Information

查询了局显示为:

Count(store_name)

4

COUNT函数可以和DISTINCT关头字一同利用从而可以查询数据表中指定字段中一切具有分歧纪录值的纪录数量。例如,假如咱们但愿查询Store_Information数据表中分歧商铺的数量时,可使用以下号令:

SELECT COUNT(DISTINCT store_name)

FROM Store_Information

查询了局显示为:

Count(DISTINCT store_name)

3

GROUP BY

上面咱们来进一步看一下SQL言语中的纠合函数。上文中,咱们曾利用SUM函数盘算一切商铺的发卖总额,假如咱们但愿盘算每家商铺各自的总发卖额时该怎样办呢?要完成这一目标咱们需求做两件事:起首,咱们需求查询商铺称号和发卖额两个字段;然后,咱们利用SQL言语的GROUP BY号令将发卖额依照分歧的商铺停止分组,从而盘算出分歧商铺的发卖总额。GROUP BY号令的语法格局为:

SELECT "column_name1", SUM("column_name2")

FROM "table_name"

GROUP BY "column_name1"

咱们可使用以下号令完成上述查询目标:

SELECT store_name, SUM(Sales)

FROM Store_Information

GROUP BY store_name

查询了局显示为:

store_name SUM(Sales)

Los Angeles 00

San Diego 0

Boston 0

小注:

GROUP BY关头字普通使用于同时查询多个字段并对字段停止算术运算的SQL号令中。

HAVING

用户在利用SQL言语的过程当中能够但愿处理的另外一个成绩就是对由sum或其它纠合函数运算了局的输入停止限制。例如,咱们能够只但愿看到Store_Information数据表中发卖总额超越1500美圆的商铺的信息,这时候咱们就需求利用HAVING从句。语法格局为:

SELECT "column_name1", SUM("column_name2")

FROM "table_name"

GROUP BY "column_name1"

HAVING (arithematic function condition)

(GROUP BY从句可选)

由此,咱们可使用以下号令完成上述查询目标:

SELECT store_name, SUM(sales)

FROM Store_Information

GROUP BY store_name

HAVING SUM(sales) > 1500

查询了局显示为:

store_name SUM(Sales)

Los Angeles 00

小注:

SQL言语中设定纠合函数的查询前提时利用HAVING从句而不是WHERE从句。凡是情形下,HAVING从句被放置在SQL号令的开头处。

ALIAS

上面,咱们重点引见一下若何在SQL号令中设定别号。SQL言语中普通利用两品种型的别号,分离为字段别号和数据表别号。

复杂的说,利用字段别号可以匡助咱们无效的组织查询的输入了局。例如,上文所罗列的多个实例中,当咱们盘算商铺发卖总额时,显示了局中就会呈现SUM(sales)。固然SUM(sales)其实不会对咱们了解查询了局带来方便,然而假如咱们需求在查询中利用多项庞杂运算时,显示了局就不会这么直不雅了。假如这时候咱们利用字段别号就会极大的进步查询了局的可读性。

关于数据表别号,咱们可以经由过程将别号直接放置在FROM从句中数据表称号的前面设定。数据表别号在咱们上面将要讲述的毗连多个数据表停止查询的操作中极其有效。

字段和数据表别号的语法格局以下:

SELECT "table_alias"."column_name1" "column_alias"

FROM "table_name" "table_alias"

即别号都直接放置在各自对应称号的前面,两头用空格分隔。

以Store_Information数据表为例,咱们可以在GROUP BY一节中所利用的SQL号令中设置以下字段和数据表别号:

SELECT A1.store_name Store, SUM(Sales) "Total Sales"

FROM Store_Information A1

GROUP BY A1.store_name

查询了局显示为:

Store Total Sales

Los Angeles 00

San Diego 0

Boston 0

毗连多个数据表

最初,咱们来看一下假如利用SQL言语毗连多个数据表,完成对多个数据表的查询。为便利解说,咱们在数据库平分别创立了两个名为Store_Information和Region的数据表。

Store_Information

Store_Name
Sales
Date

Los Angeles
00
Jan-10-2000

San Diego
0
Jan-11-2000

Los Angeles
0
Jan-12-2000

Boston
0
Jan-12-2000


Region

Region_Name
Store_Name

East
Boston

East
New York

West
Los Angeles

West
San Diego


上面,咱们就来看一下经由过程数据表的毗连完成按分歧区域查询发卖额。

咱们注重到在名为Region的数据表中包括区域和商铺两个字段信息,而在名为Store_Information的数据表中则包括每家商铺的发卖信息。因而,为了失掉按区域划分的发卖信息,咱们需求将两个分歧数据表的信息联合在一同停止查询。经由过程对上述两个数据表的剖析,咱们发明每一个数据表中都包括一个名为Store_Name的字段,因而,咱们可使用以下号令完成查询目标:

SELECT A1.region_name REGION, SUM(A2.Sales) SALES

FROM Geography A1, Store_Information A2

WHERE A1.store_name = A2.store_name

GROUP BY A1.region_name

查询了局显示为:

REGION SALES

East 0

West 50

申明:

上述查询号令的前两行用于指定所要查询的方针字段,分离为Region数据表中的Region_Name字段和Store_Information数据表中Sales字段的纪录值总数。这里,咱们设定两个字段的别号分离为REGION和SALES,两个数据表的别号分离为A1和A2。假如咱们只利用字段别号而不设定命据表别号的话,上述SQL号令的第一行就酿成 以下模式:

SELECT Region.Region_Name REGION, SUM(Store_Information.Sales) SALES

由此咱们可以看出无效的利用数据表别号,可以极大的简化对多个数据表停止操作的SQL号令。

上述查询号令的第3行动WHERE从句,恰是该从句设定了两个数据表的毗连前提。由于咱们但愿确保Region数据表中的Store_Name字段可以与Store_Information数据表中的同名字段绝对应,所以咱们划定两个字段的纪录值应该相等。在毗连多个数据表时,必定要正确设定命据表的毗连前提,假如WHERE从句设定不准确,则能够招致查询了局中呈现浩瀚不相干的数据
  在一个团队之中或者说是在一个公司的工作岗位上,需要注重团队之间的交流合作;在学习或工作上都要端正自己的态度,要以认真的态度来对每件事,这样才能让自己更快的投入、更快的学习,而不至于浪费自己的时间。
透明 该用户已被删除
沙发
发表于 2015-2-4 11:01:51 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
蒙在股里 该用户已被删除
板凳
发表于 2015-2-9 22:18:45 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
简单生活 该用户已被删除
地板
发表于 2015-2-28 00:23:57 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
小女巫 该用户已被删除
5#
发表于 2015-3-7 17:43:02 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
若天明 该用户已被删除
6#
发表于 2015-3-13 07:07:11 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
因胸联盟 该用户已被删除
7#
发表于 2015-3-16 11:22:00 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
爱飞 该用户已被删除
8#
发表于 2015-3-22 22:12:34 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
分手快乐 该用户已被删除
9#
发表于 2015-3-27 19:08:36 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
若相依 该用户已被删除
10#
发表于 2015-3-28 17:00:57 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
小妖女 该用户已被删除
11#
发表于 2015-4-10 06:43:20 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
金色的骷髅 该用户已被删除
12#
发表于 2015-4-16 03:43:43 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
兰色精灵 该用户已被删除
13#
发表于 2015-4-22 10:32:57 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
深爱那片海 该用户已被删除
14#
发表于 2015-4-27 00:32:58 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
只想知道 该用户已被删除
15#
发表于 2015-5-6 09:10:54 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
冷月葬花魂 该用户已被删除
16#
发表于 2015-5-6 20:09:35 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
17#
发表于 2015-5-6 23:10:23 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
飘飘悠悠 该用户已被删除
18#
发表于 2015-6-15 14:53:08 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
精灵巫婆 该用户已被删除
19#
发表于 2015-6-27 18:06:18 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
老尸 该用户已被删除
20#
发表于 2015-6-30 21:36:00 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 09:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表