圖解MySQL高級多表查詢的概念和語法【樂搏TestPRO】

隨着軟件市場的發展,軟件測試業務邏輯複雜度的提示,作爲軟件測試人員,數據庫也成爲比如的內容之一。比如:

基於功能方面,比如頁面開發,對於BS架構的軟件來說,在測試過程中會出現一些諸如session過期、數值校驗、參數傳遞錯誤等現象,這樣,你可以知道通常的數據庫異常是什麼原因導致的。

基於性能方面:當軟件的性能測試遇到大h量數據加載時,需要考慮這個性能瓶頸是否由數據庫造成。此刻需要做數據庫的優化。

基於安全測試:做滲透測試需要SQL注入的場景。

對於MySQL基礎的單表增刪改查的學習,相對來說比較簡單,但是多表查詢對於很多初學者來說,是個重難點。一方面,90%以上的企業的面試筆試題裏都是多表查詢,如下圖。此外,學會了數據庫也是我們升職加薪的利器之一,同時,也能讓我們佔據市場核心競爭力。

接下來,  針對Mysql數據庫的多表查詢進行詳細講解。

以下不同查詢方法的案例表,  產品表和產品分類表,如下:

一、子查詢:

定義:子查詢是一條select語句結果作爲另一條select語法的一部分(查詢條件、查詢結果、表等)。或是將select語句的結果作爲一張獨立的表進行查詢。

語法

1. select 字段… from 表1 where 條件 = 表2結果;  

2. select字段… from 表1,表2結果 where 主表.主鍵=從表.從鍵;

案例:

1. 查詢化妝品產品的商品和分類信息

寫法一:將分類表的查詢結果作爲產品表的查詢條件:SELECT p.pid,p.pname,p.price,p.flag FROM product p  WHERE p.cetegory_id=(SELECT c.cid FROM cetegory c WHERE c.cname='化妝品');

寫法二:將分類表的查詢結果作爲表:  SELECT p.pid,p.pname,p.price,p.flag,c.cname FROM  product p,(SELECT * FROM cetegory WHERE cname='化妝品')c WHERE p.cetegory_id=c.cid;

得到的結果:

注:如果想要本章內容涉及的視頻資源,可以掃描文末二維碼領取課程案例。

二、內連接

概念:將兩張表或多張表共有的部分查詢出來,關鍵是inner  join... on, 其中,有隱式內連接和顯示內連接。

隱式內連接:不顯示關鍵字inner join

顯示內連接:顯示關鍵字inner  join

語法:

隱式內連接:select * from 主表,從表where 主表.主鍵=從表.外鍵

顯示內連接:select * from 主表 inner join 從表 on 主表.主鍵=從表.外鍵

案例:

查詢產品表、分類表對應的詳細信息:

SELECT * FROM cetegory c,product p WHERE  c.cid=p.cetegory_id;  #隱式

SELECT* FROM cetegory cLEFT OUTER JOINproduct pONc.cid=p.cetegory_id; #顯示

查詢結果:

三、外連接:

定義: 全連接分爲:左外連接:左外連接是以左表爲準,左表的數據必須每條都有。右外連接:右外連接時以右表爲準,右表的數據必須每條有。

語法:

左外:select * from 主表 left outer join 從表 on 主表.主鍵=從表.從鍵

右外: select * from 主表  right outer join從表 on 主表,主鍵= 從表.從鍵

案例:

左外:SELECT* FROM cetegory c LEFT OUTER JOINproduct pONc.cid=p.cetegory_id;

右外:SELECT* FROM cetegory cRIGHT OUTER JOINproduct pONc.cid=p.cetegory_id;

查詢結果:

四、全連接

定義: 顯示左右表中全部數據全連接查詢,是在內連接的基礎上增加左右兩邊沒有顯示的數據。注意: MySQL並不支持全連接full JOIN 關鍵字,但是MySQL提供了UNION關鍵字,使用UNION 可以間接實現full JOIN功能。

案例:

SELECT * FROM product p LEFT JOIN cetegory c ON p.cetegory_id = c.cid

UNION

SELECT * FROM product a RIGHT JOIN cetegory b ON  a.cetegory_id = b.cid

查詢結果:

看到這裏,如果你有一顆想要順利進階,升職加薪的❤️不妨參與我們的軟件測試一週集訓吧!可以後臺私信我,也可以進入qun :⑥③⑥⑧⑤⑨⑨⑥④,獲取更多諮詢哦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章