隨着軟件市場的發展,軟件測試業務邏輯複雜度的提示,作爲軟件測試人員,數據庫也成爲比如的內容之一。比如:
基於功能方面,比如頁面開發,對於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 :⑥③⑥⑧⑤⑨⑨⑥④,獲取更多諮詢哦~