🐬 MySQL/MySQL 실습문제
스키마설계 실습 movie_2
itstory(Booho)
2024. 12. 5. 10:12
728x90
2024.12.05 - [데이터베이스/MySQL 실습문제] - 스키마설계 실습 movie_1
스키마설계 실습 movie_1
영화 리뷰 서비스 개발 테이블 설계는, 다음 파일들을 참고해서 만드세요.DB : movie_dbTables : user SQL 문 확인 후 작성더보기user SQL문 확인insert into user (email, password, nickname, gender) values ('brobker0@bloglo
boohoday.com
Foreign Keys 설정하기
review
- movieId
- userId
Foreign Keys 설정 ERD 확인
문제 1번
아래 그림에 들어가야 할 SQL 문을 작성하세요.
더보기
insert into user (email, password, nickname, gender)
values ('exma@yahoo.com', 'JrCLlDuTwHkp', '홍길동', 0);
문제 2번
아래 그림에 들어가야 할 SQL 문을 작성하세요.
스키마 실습 1번에서 제공되었던 db 가 없는 경우 생성하여 진행 하세요
더보기
-- 1. 영화명, 리뷰갯수, 별점평균 정보를 보여준다.
-- 2. 한번 요청시마다 25개씩 불러오도록 만든다.
-- 3. 정렬조건이 있다( 리뷰갯수 내림차순정렬 / 별점평균 내림차순 정렬
-- 리뷰갯수정렬
SELECT m.id as movie_id, m.title,
count(r.id) as cnt_review,
IFNULL(avg(r.rating),0)as avg_rating,
if(f.id is null , 0,1) as is_favorite
FROM movie m
left join review r
on r.movieid = m.id
left join favorite f
on f.movieid= m.id and f.userid=301
group by m.id
order by cnt_review desc;
-- 평점 정렬
SELECT m.id as movie_id, m.title,
count(r.id) as cnt_review,
IFNULL(avg(r.rating),0)as avg_rating,
if(f.id is null , 0,1) as is_favorite
FROM movie m
left join review r
on r.movieid = m.id
left join favorite f
on f.movieid= m.id and f.userid=301
group by m.id
order by avg_rating desc;
-- 4.하트는 즐겨찾기다. (a. 하트를 누르면 내 즐겨찾기에 저장된다)
-- 즐겨찾기는 1개만 저장되고 추가적으로 저장되지 않도록 해야 한다
-- ( 이러한 문제를 해결하기 위해 유니크키 설정 적용을 해야 한다)
-- 1회 터치는 즐겨찾기, 다시한번 터치 할 경우 즐겨찾기 해제
SELECT *
FROM favorite;
insert into favorite (userid,movieid)
values (1,1);
-- 5 즐겨찾기 해제 301이 영화 아이디 1번을 즐겨 찾기 해제 하는 경우
DELETE FROM favorite
WHERE userid =301 and movieid= 1;
문제 3번
아래 그림에 들어가야 할 SQL 문을 작성하세요.
더보기
-- 영화제목 사진 줄거리내용 장르 개봉일 관객수 별점평균
SELECT m.id, m.title, p.image_url,m.storyline, m.year, m.attendance, avg(r.rating)
FROM movie m
left join photos p on p.movieid = m.id
left join review r on r. movieid = m.id
group by m.id;
문제 4번
아래 그림에 들어가야 할 SQL 문을 작성하세요.
더보기
SELECT m.id, m.title, u.nickname, r.content, avg(r.rating)as rating_avg
FROM movie m
join review r on r.movieid = m.id
join user u on u.id = r.userid
where m.id = 1
order by r.created_at desc
limit 0,20;
문제 5번
아래 그림에 들어가야 할 SQL 문을 작성하세요.
더보기
-- 2. 검색어 입력시 상세 내용 보여주기(** 단어 포함검색어 예 타이)
-- 영화명 리뷰개수 별점평균
SELECT m.id,m.title,count(m.id), avg(r.rating)
from movie m
left join review r on r.movieid = m.id
WHERE title like '%b%'
group by m.id;
문제 6번
아래 그림에 들어가야 할 SQL 문을 작성하세요.
더보기
-- 즐겨찾기는 1개만 저장되고 추가적으로 저장되지 않도록 해야 한다
-- ( 이러한 문제를 해결하기 위해 유니크키 설정 적용을 해야 한다)
-- 1회 터치는 즐겨찾기, 다시한번 터치 할 경우 즐겨찾기 해제
SELECT *
FROM favorite;
insert into favorite (userid,movieid)
values (1,1);
-- 즐겨찾기 해제 301이 영화 아이디 1번을 즐겨 찾기 해제 하는 경우
DELETE FROM favorite
WHERE userid =301 and movieid= 1;
-- 내 즐겨찾기
-- 영화id 유져id 영화명 리뷰수 별점평균
SELECT m.id, u.id, m.title, r.content as review, avg(r.rating) as rating_avg
FROM user u
left join favorite f on f.userid = u.id
left join movie m on f.movieid = m.id
left join review r on u.id = r.userid
where u.id = 1
order by r.created_at;
-- 2. 검색어 입력시 상세 내용 보여주기(** 단어 포함검색어 예 타이)
-- 영화명 리뷰개수 별점평균 최근
SELECT m.id,m.title,
count(m.id)as cnt,
IFNULL(avg(r.rating),0) as rating_avg
from movie m
left join review r
on r.movieid = m.id
WHERE title like '%b%'
group by m.id;
-- 검색기록을 보여주기 위해서
SELECT *
FROM search_history s
where s.userid=301
order by s.created_at desc;
-- 검색기록 삭제
DELETE FROM search_history
where id = 2 and user_id=301;
문제 7번
아래 그림에 들어가야 할 SQL 문을 작성하세요.
더보기
-- 내 정보화면
-- 오른쪽 화면처럼 정보를 가져오는 API 개발
-- 내 리뷰 리스트는 전부 다 가져오도록 한다.
-- ID 301 이라고 가정하고 해보자
-- 이메일 닉네임 성별
SELECT id, email, nickname, gender
FROM user
WHERE id = 301;
-- ID 1 이라고 가정하고 리뷰리스트 보여주기 : 영화이름 별점
SELECT *
FROM review r
join movie m
on m.id = r.movieid
where r.USERid = 1;
로그아웃 : exit
728x90
반응형