欢迎来到天天文库
浏览记录
ID:44301172
大小:114.05 KB
页数:7页
时间:2019-10-20
《剖析MySQL左连接右连接等值连接异同》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、剖析MySQL左连接/右连接/等值连接异同从业以來,发现很多技术人员和同爭向笔者或是徃网络上咨询过LEFTJOIN如何写及其特性,而等值连接-•般都没问题,儿年前曾经写过一份MicrosoftSQLServer版本的,此次特意再写一份MySQL版本的,希望阅读过的技术人员,可以起到解惑功效。1、三种连接的语从业以来,发现很多技术人员和同事向笔者或是在网络上咨询过LEFTJOIN如何写及其特性,而等值连接一般都没问题,儿年前曾经写过一份MicrosoftXXServer版本的,此次特意再写一份刈辽版本的,希望阅读过的技术人员,可以起到解惑功效。1、三种连接的
2、语法为便于更多的技友快速读懂、理解,我们只讨论2张表对象进行连接操作的情况,人于2张表对象进行的连接操作原理也是一样的。左连接C£FTJOIN)SELECTMcolumnnams,N*columnname--..FKMlef^_tableMLELTJOINrighttableNCNMcolumnnairjjoirF^Jcolumnname_join/NDNcolumnname^XXVHEREMco1umnname^CXX--..右连接倒KHTJOINSELECTMcolumnname,N*columnname・・.•FK.Mleft_tableMRICHT
3、JOINrighttableNCNMco1umnnamejoicolumnnamejoinco1umnname^XXWHERENco1umnnams^XX--..等值连接SELECTMcolumnnaiw,N*columnname-..FRCMlefstableM[INSER.IJOINrighstableNCNMco1umnname_JoicolumnnamejoinWHEREMco1umnname^XX--..ADNco1umnnams^XX….或者SELECTMcolumnnaiw,N*colimnname・・•・FKMleftjtableM,rig
4、httableNAHEREMco1unnnanT_joicokimnnarne_join^NDMcolumnnane^XX••…/WNcolumnnarrE5、啲某记录,无法在表righstable找到对应的记录,则此记录依然显示在记录集钟,只表righ^_table需要在查询显示的列的值用NULL替代;CN字句连接条件中表righstable.6、columnnamMXXX用于控制righstable表是否有符合要求的列值还是用NULL替换的方式显示在查询列中,不影响记录集的数量;VHERE字句控制记录是否符合查询要求,不符合则过滤掉;总结:CN字句控制righLJable的列值符合显示,还是不符合就用NIT替换,不影响最终符合查询要求的记录集;"HERE字句是控制那些记录是显示在最终的记录集中。右连接fUOirJO的CN字句连接条件,用于把2表中等值的记录连接在一起,若是表righLJable屮的某记录,无法在表lefLJable找到对应的记录,则表lef—ble需要在查询显示的列的值用NW代;(7、N字句连接条件中表lefttablecolumnnangCXX用于控制lefttable表是否有符合要求的列值,还是用MLL替换的方式显示在查询列表中;阳ERE字句控制记录是否符合查询要求,不符合则过滤掉;总结:CN字句控制lefyable的列值符合显示,还是不符合而用NULL替换掉,不影响最终符合查询要求的记录集;^HERE字句是控制那些记录是显示在最终的记录集屮。我们会发现LEFTJOIN和RKHTJOIN是类似的,只是以连接关键字左边还是右边表为准匹配。等值连接CN字句连接条件,不再与左连接或右连接的功效-样,除了作为2表记录匹配的条件外,还会起到8、过滤记录的作用,若lef^ablc中记录无法在righ^able中找到对应的记录,则会被过滤掉;阳ERE字句,不管是涉及表1"口处匕表righ^able上的限制条件,还是涉及2表连接的条件,都会对记录集起到过滤作用,把不符合要求的记录刷选掉;连接语法的测试环境测试用表结构CREATETABLElefttable(IDINTZICNEDNDTNULLAUTONRMENI;UsemaneNJTNULUBirthdayLfflEDMENJTNULLEEEALET'0000-00-0000:00:0(/,CitylDSVftLLINTNJTNULLIKWT0,Cr9、eatDateTUMESEWNDTNULLEEEALETZ0000
5、啲某记录,无法在表righstable找到对应的记录,则此记录依然显示在记录集钟,只表righ^_table需要在查询显示的列的值用NULL替代;CN字句连接条件中表righstable.
6、columnnamMXXX用于控制righstable表是否有符合要求的列值还是用NULL替换的方式显示在查询列中,不影响记录集的数量;VHERE字句控制记录是否符合查询要求,不符合则过滤掉;总结:CN字句控制righLJable的列值符合显示,还是不符合就用NIT替换,不影响最终符合查询要求的记录集;"HERE字句是控制那些记录是显示在最终的记录集中。右连接fUOirJO的CN字句连接条件,用于把2表中等值的记录连接在一起,若是表righLJable屮的某记录,无法在表lefLJable找到对应的记录,则表lef—ble需要在查询显示的列的值用NW代;(
7、N字句连接条件中表lefttablecolumnnangCXX用于控制lefttable表是否有符合要求的列值,还是用MLL替换的方式显示在查询列表中;阳ERE字句控制记录是否符合查询要求,不符合则过滤掉;总结:CN字句控制lefyable的列值符合显示,还是不符合而用NULL替换掉,不影响最终符合查询要求的记录集;^HERE字句是控制那些记录是显示在最终的记录集屮。我们会发现LEFTJOIN和RKHTJOIN是类似的,只是以连接关键字左边还是右边表为准匹配。等值连接CN字句连接条件,不再与左连接或右连接的功效-样,除了作为2表记录匹配的条件外,还会起到
8、过滤记录的作用,若lef^ablc中记录无法在righ^able中找到对应的记录,则会被过滤掉;阳ERE字句,不管是涉及表1"口处匕表righ^able上的限制条件,还是涉及2表连接的条件,都会对记录集起到过滤作用,把不符合要求的记录刷选掉;连接语法的测试环境测试用表结构CREATETABLElefttable(IDINTZICNEDNDTNULLAUTONRMENI;UsemaneNJTNULUBirthdayLfflEDMENJTNULLEEEALET'0000-00-0000:00:0(/,CitylDSVftLLINTNJTNULLIKWT0,Cr
9、eatDateTUMESEWNDTNULLEEEALETZ0000
此文档下载收益归作者所有