当前位置:操作系统 > Unix/Linux >>

关于left,right,inner关键字

关于left,right,inner关键字
 
---一定要注意细节,细节很重要! 比如说 写代码 的时候一定要记住加注释!
 1.排版-缩排
在写sql的时候,尤其是写批次,一定要注意缩排!这样美观,看起来方便。虽然是细节,但是很重要。
当然详细设计中的sql也要这样去做!
2.表关联
说到表关联,不得不说 left,inner,right 这几个关键字了。(这里只介绍 left  ,right就大同小异了)
eg: A 是主表(主键:user_code)   B是子表  (字段 user_code 是外键,受到A表中user_code 的约束,B表user_code不能为空)
     2.1    摒弃 from A,B where A.user_code = B.user_code 的写法  
因为如果 关联的表 很多的话,关联条件就会很复杂,读起来很不方便,也不美观。有时候自己写的都得看半天,何况别人看呢...
即使就是 只写两个表的关联,也不能这样写,因为这就是要养成良好的习惯,这就是细节。
应该这么写: 
from A inner join B on A.user_code = B.user_code

 

    2.2    简单说一下 left  inner 区别 (B表是子表,前提都是  select count(1) ......  )  
A left join B on A.user_code = B.user_code  这样出来的数据,一定会 大于等于 B表中的数据
B left join A on A.user_code = B.user_code   这样出来的数据,一定会  等于 B 表中的数据
       A inner join B on A.user_code = B.user_code 这样出来的数据,
   如果B表user_code 数据没有空,就会 等于 B表中数据。

 

2012-5-19 add by xingshi89 //添加该文章以下内容
3.表关联的大多数情况
为了避免客户提供的原始数据的不准确给项目带来的错误,在日常做项目中,只是给表设置了逻辑上的主外键,并没有在数据库中强制约束。这样以来  在上述举到的 A表 B表的关系就只是理论,而不是实际应用了
所以 把条件改成这样:
eg:A 是主表(主键:user_code  )   B是子表  (也有字段 user_code )  A表 B表只是这样设计了,但是并没有建立主外键约束
         A表user_code是主键所以不能为空,B表user_code 可以为空
假如A表 20条数据,B表40条数据 那么
select count(1) from A left join B on A.user_code = B.user_code 
得到的数据会有  (  20 ~ 59  ) 条数据
 最少20数据的情况是:当B表中有20条 或者 更少的数据 可以跟A表中数据相匹配时,结果就是20条。
最多59条数据的情况是:当B表的40条数据中的user_code值都一样,并且跟A表中的一个user_code 值相等,那么结果就是59条
那么反过来
select count(1) from B left join A on A.user_code = B.user_code 
 得到的数据有( 40 ~ 59 ) 条数据,原理同上

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,