sql基本原理以及运用场景
来源:互联网 发布:mac 网络测试工具 编辑:程序博客网 时间:2024/05/17 03:18
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查询是多表连接的一个示范
一、单表查询:
根据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查询是多表连接的一个示范
- sql基本原理以及运用场景
- RabbitMQ的应用场景以及基本原理介绍
- RabbitMQ的应用场景以及基本原理介绍
- RabbitMQ的应用场景以及基本原理介绍
- RabbitMQ的应用场景以及基本原理介绍
- RabbitMQ的应用场景以及基本原理介绍
- RabbitMQ的应用场景以及基本原理介绍
- ajax基本原理的运用
- zookeeper基本原理及适用场景
- zookeeper基本原理及适用场景
- Zookeeper基本原理与应用场景
- zookeeper基本原理及适用场景
- RabbitMQ使用场景及基本原理
- Zookeeper基本原理与应用场景
- zookeeper基本原理及适用场景
- redis数据结构运用场景
- memcache实际运用场景
- runTime运用的场景
- 面向对象的一个重要理念————重载
- java
- 字符串与整数、浮点数、无符号整数之间的转换常用函数
- Spring笔记_AOP简单例子
- 用clojure解决 euler problem 4
- sql基本原理以及运用场景
- 【动态规划+二分】奥运大包围
- c++ string 简单应用一
- poj 4048 计算几何(线段相交)金华邀请赛 E题
- 我伟大的爷爷
- CentOS GCC升级
- hello wxpython
- C++各种常见排序算法 冒泡排序,插入排序,快排序,选择排序,希尔排序
- 十道海量数据处理面试题与十个海量数据处理方法大总结