关于 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 ) 条数据,原理同上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值