SQL语句的良好编写方法【DOC精选】.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL语句的良好编写方法【DOC精选】

SQL语句的良好编写方法 Author: Inthirties Date: 2008-11-21 1.涉及到多个表的JOIN语句的写法 很多开发人员对于涉及到多个表的JOIN语句,不知道如何下手,以及好何写出一个效率好的JOIN语句来,在这里,我根据我的一些经验,给出一些建议供大家参考: 了解一个SELECT 语句的结构 通常,一个SELECT语句的结构是这样的: SELECT select_column_list--------- step_4 FROM table_list---------step_1 WHERE join_condition---------step_2 AND predicates--------- step_3 ORDER BY orderby_clause--------- step_5 SELECT语句的书写顺序 通常情况下,SELECT语句的结构都是如我上面所描述的那样,大家在写SQL语句时,不妨先写好框架,如:先写SELECT语句的一些关键字: SELECT * FROM WHERE ORDER BY 框架写好后,我们再逐步加精. 书写的顺序按上图我标的顺序: 第一步,先写查询所要涉及到的表,不管有多少个表,我们先把表名列上去,为了后面语句的简洁,可以给表加上别名,如果有同一个表要使用几次,则要使用不同的别名来标识,或者容易产生岐义: SELECT * FROM pm_user a, pm_company b…pm_user c WHERE ORDER BY 写好table_list后,我们开始来定义JOIN的连接条件,注意,对于涉及到多个表的连接,我们一定要避免不定义连接条件的情况,因为这会产生迪卡尔连接(Cartesian Joins) SELECT * FROM pm_user a, pm_company b…pm_user c….表列表 WHERE pid=pid……连接条件 ORDER BY 当所有的连接条件都定义好了以后,我们要再检查一下,看是否有其中的两个表完全没有定义连接条件的,这在JOIN的表很多的情况下,大家很容易犯的错误。一个好的检测方法是:书写好SQL后,在pl/sql developer中按F5键查看执行计划,当SQL的执行计划中有出现关键字为Cartesian的操作时,就表示我们不小心产生了一个迪卡尔连接,要回去再REVIEW一下我们定义的连接条件 写好连接条件后,接下来,我们就可以在WHERE子句中接着写过滤条件(我们把它称之为predicates),即有具体值,能过滤掉一部分记录的WHERE条件。通常,良好的编写习惯是将过滤条件写在WHERE子句的最下部,这样,SQL引擎在对表进行连接操作时,会先过滤掉参与连接的表的一部分记录,这样,参与连接的数据集就会少一点,从而连接操作的成本也小一点: SELECT * FROM pm_user a, pm_company b…pm_user c….表列表 WHERE pid=pid……连接条件 And a.userid=123456 and …….过滤条件 ORDER BY 写好过滤条件后,基本上WHERE子句就写完了,接着我们就可以来定义查询字段列表了(select_column_list),即查询执行完后我们想要看到的字段。如果有同名的字段,可以定义字段别名(如下例中的和) SELECT a.userid, as username, as company_name…查询字段列表 FROM pm_user a, pm_company b…pm_user c….表列表 WHERE pid=pid……连接条件 And a.userid=123456 and …….过滤条件 ORDER BY 定义ORDER BY 子句。ORDER BY即排序字段。因为排序操作通常是一个SELECT语句的最后一步操作,所以,通常,ORDER BY 子句也可以放到最后来写,如果查询字段列表中有定义别名,排序字段中也可以使用表名(如下例中的username): SELECT a.userid, as username, as company_name…查询字段列表 FROM pm_user a, pm_company b…pm_user c….表列表 WHERE pid=pid……连接条件 And a.userid=123456 and …….过滤条件 ORDER BY a.userid,username….排序字段 经过上面这些步骤,基本上,一个SELECT语句就完成了。 良好性能JOIN语句的写法 下面介绍一下如何写一个执行性能良好的JOIN语句 尽量写平级的连接,不要写

文档评论(0)

taotao0b + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档