首页 / PHP / 请教一些SQL的查询知识
请教一些SQL的查询知识
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了请教一些SQL的查询知识,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3365字,纯文字阅读大概需要5分钟。
内容图文
![请教一些SQL的查询知识](/upload/InfoBanner/zyjiaocheng/197/315c6a54347e4495bf3a3ac1e5e2db35.jpg)
己了解的基本知识如下:
SELECT、FROM、WHERE、GROUP BY、ORDER BY、LIMIT(部分聚合函数、非聚合函数。
联合查询、连接查询基本了解(union、union all、join、left join、right join等等)。
对SQL的执行顺序有一点了解。
最困惑的问题如下:
对一些比较复杂的查询无从下手。在网上也浏览了一些,比如说化繁为简,复杂的SQL都是由简单的SQL堆叠而成,虽然听起来好像是这个道理,可自去想去写时又无从下手。
请问我该如何去突破呢,有没有相关的贴子OR文档OR书籍,请大家发一下。谢谢。
回复讨论(解决方案)
怎么有点本末倒置的感觉,难道你的数据不是按便于查询组织的的么?
说的简单点可以这样理解:
如果是单表查询,写起来没问题。
如果是复杂点的数个表查询的SQL有时就无从写起。
其实我也知道无非就是联合查询、连接查询、子查询,然后运用相关SQL聚合函数、非聚合函数、GROUP BY等。可对于复杂的业务逻辑我不太明白何时用GROUP BY,何时运用连接查询。
连接查询:由于你按数据间的关系,把数据按相关性的程度分成了多个表。所以在需要取得的数据分布在二个及以上的表中时,就需要将先挂的表连接成一个大表
GROUP: 分组,当你需要考察同类数据的数理特征时,就需要分组(计数、求和、平均数...)
好像有点点觉悟了。谢谢版主。
其它的朋友们也请多多指点。
没什么捷径,看文档多练。
虽然没有系统的去看书,可也常常上论坛潜下水,肿么水平提升得这么慢呢。难道我的IQ有点不肿么样。
那些基本的很好理解,只是时间问题,许多复杂的只能在请教老鸟的过程中慢慢积累。
比如:
insert into image_tb (images,link)
select CONCAT(COALESCE((SELECT MAX(ID) + 1 FROM image_tb),1), '.jpeg'),'".$link."'
from image_tb
这个已经搞明白了
再比如
SELECT * from
(SELECT @rn:=if(@pv=source, @rn+1, 1) as rId,
'a' t_name,id,title, @pv:=source,description,date,fullindex
FROM table1 a1
JOIN (SELECT @pv:=0, @rId:=0)tmp
WHERE MATCH (fullindex) AGAINST ('+bool' IN BOOLEAN MODE)
ORDER BY source, date)a
WHERE a.rId <=5;
为什么会有 @ if,到现在还没搞懂。
看手册是最好的
@:
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
if:
http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html
那些基本的很好理解,只是时间问题,许多复杂的只能在请教老鸟的过程中慢慢积累。
比如:
insert into image_tb (images,link)
select CONCAT(COALESCE((SELECT MAX(ID) + 1 FROM image_tb),1), '.jpeg'),'".$link."'
from image_tb
这个已经搞明白了
再比如
SELECT * from
(SELECT @rn:=if(@pv=source, @rn+1, 1) as rId,
'a' t_name,id,title, @pv:=source,description,date,fullindex
FROM table1 a1
JOIN (SELECT @pv:=0, @rId:=0)tmp
WHERE MATCH (fullindex) AGAINST ('+bool' IN BOOLEAN MODE)
ORDER BY source, date)a
WHERE a.rId <=5;
为什么会有 @ if,到现在还没搞懂。
多多练习项目,当你做项目的时候碰到需求你就会有深刻体会...
看手册是最好的
@:
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
if:
http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html
英文的手册,慢慢看。
遇到基础问题还是多学会找资料看吧。
一般使用数据管理来处理问题,查询太多的话,会造成服务器相应过慢的。
比如
管理员表 id,用户名,密码,组ID
管理组表 id,组名,权限
...我一般要建个索引表
索引 管理员ID,管理组id
这样的话 你在使用的过程中就会减少很多的查询量
从时间复杂度上来说 可以减去一个次方
有本书不错,《数据库原理及应用教程》,里头有数据库操作的详细讲解。
找一些开源的项目也不错
内容总结
以上是互联网集市为您收集整理的请教一些SQL的查询知识全部内容,希望文章能够帮你解决请教一些SQL的查询知识所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。