YS's develop story
(ERD설계 및 MySQL연습) 카카오톡 채팅목록 화면 ERD 설계, DataGrip을 사용하여 메시창을 보여주는 MySQL 한방 쿼리 작성하기 본문
(ERD설계 및 MySQL연습) 카카오톡 채팅목록 화면 ERD 설계, DataGrip을 사용하여 메시창을 보여주는 MySQL 한방 쿼리 작성하기
Yusang 2021. 1. 20. 09:06
오늘의 목표!!
카카오톡 채팅 목록 화면을 ERD설계를 해보고, 이를 보여주는 MySQL 쿼리문을 작성해 봅시다!
DataGrip을 실행 후 kakaoDB라는 데이터 베이스를 생성해 줍시다
schemas에 생성된 kakaoDB선택 후 Jump to Query Console 선택
웹 기반 ERD설계 사이트 AQueryTool에서 아래와 같이 ERD를 설계했습니다.
모든 테이블 생성 SQL 옵션을 통해 SQL 쿼리를 생성
생성된 SQL 쿼리를 DataGrip에 복사 - 붙여 넣기
아래와 같이 테이블이 생성된 것을 확인할 수 있습니다.
ERD를 설계할 때 Chat테이블에 contents라는 칼럼을 안 만들었네요 ~
아래와 같이 새로운 칼럼을 추가합시다.
채팅방 목록에 보이는 필요한 데이터들을 아래와 같이 임의로 작성해 봅시다...!!
카카오톡 채팅 목록 창에서 사용자들에게 제공해야 할 데이터를 아래와 같이 표로 작성했습니다.
이제 우리가 가지고 있는 데이터를 아래와 같이 제공할 수 있도록 한방 쿼리를 작성해 봅시다.
Room 테이블에 imageUrl칼럼이 필요하기 때문에 아래와 같이 칼럼을 추가해 줍시다!
select * from 테이블명 where 칼럼 = ' '
아래처럼 userID가 liyusang1인 데이터만을 보여 줍니다.
또한 이를 활용하여 아래와 같이 쿼리를 작성할 수 도 있습니다.
Room에서 liyusang1라는 유저가 속한 방만을 가져오는 것이죠.
inner join을 활용하여 아래와 같이 쿼리를 작성할 수도 있습니다.
as 구문을 추가하여 보이는 이름을 바꿨습니다.
lastChatMessage, lastChatMessageTimeStamp, lastChatMessageType를 추가하면 될 거 같습니다.
Chat 테이블에서 가장 큰 roomNo를 가져올 수 있도록 max(no) 쿼리를 사용하여 아래와 같이 작성했습니다
첫 번째 방의 가장 큰 메시지 넘버 표시
두 번째 방의 가장 큰 메시지 넘버를 표시한 것입니다.
이어서 작성한 쿼리..
쿼리를 합쳐서 아래의 쿼리를 만들어 줍시다.
사용자에게 보여줄 카카오톡 채팅 목록 데이터를 모두 제공하고 있는 것을 확인할 수 있습니다!!