[MySQL] 06. JOIN 그리고 테이블,스키마 삭제.
저번에 만든 두개의 테이블을 Join 해보려 합니다.
이렇게 mastetTable에 있는 author_number 뒤에 author에서 같은 번호들을 가져와서 붙히려고 합니다.
SELECT * FROM masterTable LEFT JOIN author ON masterTable.author_number = author.number;
Select을 이용해서 어디에 붙힐지 정하고 Join을 이용해 뭘 붙힐지 정했습니다.
뒤에 ON 다음에 오는 코드들은
마스터테이블에 있는 author_number가 author테이블에 있는 number랑 같은데 붙히겠다. 라는 의미입니다.
결과적으로
두개의 테이블이 잘 붙었습니다.
근데 author number랑 number랑 중첩인데, 굳이 보여줄 필요가 없습니다.
그래서 필요한 정보만 select 해서 보여주겠습니다.
Select from 을 이용해서 필요한거만 읽어올겁니다, 하지만 Join을 같이 사용해 두 테이블을 붙히면서 읽어오려고 합니다.
여기서 문제가 있습니다. 저희는 masterTable에도 number를 쓰고, author에도 number를 사용했습니다.
만약 Select number 이렇게 해버리면 누구의 number를 가져올까요?
정답은, 못가져온다입니다.
그래서 number가 누구의 number인지 명시를 해줘야합니다.
여기서는
masterTable.number
이렇게 마스터테이블의 number라고 알려줍니다.
전체적인 코드는
SELECT masterTable.number, title, description, date, name, about FROM
masterTable LEFT JOIN author ON masterTable.author_number = author.number;
너무 길게되서 FROM에서 한칸 내렸습니다.
설명하자면,
SELECT masterTable.number, title, description, date, name, about FROM masterTable
이건 평범하게 마스터테이블에 있는 이러이러한 세로줄을 다 읽어줘 라고 명령하는거고
masterTable LEFT JOIN author ON masterTable.author_number = author.number;
이건 마스터테이블과 author를 join 하는 코드입니다.
결과적으론 이렇게 나옵니다.
근데 매번 number를 호출할때마다 masterTable.number라고 부르기 귀찮기도하고, 까먹을 수 도있잖아요,
그래서 number의 이름을 Table_number로 바꿔주겠습니다.
SELECT masterTable.number AS Table_number, title, description, date, name, about FROM
masterTable LEFT JOIN author ON masterTable.author_number = author.number;
MasterTable.number AS Table_number 로 해주시면 이름이 바뀝니다.
그러면 이제 kim이라는 사람이 나이도 31살이 되고, 직업도 QA로 바꿨다고 가정하고 변경했을때를 보겠습니다.
이렇게 업데이트를 해주었고, 다시 join된 테이블을 불러보겠습니다.
보시다시피 update 한번으로 table_number 2번과 5번 둘 다 about이 변경된걸 확인 할 수 있습니다.
마지막으로 SHOW TABLES를 해보시면,
총 3개의 테이블들이 나옵니다.
table_01같은 경우는 이제 안쓸 테이블이니 지워주도록 하겠습니다.
DROP TABLES 테이블이름;
이제 튜토리얼이 끝났으니 실은 남은 TABLE들도 이젠 필요가 없어졌으니, 지워주도록 하겠습니다.
이렇게 뜨면 성공입니다.
Table을 다 지웠으니, Table을 감싸고 있는 스키마도 지우도록 하겠습니다.
지워야 할건 example_01; 입니다.
DROP DATABASE 스키마이름
이것으로 MySQL에 대한 튜토리얼은 끝입니다.
다음에는 저희가 지금까지 콘솔창을(cmd) 사용해서 코딩을 했는데,
이번엔 다른 클라이언트(tool? 같은겁니다)를 사용하는 방법을 알아보도록 하겠습니다.