关键词不能为空

当前您在: 主页 > 英语 >

SQL中ON和WHERE的区别

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-29 02:58
tags:

-分量

2021年1月29日发(作者:lookover)


SQL



ON



WHERE


的区别




数据库在通过连接两张或多张表来返回记录时,


都会生成一张中 间的临时表,


然后再将这张


临时表返回给用户。



在使用


left jion


时,


on



where


条件的区别如下:



1



on


条 件是在生成临时表时使用的条件,它不管


on


中的条件是否为真 ,都会返回左边表


中的记录。



2< /p>



where


条件是在临时表生成好后, 再对临时表进行过滤的条件。这时已经没有


left


join


的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。



假设有两张表:




1



tab2


id size


1 10


2 20


3 30



2

< p>


tab2


size name


10 AAA


20 BBB


20 CCC



两条


SQL:


1



select


*


form


tab1


left


join


tab2


on


(


=


)


where


=

< br>’


AAA




2



select


*


form


tab1


left


join


tab2


on


(


=


and


=



AAA



)



第一条


SQL


的过程:


1



中间表


on


条件


:



=







1 10 10 AAA


2 20 20 BBB


2 20 20 CCC


3 30 (null) (null)



2


< p>
再对中间表过滤


where


条件:


=



AAA








1 10 10 AAA



第二条


SQL


的过程:


1


、中间表


on


条件


: = and =



AAA



(



件不为真也会返回左 表中的记录


)


1 10 10 AAA


2 20 (null) (null)


3 30 (null) (null)



其实以上结果的关键原因就是


left


join,right


join,full


join


的特殊性,不管


on


上的条


件是否为真都会返回


left



right


表中的记录,


full


则具有


left



right


的特性的并集。




inner join


没这个特殊性 ,则条件放在


on


中和


where


中,返回的结果集是相同的。


on


为了反映 外连接中一方的全连接,而


where


没有这个功能,内连接配 对是可以的。




======= ================================================== =========



on



where



having


的区别




on



where



hav ing


这三个都可以加条件的子句中,


on

是最先执行,


where


次之,


h aving


最后。有时候如果这先后顺序不影响中间结果的话,那最终结果是相同的。但 因为


on


是先


把不符合条件的记录过滤 后才进行统计,


它就可以减少中间运算要处理的数据,


按理说应 该


速度是最快的。





根据上面的分析,可以知道


wh ere


也应该比


having


快点的, 因为它过滤数据后才进行


sum



所以


having


是最慢的。


但也不是说< /p>


having


没用,


因为有时在步骤


3


还没出来都不知道


那个记录才符合要求时 ,就要用


having


了。





在两个表联接时才用


on


的,所以在一个表的时候,就剩下


where



having


比较了。在


这单表查询统计的情况下,


如果要过滤的条件没有涉及到要计算 字段,


那它们的结果是一样


的,只是


w here


可以使用


rushmore


技 术,而


having


就不能,在速度上后者要慢。





如果要涉及 到计算的字段,就表示在没计算之前,这个字段的值是不确定的,根据上篇


写的工作流程 ,


where


的作用时间是在计算之前就完成的,而

< p>
having


就是在计算后才起作


用的,所以在这 种情况下,两者的结果会不同。





在多表联接查询时,


on



where


更早起作用。系统首先根据各个 表之间的联接条件,把


多个表合成一个临时表后,再由


wher e


进行过滤,然后再计算,计算完后再由


having


进行


过滤。


由此可见,


要想过滤条件起到正确的作用,


首先要明白这个条件应该在什幺时候起作


用,然后再决定放在那里



JOIN


联表中


ON,WHERE


后面跟条件的区别




对于


JOIN


的连表操作,这里就不细述了,当我们在对表进行

< p>
JOIN


关联操作时,对于


ON

< br>和


WHERE


后面的条件,不清楚大家有没有注意过,有 什幺区别,可能有的朋友会认为跟在它们


后面的条件是一样的,你可以跟在


ON


后面,如果愿意,也可以跟在


WHERE


后面。它们在


ON



WHERE


后面究竟有一个什幺样的区别呢?




JOIN


操作里,有几种情况。

< br>LEFT JOIN,RIGHT JOIN,INNER JOIN


等。




为了清楚的表达主题所描述的问题,我简要的对


LEFT,RIGHT,INN ER


这几种连接方式作一个


说明。




下面就拿一个普通的博客系统的日志表

(post)


和分类表


(category)


来描述吧。




这里我 们规定有的日志可能没有分类,有的分类可能目前没有属于它的文章。




JOIN:


(保证找出左联表中的所有行)



查出所有文章,并显示出他们的分类:



SELECT ,ry_name


FROM post p


LEFT JOIN category c ON = 2.



RIGHT JOIN:


(保证找出右联表中的所有行)



查询所有的分类,并显示出该分类所含有的文章数。



SELECT COUNT(),ry_name


FROM post p


RIGHT JOIN category c ON = 3.

-分量


-分量


-分量


-分量


-分量


-分量


-分量


-分量



本文更新与2021-01-29 02:58,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/583155.html

SQL中ON和WHERE的区别的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文