sql基本原理以及运用场景

sql查询的基本原理:(理解sql查询的过程是进行sql优化的理论依据)
一、单表查询:
    根据where条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的);
    然后根据select的选择列选择相应的列进行返回最终结果。
二、两表连接查询:
对两表求积(笛卡尔积)并用on条件和连接类型进行过滤形成中间表;
然后根据where条件过滤中间表的记录,并根据select指定的列返回查询结果。
三、多表连接查询:
先对第一个和第二个表按照两表连接做查询,然后用查询结果和第三个表做连接查询,
以此类推,直到所有的表都连接上为止,最终形成一个中间的结果表,然后根据where
条件过滤中间表的记录,并根据select指定的列返回查询结果。


on后面的条件(on条件)和where条件的区别:
一:on条件:
是过滤两个链接表笛卡尔积形成中间表的约束条件。
二:where条件:
在有on条件的select语句中是过滤中间表的约束条件。在没有on的单表查询中,
是限制物理表或者中间查询结果返回记录的约束。在两表或多表连接中是限制连
接形成最终中间表的返回结果的约束
* 将where条件移入on后面是不恰当的。推荐的做法是:on只进行连接操作,where只过滤中间表的记录。


注意事项:
连接查询是sql查询的核心,连接查询的连接类型选择依据实际需求。如果选择不当,非但不能提高查询效率,
反而会带来一些逻辑错误或者性能低下。下面总结一下两表连接查询选择方式的依据:
一、查两表关联列相等的数据用内连接。
二、col_l是col_r的子集时用右外连接。
三、col_r是col_l的子集时用左外连接。
四、col_r和col_l彼此有交集但彼此互不为子集时候用全外。
五、求差操作的时候用联合查询。
   多个表查询的时候,这些不同的连接类型可以写到一块。例如:
select t1.c1,t2.cx,t3.cy
from tab1 t1
?????? inner join tab2 t2 on (t1.c1=t2.c2)
?????? inner join tab3 t3 on (t1.c1=t2.c3)
?????? left outer join tab4 on(t2.c2=t3.c3);
where t1.x >t3.y;
上面这个sql查询是多表连接的一个示范
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值