Today I Lived/구직 - 2021

[TIL] 2021.09.19 - MySQL QUERY

장 상 현 2021. 9. 19.

오늘은?

 

MySQL QUERY 문제 풀이

 

회고

1. 다음과 같은 결과를 univ_board에서 도출하라.

2. 1의 결과의 view_count의 평균을 도출하라.

3. 다음과 같은 결과를 free_board에서 도출하라.

4. 3의 결과에서 댓글 수 순으로 역 정렬하라.

5. 다음과 같이 나라-대학-유저 정보를 출력하라. 단, 대학의 관리자가 없을 경우 null로 출력

6. left join, right join, inner join의 차이점?

 

기본 JOIN (= INNER JOIN)

  • 기본적으로 JOIN은 교집합이다.

LEFT JOIN

  • 왼쪽 테이블을 중심으로 오른쪽의 테이블을 매치시킨다.
  • 왼쪽 테이블의 한 개의 레코드에 여러 개의 오른쪽 테이블 레코드가 일치할 경우,    해당 왼쪽 레코드를 여러 번 표시하게 된다.
  • 왼쪽은 무조건 표시하고, 매치되는 레코드가 오른쪽에 없으면 NULL을 표시한다.

RIGHT JOIN

  • 오른쪽 테이블을 중심으로 왼쪽 테이블을 매치시킨다.
  • LEFT JOIN에서 방향을 오른쪽으로만 바꾼 것이므로, 역시 해당 레코드가 여러 번 표시되거나, NULL이 표시된다.

OUTER JOIN : 조건에 부합하지 않는 행까지도 포함시켜 결합하는 것

  • 기본적으로 LEFT, RIGHT 또는 FULL이 OUTER JOIN이다.
  • FULL JOIN 은 사용할 일이 없으며, ODBC에 따라 지원하지 않는 경우도 있다.

최종 답안

1.
SELECT post_id, title, view_count FROM kangaroo.univ_board
ORDER BY view_count DESC
LIMIT 10;

2.
SELECT AVG(view_count) FROM kangaroo.univ_board
ORDER BY view_count DESC
LIMIT 10;

3.
SELECT free_board.post_id, free_board.user_id, free_board.title, free_comment.comment_id, free_comment.user_id, free_comment.content
FROM free_board
INNER JOIN free_comment
On free_board.post_id = free_comment.post_id

4.
SELECT free_board.post_id, free_board.user_id, COUNT(free_comment.post_id) as comment_count, title, free_comment.comment_id, free_comment.user_id, free_comment.content
FROM free_board
INNER JOIN free_comment
On free_board.post_id = free_comment.post_id
GROUP BY free_comment.post_id
ORDER BY comment_count DESC;

5.
SELECT country.country_id, country.name, university.univ_id, university.name, university.admin_id, user.user_id, user.nickname
FROM country
INNER JOIN university
ON country.country_id = university.country_id
LEFT JOIN user
ON university.admin_id = user.user_id;

 

겨우 요거 하는 게 이렇게 오래 걸려?

 

알고 나면 쉬운 문제들을, 모르는 상태에서 푸는 괴로운 재미가 쏠쏠하다.

 

심지어 코테 준비를 위한 공부인데, 긴장감이 없다.

 

답을 맞히는 게 재밌다! 게임 마냥.

 

물론, 답을 찾아내기 전까지 괴로움에 몸부림치는 건 재밌지 않다.

 

괴로운 시간이 길 수록 답을 맞혔을 때의 희열이 좋다.

 

인정하겠다. 난 변태다.

 

ㅋㅋ

 

오늘의 명언

 

잃어버린 시간은 되찾을 수 없다. - 벤자민 프랭클린

댓글