天天看點

MySQL常用查詢語句思維導圖

SQL常用查詢語句思維導圖

整理了一些SQL查詢語句的思維導圖友善記憶,執行過程是在MySQL環境下的執行的

其中包括以下内容:

多表查詢:

    交叉連接配接:笛卡爾乘積;

    内連接配接:

            等值連接配接:讓表之間的字段以“等值”建立連接配接關系;

            不等值連接配接

            自然連接配接

            自連接配接

    外連接配接:

            左連接配接:

from tb1 left join tb2 on tb1.col=tb2.col

            右連接配接:

from tb1 left join tb2 on tb1.col=tb2.col      

簡單查詢

MySQL常用查詢語句思維導圖

分組查詢

MySQL常用查詢語句思維導圖

模糊查詢

MySQL常用查詢語句思維導圖

排序查詢

MySQL常用查詢語句思維導圖

條件查詢

MySQL常用查詢語句思維導圖

多表查詢

MySQL常用查詢語句思維導圖

聚合函數

MySQL常用查詢語句思維導圖

查詢語句番外篇

統計每個學校各難度的使用者平均刷題數

題目:營運想要計算一些參加了答題的不同學校、不同難度的使用者平均答題量,請你寫SQL取出相應資料

使用者資訊表:user_profile

MySQL常用查詢語句思維導圖

題庫練習明細表: question_practice_detail

MySQL常用查詢語句思維導圖

問題分解:

  • 限定條件:無;
  • 每個學校:按學校分組group by university
  • 不同難度:按難度分組group by difficult_level
  • 平均答題數:總答題數除以總人數count(qpd.question_id) / count(distinct qpd.device_id)
  • 來自上面資訊三個表,需要聯表,up與qpd用device_id連接配接,qd與qpd用question_id連接配接。
SELECT

    university,

    difficult_level,

#    四舍五入函數

   round(count(qpd.question_id) / count(distinct qpd.device_id), 4) as avg_answer_cnt

from question_practice_detail as qpd



left join user_profile as up

# on條件是在生成臨時表時使用的條件

on up.device_id=qpd.device_id



left join question_detail as qd

# on條件是在生成臨時表時使用的條件

on qd.question_id=qpd.question_id

group by university,difficult_level      

統計每個使用者的平均刷題數

題目:營運想要檢視參加了答題的山東大學的使用者在不同難度下的平均答題題目數,請取出相應資料

使用者資訊表:user_profile

MySQL常用查詢語句思維導圖

問題分解:

  • 限定條件:山東大學的使用者 up.university="山東大學";
  • 不同難度:按難度分組group by difficult_level
  • 平均答題數:總答題數除以總人數count(qpd.question_id) / count(distinct qpd.device_id) 來自上面資訊三個表,需要聯表,up與qpd用device_id連接配接并限定大學,qd與qpd用question_id連接配接。
SELECT

    t1.university,

    t3.difficult_level,

    COUNT(t2.question_id) / COUNT(DISTINCT(t2.device_id)) as avg_answer_cnt

    

FROM

    user_profile as t1,

    question_practice_detail as t2,

    question_detail as t3

    

WHERE

    t1.university='山東大學' 

    and t1.device_id =t2.device_id

    and t2.question_id =t3.question_id

GROUP BY

    t3.difficult_level;