SQL常用查詢語句思維導圖
整理了一些SQL查詢語句的思維導圖友善記憶,執行過程是在MySQL環境下的執行的
其中包括以下内容:
多表查詢:
交叉連接配接:笛卡爾乘積;
内連接配接:
等值連接配接:讓表之間的字段以“等值”建立連接配接關系;
不等值連接配接
自然連接配接
自連接配接
外連接配接:
左連接配接:
from tb1 left join tb2 on tb1.col=tb2.col
右連接配接:
from tb1 left join tb2 on tb1.col=tb2.col
簡單查詢
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CMygjN0kzN3IjMhVGZiJmMzYzXwEDN0kDMyIzLclDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
分組查詢
模糊查詢
排序查詢
條件查詢
多表查詢
聚合函數
查詢語句番外篇
統計每個學校各難度的使用者平均刷題數
題目:營運想要計算一些參加了答題的不同學校、不同難度的使用者平均答題量,請你寫SQL取出相應資料
使用者資訊表:user_profile
題庫練習明細表: question_practice_detail
問題分解:
- 限定條件:無;
- 每個學校:按學校分組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
問題分解:
- 限定條件:山東大學的使用者 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;