본문 바로가기

Services/Tool

[MySQL] 윈도우 실행 명령어 + JOIN을 활용한 문제 풀이(westagram)

윈도우 우분투에서 MYSQL 실행

리눅스 우분투 관리자 권한으로 실행 

sudo service mysql start

mysql 접속

sudo mysql -u root -p

mysql 접속해제

exit;

 

 

 



JOIN을 활용한 문제 풀이(westagram)

문제

 

'a'라는 사용자가 좋아요를 누른 게시물 중에서 '무엇인가?' 라는 단어가 포함된 게시물만 출력

 

westagram이라는 데이터베이스 안에 users, posts, likes라는 테이블을 작성해두었다.

users : 사용자의 이름

posts : 누가 어떤 포스트를 작성 + 포스트의 내용

likes : 누가 어떤 포스트에 좋아요를 눌렀는지

 

 

 

문제를 풀기 전 한글로 출력해야할 데이터들을 하나씩 정리해본다.

1. column을 나열한다.
2. posts 테이블의 작성자 이름을 알아야 한다.

3. 좋아요를 누른 posts 테이블을 나열한다. (likes.post_id 3,4,5,6)

4. 좋아요를 누른 user의 이름을 출력한다.

5. user의 이름 중 'a' 라는 사용자만 출력한다.

6. content 중 '무엇인가?'를 포함하는 게시글만 출력한다.

 

 

1. column을 나열한다.

like_user 값은 가장 밑단에서 작업할 예정이므로 임시로 'a'를 넣어주었다.


from절은 column에 도출해야 하는 내용이 상대적으로 많이 담긴 테이블을 설정한다.

(반드시 정답은 아니지만 원하는 값을 출력하기에 수월하므로 추천한다.)

 

posts p 라고 입력할 경우 posts = p라는 의미가 담겨있으므로 좀 더 가독성과 심미성있는 코드를 짤 수 있다.

 

 

 

2. posts 테이블의 작성자 이름을 출력한다.

작성자의 이름을 알기 위해 users의 id와 posts의 user_id를 조인한다.

 

 

 

3. 좋아요를 누른 posts 테이블을 나열한다. (likes.post_id 3,4,5,6)

likes 테이블을 통해 좋아요가 눌린 게시글만 출력한다.

likes의 post_id를 보면 3(3번),4,5,6 id의 게시글인 것을 확인할 수 있다.

 

 

 

4. 좋아요를 누른 user의 이름을 출력한다.

column에 임시값으로 넣어주었던 'a'를 likeuser로 수정하고 좋아요를 누른 user의 이름을 알기 위해 likes.user_id와 조인한다.

 

 

 

5. user의 이름 중 'a' 라는 사용자만 출력한다.

6. content 중 '무엇인가?'를 포함하는 게시글만 출력한다.

join에 where절로 조건을 충족시킨다.

조건이 2개가 모두 충족해야 하므로 and를 써준다.

 

content에 '무엇인가?'가 포함된 게시글만 보기 위해서 like '%' 를 사용하는데, 문자를 포함하는 차이는 아래와 같다.

like 'i%' : i로 시작하는 값
like '%i' : i로 끝나는 값

like '%i%' : i가 포함된 모든 값