인스타 그램 클론 DB를 만들어보자.
프로필, 좋아요, 해쉬태그 기능이있다.
작성한 글에 댓글이 달린 모습
프로필에 팔로우, 팔로잉 숫자 카운트
자, 이제 테이블을 만들어보자
유저의 정보를 기록할 users 테이블과
사진을 관리할 테이블을 아래와 같이 만든다.
photos 테이블의 user_id 는 users 테이블의 id를 참조하기위해 Foreign Keys(연결) 설정을 한다.
더미 데이터가 있다고 가정하고
아래와 같이 SQL문을 작성 및 테스트 해볼 수 있다.
-- 1. 가장 오래된 회원 5명은???
select created_at, id
from users
order by created_at
limit 0,5;
-- 2. 회원가입을 가장 많이 하는 요일은???
select dayname(created_at),count(id) as id
from users
group by dayname(created_at)
order by id desc;
-- 3. 회원가입은 했지만, 사진은 한번도 올린적 없는, 유령회원들의 데이터를 가져오시오.
select *users
from users u
left join photos p
on u.id = p.user_id
where p.id is null;
-- 4. 좋아요를 가장 많이 받은, 유명한 사진은 무엇인지,
-- 그 사진의 id, 유저이름, 사진url, 좋아요 수 를 가져오세요.
select l.photo_id, count(l.photo_id), p.image_url, u.username
from likes l
join photos p
on l.photo_id = p.id
join users u
on p.user_id = u.id
group by photo_id
order by count(l.photo_id) desc;
-- 5. 가장 많이 사용된 해쉬태그가 있을것이다.
-- 가장 많이 사용된 상위 5개의 해쉬태그 이름과, 갯수를 조회하시오.
select count(pt.tag_id) as count, t.tag_name
from photo_tags pt
join tags t
on pt.tag_id = t.id
group by t.id
order by count desc
limit 0,5;
-- 좋아요를 80개 이상 한 사람들의 이름과 그사람이 누른 좋아요 수를 나타내세요.
select l.user_id, count(l.user_id) as count, username
from likes l
join users u
on l.user_id = u.id
group by l.user_id having count >= 80
order by count desc;
'AWS > MySQL' 카테고리의 다른 글
Mysql 데이터 유형을 고려할때, 설계의 핵심(정규화) (0) | 2023.03.07 |
---|---|
MySQL 영화 리뷰 서비스 개발 (0) | 2022.12.12 |
MySQL 일정공유 앱개발 테이블 설계(회원가입, 내 일정화면, 친구들의 일정목록) (0) | 2022.12.12 |
MySQL sns 테이블 생성 : 좋아요, 팔로우, 태그 등은 유니크해야한다. (0) | 2022.12.08 |
MySQL 테이블 합치기 left join on, Foreign keys, n번 고객이 주문한 데이터 가져오기, 다른테이블에 남은 고객정보 한번에 삭제하기 on delete cascade (0) | 2022.12.08 |