sql语句的良好编写方法

sql语句的良好编写方法

ID:18810699

大小:88.00 KB

页数:6页

时间:2018-09-25

sql语句的良好编写方法_第1页
sql语句的良好编写方法_第2页
sql语句的良好编写方法_第3页
sql语句的良好编写方法_第4页
sql语句的良好编写方法_第5页
资源描述:

《sql语句的良好编写方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SQL语句的良好编写方法Author:InthirtiesDate:2008-11-211.涉及到多个表的JOIN语句的写法很多开发人员对于涉及到多个表的JOIN语句,不知道如何下手,以及好何写出一个效率好的JOIN语句来,在这里,我根据我的一些经验,给出一些建议供大家参考:(1)了解一个SELECT语句的结构通常,一个SELECT语句的结构是这样的:SELECTselect_column_list---------step_4FROMtable_list---------step_1WHEREj

2、oin_condition---------step_2ANDpredicates---------step_3ORDERBYorderby_clause---------step_5(2)SELECT语句的书写顺序通常情况下,SELECT语句的结构都是如我上面所描述的那样,大家在写SQL语句时,不妨先写好框架,如:先写SELECT语句的一些关键字:SELECT*FROMWHEREORDERBY框架写好后,我们再逐步加精.书写的顺序按上图我标的顺序:n第一步,先写查询所要涉及到的表,不管有多少个表

3、,我们先把表名列上去,为了后面语句的简洁,可以给表加上别名,如果有同一个表要使用几次,则要使用不同的别名来标识,或者容易产生岐义:SELECT*FROMpm_usera,pm_companyb…pm_usercWHEREORDERBYn写好table_list后,我们开始来定义JOIN的连接条件,注意,对于涉及到多个表的连接,我们一定要避免不定义连接条件的情况,因为这会产生迪卡尔连接(CartesianJoins)SELECT*FROMpm_usera,pm_companyb…pm_userc….

4、表列表WHEREa.compid=b.compid……连接条件ORDERBYn当所有的连接条件都定义好了以后,我们要再检查一下,看是否有其中的两个表完全没有定义连接条件的,这在JOIN的表很多的情况下,大家很容易犯的错误。一个好的检测方法是:书写好SQL后,在pl/sqldeveloper中按F5键查看执行计划,当SQL的执行计划中有出现关键字为Cartesian的操作时,就表示我们不小心产生了一个迪卡尔连接,要回去再REVIEW一下我们定义的连接条件n写好连接条件后,接下来,我们就可以在WHER

5、E子句中接着写过滤条件(我们把它称之为predicates),即有具体值,能过滤掉一部分记录的WHERE条件。通常,良好的编写习惯是将过滤条件写在WHERE子句的最下部,这样,SQL引擎在对表进行连接操作时,会先过滤掉参与连接的表的一部分记录,这样,参与连接的数据集就会少一点,从而连接操作的成本也小一点:SELECT*FROMpm_usera,pm_companyb…pm_userc….表列表WHEREa.compid=b.compid……连接条件Anda.userid=123456and…….过

6、滤条件ORDERBYn写好过滤条件后,基本上WHERE子句就写完了,接着我们就可以来定义查询字段列表了(select_column_list),即查询执行完后我们想要看到的字段。如果有同名的字段,可以定义字段别名(如下例中的a.name和b.name)SELECTa.userid,a.nameasusername,b.nameascompany_name…查询字段列表FROMpm_usera,pm_companyb…pm_userc….表列表WHEREa.compid=b.compid……连接条件

7、Anda.userid=123456and…….过滤条件ORDERBYn定义ORDERBY子句。ORDERBY即排序字段。因为排序操作通常是一个SELECT语句的最后一步操作,所以,通常,ORDERBY子句也可以放到最后来写,如果查询字段列表中有定义别名,排序字段中也可以使用表名(如下例中的username):SELECTa.userid,a.nameasusername,b.nameascompany_name…查询字段列表FROMpm_usera,pm_companyb…pm_userc….表

8、列表WHEREa.compid=b.compid……连接条件Anda.userid=123456and…….过滤条件ORDERBYa.userid,username….排序字段经过上面这些步骤,基本上,一个SELECT语句就完成了。(2)良好性能JOIN语句的写法下面介绍一下如何写一个执行性能良好的JOIN语句<1>尽量写平级的连接,不要写嵌套的连接什么是平级的连接呢?平级的连接是指连接的表都在同一级的查询结构,如下例的表,即为平级的连接:SELECTa.userid,a.name

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。