​Left outer join을 Mysql에서 실습해보겠습니다. 

     

    Left outer join

    퍼즐 조각을 보다보니 Left outer join이 생각나서 캡춰 해보았습니다. 

    퍼즐조각도 왼쪽의 퍼즐의 그림을 보고 오른쪽에 붙여 나가다 보면 

    퍼즐이 완성이 되는데요.. 

    Left outer join도 마찬가지 입니다. 


    Mysql Workbench를 실행시키고 

    아래의 쿼리문을 실행해보세요. 

         City table 정보 확인

    SQL 

    Select * from world.city


    SQL설명 

    World db에 있는 city테이블의 데이터를 모두 추출

     

    위의 이미지와 같이 City테이블에는 4079개의 행이 있네요. 


      Country Table정보 확인

    SQL 

    Select * from world.country


    SQL설명 

    World db에 있는 country테이블의 데이터를 모두 추출

     

    위의 이미지와 같이 Country테이블에는 239개의 행이 있습니다. 


    City Table 과 Country테이블을 Left outer join 한 경우

    SQL 

                                                                     Select

                                                                      from 

                                                                            world.city c

                                                                            left outer join 

                                                                            world.country co 

                                                                            on c.name = co.name


    SQL설명 

    City 테이블과 Country 테이블의 name컬럼을 기준으로 Left outer join

    두개의 테이블에 보면 공통으로 들어가 있는 컬럼이 Name입니다. 

    그래서 name을 키값으로 하여 연결 하였습니다. 

     

    결과를 보면 City테이블과 country테이블에서 같은 이름으로 되어 있는 8개행은 

    데이터들이 확인이 됩니다.(빨간박스)

    하지만 데이터들이 없는 경우 파란박스 처럼 null로 확인이 됩니다. 

    기준이 되는 테이블이 City테이블이기 때문에 이 결과는 4079개의 행의 결과가 나옵니다. 

    왼쪽 테이블 기준으로 오른쪽의 테이블 정보가 붙었기 때문입니다. 


    자.. 그럼 이 것을 한번 Inner join을 해보겠습니다. 


    City Table과 Country Table를 Inner join한 경우

     

    자.. 차이점이 확인 되시나요?? 

    Inner join을 할 경우에는 두테이블의 키값이 같이 있는 데이터 들만 추출이 되어 8개

    행의 결과만 나오게 됩니다.


    데이터를 추출할때 대부분이 두개 이상의 테이블의 같은 키값에 대한 결과를 

    추출해 내는게 대부분입니다. 

    하지만 Join의 정확한 개념을 모르는 경우 

    Left outer Join을 쓰는 경우가 많습니다. 

    왜냐하면 Left outer Join을 사용하는 경우 전체 데이터가 확인이 되기 때문에 

    Join을 제대로 했는지 확인이 가능하기 때문일것 같습니다. 


    어떤 데이터를 추출해야할지에 대해서 잘 계획을 하시고, 

    Inner join, Left outer join을 필요에 따라 잘 넣어서 사용하시기 바랍니다. 


    제가 데이터 추출을 해보았을때, 

    거의 90%정도가 inner join이고 

    10%정도만 left outer join을 사용을 하고 있습니다. 



    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기