DB/스키마 설계

스키마 설계 - 영화 리뷰 서비스

ssury94 2024. 12. 8. 20:28

 

-- 회원가입 화면

INSERT into user (email,password,nickname,gender)
values ('abc@naver.com','1234','홍길동',1);

 

-- 리뷰 작성에 필요한 SQL

INSERT INTO review (movieid,userid,rating,content)
values(1,301,5,'너무 재밌어요!');

 


SELECT m.title, count(*) as review_cnt, avg(r.rating) rating_avg
FROM movie m 
join review r 
on r.movieid =m.id 
group by r.id 
order by review_cnt, rating_avg DESC
limit 0, 25;

 

-- 즐겨찾기 하는 SQL

-- 내 (301)가 영화아이디 1번을 즐겨찾기 하는 경우

INSERT into favorite (user_id,movie_id)
values (301,1);

 

-- 즐겨찾기 해제하는 SQL

-- 내 (301)가 영화아이디 1번을 즐겨찾기 해제

DELETE FROM favorite 
where user_id=301 and movie_id=1;

 

SELECT m.*, count(*)cnt_review, ifnull(avg(r.rating),0) avg_rating
FROM movie m
left join review r on m.id=r.movieid
where m.id=2;

 

 


SELECT r.id ,u.nickname ,r.content ,r.rating 
FROM review r 
join `user` u 
on u.id=r.userid 
where r.movieid =2
order by r.created_at desc
limit 0,25;

-- 검색화면 SQL

-- 유저가 검색어로 big이라고 입력하면 제목에 big이 포함된 영화를 가져오기

SELECT m.id movie_id, m.title ,count(r.id)as cnt_review,ifnull(avg(r.rating),0) as avg_rating
FROM movie m 
left join review r 
on m.id =r.movieid 
Where title like '%big%'
group by m.id;

 

-- 검색 히스토리 지정

-- 내 (유저아이디 301)가 검색한 검색어 저장

INSERT INTO history (user_id ,keyword )
values (301,'er');

 

-- 검색 기록을 보여주는 SQL

SELECT *
FROM history h 
WHERE user_id =301
order by created_at desc;

 

-- 검색 히스토리 삭제

DELETE FROM history 
WHERE id=2 and user_id =301;

 


 

-- 내 리뷰 리스트 가져오기

SELECT r.id review_id, m.title ,r.rating 
FROM review r 
join movie m 
on m.id =r.movieid 
WHere r.userid =301;

 

 

-- 내 정보화면 보기 SQL

SELECT *
FROM `user` u 
where u.id =301;