Finding max rating for a movie
SELECT distinct Movie.title, Rate.stars 



You should rarely use the DISTINCT keyword.  In this particular case it's unnecessary and may do the wrong thing.  What you want to do is to return the highest star rating for a given movie title:

SELECT Movie.title, MAX(Rating.stars)


There's the title and we use the MAX keyword to make sure that it's the highest stars.  More on when we can use MAX later.  


FROM Movie, Rating, 
(SELECT * FROM Rating R1 WHERE not exists (SELECT mID FROM Rating R2 WHERE R1.stars &lt; R2.stars and R1.mID = R2.mID)) as Rate
WHERE Movie.mID = Rate.mID and Rate.stars = Rating.stars



We can make this simpler:

FROM Movie, Rating
WHERE Movie.mID = Rating.mID


No subselects required.  

GROUP BY Movie.title
ORDER BY Movie.title;


The GROUP BY will allow us to use MAX.  It says to return only one row per Movie.title value.  The other columns need to be aggregated with grouping functions, like MAX.  You already had the ORDER BY clause and presumably it's correct.