Udemy - The Ultimate MySQL Bootcamp:
Go from SQL Beginner to Expert
分享的大部分数据来源于课程,总结为本人原创
包含视频/约26分钟
撰文/Iris帆
多对多关系型数据库中的Joins相关关键词大集合:JOIN、INNER JOIN、LEFT JOIN、RIGHT JOIN
视频讲解
下面为视频中使用到的代码:
SELECT * FROM reviewers;SELECT * FROM series;SELECT * FROM reviews;-- 不同的评分对应不同的节目,也对应不同的reviewer-- 一共7个reviewers,每个reviewer可能对好几部电影都做了评分-- -- 挑战1:JOIN和INNER JOIN -- ---- JOIN:根据两个或多个表之间的相关列组合它们的行。-- INNER JOIN:选择两个表中具有匹配值的记录。SELECT*FROM seriesJOIN reviewsON series.id = reviews.series_id;SELECT*FROM seriesINNER JOIN reviewsON series.id = reviews.series_id;-- -- 挑战2:每个series的平均评分 -- --SELECTtitle,AVG(rating) as avg_ratingFROM seriesJOIN reviewsON series.id = reviews.series_idGROUP BY series.idORDER BY avg_rating;-- -- 挑战3:INNER JOIN -- --SELECTfirst_name,last_name,ratingFROM reviewersINNER JOIN reviewsON reviewers.id = reviews.reviewer_id;SELECTfirst_name,last_name,ratingFROM reviewsINNER JOIN reviewersON reviewers.id = reviews.reviewer_id;-- -- 挑战4:找出没有被评分的series -- --SELECT *FROM seriesLEFT JOIN reviewsON series.id = reviews.series_id;SELECT title AS unreviewed_seriesFROM seriesLEFT JOIN reviewsON series.id = reviews.series_idWHERE rating IS NULL;-- -- 挑战5:得出每种类型的series的平均分数 -- --SELECT genre,Round(Avg(rating), 2) AS avg_ratingFROM seriesINNER JOIN reviewsON series.id = reviews.series_idGROUP BY genre;-- -- 挑战6:通过评分次数,授予7个reviewers等级 -- ---- SUM, AVG, COUNTSELECT first_name,last_name,Count(rating) AS COUNT,Ifnull(Min(rating), 0) AS MIN,Ifnull(Max(rating), 0) AS MAX,Round(Ifnull(Avg(rating), 0), 2) AS AVG,IF(Count(rating) > 0, 'ACTIVE', 'INACTIVE') AS STATUSFROM reviewersLEFT JOIN reviewsON reviewers.id = reviews.reviewer_idGROUP BY reviewers.id;SELECT first_name,last_name,Count(rating) AS COUNT,Ifnull(Min(rating), 0) AS MIN,Ifnull(Max(rating), 0) AS MAX,Round(Ifnull(Avg(rating), 0), 2) AS AVG,CASEWHEN Count(rating) >= 10 THEN 'POWER USER'WHEN Count(rating) > 0 THEN 'ACTIVE'ELSE 'INACTIVE'end AS STATUSFROM reviewersLEFT JOIN reviewsON reviewers.id = reviews.reviewer_idGROUP BY reviewers.id;-- -- 挑战7:3个表格结合运用 -- --SELECT * FROMreviewersINNER JOIN reviewsON reviewers.id = reviews.reviewer_id;SELECTtitle,rating,CONCAT(first_name,' ', last_name) AS reviewerFROM reviewersINNER JOIN reviewsON reviewers.id = reviews.reviewer_idINNER JOIN seriesON series.id = reviews.series_idORDER BY title;

文章转载自学之初 学之时,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




