????????
????1??????????????????????????? = ?? <> ???????????????????????????????????
???????????????????????????????е??е????????????е??С????磬???? students??courses??????????????????????С?
????2?????????????????????????????????????????????????????
?????? FROM??????????????????????????м????????е?????????
????1??LEFT JOIN??LEFT OUTER JOIN
??????????????????????? LEFT OUTER???????????????????У????????????????????????С?????????????????????????У????????????????????????????????б??о???????
????2??RIGHT JOIN ?? RIGHT OUTER JOIN
??????????????????????????????????????????????????С?????????????????????????У??????????????
????3??FULL JOIN ?? FULL OUTER JOIN
?????????????????????????е??????С??????????????????????????????????????????б??а??????????????????????У?????????????а???????????????
?????????
????-------------------------------------------------
????a?? id name  b?? id job parent_id
????1 ??3 1 23 1
????2 ???? 2 34 2
????3 ???? 3 34 4
????a.id?parent_id ??????
????--------------------------------------------------
????1?? ??????
????select a.*??b.* from a inner join b on a.id=b.parent_id
?????????
????1 ??3 1 23 1
????2 ???? 2 34 2
????2????????
????select a.*??b.* from a left join b ona.id=b.parent_id
?????????
????1 ??3 1 23 1
????2 ???? 2 34 2
????3 ???? null
????3?? ??????
????select a.*??b.* from a right join b on a.id=b.parent_id
?????????
????1 ??3 1 23 1
????2 ???? 2 34 2
????null 3 34 4
????4?? ??????? (???????????)
????select a.*??b.* from a full join b on a.id=b.parent_id
?????????
????1 ??3 1 23 1
????2 ???? 2 34 2
????null ???? 3 34 4
????3 ???? null
???????????INNER JOIN??
???????????INNERJOIN?????????????????????????????????з??????????????????????????С?????ν??????????????????????γ???м?????
???????磺????????3?????4????????????
???????1?????????????????INNER JOIN???γ???м??????????????????
????SELECTO.ID??O.ORDER_NUMBER??C.ID??C.NAME
????FROM CUSTOMERS C??ORDERS O
????WHERE C.ID=O.CUSTOMER_ID;
???????2????????????????????????????INNER JOIN???γ???м????????????ON??????????????????
????SELECTO.ID??O.ORDER_NUMBER??C.ID??C.NAME
????FROM CUSTOMERS C INNER JOIN ORDERS O ON C.ID=O.CUSTOMER_ID;
???????????OUTER JOIN????
?????????????????????????????????????У???????????????????Щ?С?????????????????????LEFT OUTER JOIN?????????????RIGHT OUTER JOIN????????????FULL OUTER JOIN????
???????????????????????????????????????????????????????????С?????????£?
?????????????????????в????????????????????????????????С?
?????????????????????в????????????????????????????????С?
????????????????????в????????????????????????????????У??????????????в????????????????????????????????С?????????????????????????????????????????????????????“???=???? UNION ????”??
????????????????“??LEFT OUTER JOIN??”???????????????????????????????????????????У?OUTER ?????????????
????????????????
???????3???????????LEFTOUTER JOIN??
????SELECTO.ID??O.ORDER_NUMBER??O.CUSTOMER_ID??C.ID??C.NAME
????FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;
???????4???????????RIGHT OUTER JOIN??
????SELECTO.ID??O.ORDER_NUMBER??O.CUSTOMER_ID??C.ID??C.NAME
????FROM ORDERS O RIGHT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;
???????WHERE????????ON??????????????????????磺
???????5??WHERE??????????
????SELECTO.ID??O.ORDER_NUMBER??O.CUSTOMER_ID??C.ID??C.NAME
????FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID
????WHERE O.ORDER_NUMBER<>'MIKE_ORDER001';
???????6???????5?е?WHERE???????ON???檔
????SELECTO.ID??O.ORDER_NUMBER??O.CUSTOMER_ID??C.ID??C.NAME
????FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ONC.ID=O.CUSTOMER_ID AND O.ORDER_NUMBER<>'MIKE_ORDER001';
?????????5?????6????????????????????????????6???????????????????????????д???????????ON??????????????????????м?????????????д??WHERE????С?
???????7??????????FULLOUTER JOIN????
????SELECTO.ID??O.ORDER_NUMBER??O.CUSTOMER_ID??C.ID??C.NAME
????FROM ORDERS O FULL OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;
???????MySQL?????????????????????????д?????Oracle??DB2?????????????????????????????????????????????
???????8???????????????????????????????7????????
????SELECTO.ID??O.ORDER_NUMBER??O.CUSTOMER_ID??C.ID??C.NAME
????FROM ORDERS O LEFT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID
????UNION
????SELECT O.ID??O.ORDER_NUMBER??O.CUSTOMER_ID??C.ID??C.NAME
????FROM ORDERS O RIGHT OUTER JOIN CUSTOMERS C ON C.ID=O.CUSTOMER_ID;
????SQL????????????????????????
?????????????????????WHERE??????????е??????γ??м???????м???????????????????????SELECT????????????????н??з?????????
?????????????????????????????????????????????ON????????????????????й????γ??м?????????WHERE?????????м?????????????SELECT??????з??????????
??????????????????????????????????????????????????????????ò??????????????????????????????????????е????????????????γ?????м?????????????WHERE?????????м?????????????SELECT??????з??????????
???????SQL?????????????SQL??????????????
????ON???????????ON????????WHERE??????????
????ON???????????????????????????γ??м????????????
????WHERE??????????ON??????SELECT???????????м?????????????????ON????????У????????????????м?????????????????????????????????????????????γ????м???????????????
????????????????????WHERE????????ON?????????????????????????
????ON??????????????WHERE??????м???????
???????
????????????SQL?????????????????????????????????????????????????????????????Ч?????????????Щ?????????????????????????????????????????????????
????1?? ????????????????????????????
????2?? Col_L??Col_R?????????????????
????3?? Col_R??Col_L?????????????????
????4?? 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????????????????????
???????????μ?????????
??????????????? ????????“(+) ”??????? ????????+?????Щ???????
????1.??+????????????????where????У??????????outer join??????á?
????2. ??????+?????????????????????????where????а????ж????????????????????????ж???????+????????
????3.??+????????????????У?????????????????
????4.??+??????????????or??in???????????á?
????5.??+???????????????????????????????????
??????????
???????+???????????+?????????????? + ???????????????м?????????????????????д??????????????????????????????