大家好,我是我是深圳分院第十期java學員,一枚正直純潔善良的Java程序員。今天給大家分享一下,修真院官網java任務一mysql的多表查詢。
1.背景介紹
查詢語句回顧
where 條件查詢
in 關鍵字查詢
between and 範圍查詢
like 模糊查詢
order by 排序
2.知識剖析
多表查詢:
多表查詢 ,也叫連接查詢。如果一個查詢需要對多個表進行操作就稱爲連接查詢,連接查詢的結果集或結果稱爲表之間的連接.
連接查詢實際上是通過各個表之間共同列的關聯性來查詢數據的,它是關係數據庫查詢最主要的特徵.
select 表1.字段名1,表2.字段名2,..from 表1,表2
多表查詢分類:
1.自連接查詢,對同一個表進行連接操作
2.內連接查詢,又分爲:自然連接、等值連接、不等值連接三種
3外連接查詢,又分爲:左外連接、右外連接、全外連接三種
4交叉連接查詢,也作無條件查詢。
5聯合查詢。
自連接查詢:
一個表自己與自己建立連接稱爲自連接或自身連接。
進行自連接就如同兩個分開的表一樣,可以把一個表的某一行與同一表中的另一行連接起來。
內連接(INNER JOIN)
1、等值連接:
2,不等值連接
外連接(OUTER JOIN):
與內連接不同的是,外連接不只列出與連接條件相匹配的行,
而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)
中所有符合搜索條件的數據行。
外連接是對內連接的擴充,除了將兩個數據集合中重疊部分以內的那些數據行連接起來之外,
還可以根據要求返回左側或右側數據集合中非匹配的數據或全部的數據.
左外連接:(LEFT OUTER JOIN或LEFT JOIN)
語法:select 列
from 表1 left outer join 表2 on 表1.列=表2.列
右外連接(RIGHT OUTER JOIN或RIGHT JOIN)
三表查詢
3.常見問題
關注表之間的約束關係
5.編碼實戰
6.擴展思考
子查詢
注意事項:
子查詢要包含在括號內。
將子查詢放在比較條件的右側。
單行操作符對應單行子查詢,多行操作符對應多行子查詢。
GROUP BY,顧名思義:根據...分組,在SQL中常根據指定字段分組
(指定字段內容相同是爲一組),然後針對組進行相關操作.
group by的常規用法是配合聚合函數,利用分組信息進行統計,
having 子句的作用是篩選滿足條件的組,即在分組之後過濾數據,
條件中經常包含聚組函數,使用having 條件過濾出特定的組,
也可以使用多個分組標準進行分組。
7.參考文獻
百度,博客
8.更多討論
提問一,MySQL中如何使用全外鏈接?
mysql中是不支持全連接的,MySQL中實現全連接的方式是使用UNION關鍵詞聯合左右連接來實現
提問二,查詢過多的話多表怎麼去重?
要注意多加限制語句,數據庫設計要規範
提問三,遇到Column 'name' in where clause is ambiguous問題
是在輸入查詢語句的時候存在多表的變量相同導致數據庫不知道你要的name是哪一個
,在前面加上user.就好了,就是加上某個表