程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

〖Python 數據庫開發實戰 - MySQL篇㉒〗- 子查詢的語法規則

編輯:Python
萬葉集 隱約雷鳴,陰霾天空。 但盼風雨來,能留你在此。


前言
作者簡介:渴望力量的哈士奇 ,大家可以叫我 哈士奇 ,一位致力於 TFS - 全棧 賦能的博主
CSDN博客專家認證、新星計劃第三季全棧賽道 MVP 、華為雲享專家、阿裡雲專家博主
如果文章知識點有錯誤的地方,請指正!和大家一起學習,一起進步
人生格言:優於別人,並不高貴,真正的高貴應該是優於過去的自己。
如果感覺博主的文章還不錯的話,還請關注、點贊、收藏三連支持一下博主哦


專欄系列(點擊解鎖)學習路線(點擊解鎖)知識定位Python全棧白皮書 零基礎入門篇 以淺顯易懂的方式輕松入門,讓你徹底愛上Python的魅力。 語法進階篇 主要圍繞多線程編程、正則表達式學習、含貼近實戰的項目練習 。 自動化辦公篇 實現日常辦公軟件的自動化操作,節省時間、提高辦公效率。 自動化測試實戰篇 從實戰的角度出發,先人一步,快速轉型測試開發工程師。 數據庫開發實戰篇掌握關系型與非關系數據庫知識,提升數據庫實戰開發能力。 爬蟲入門與實戰更新中數據分析篇更新中前端入門+flask 全棧篇更新中django+vue全棧篇更新中拓展-人工智能入門更新中網絡安全之路 踩坑篇 記錄學習及演練過程中遇到的坑,便於後來居上者 網安知識掃盲篇 三天打魚,不深入了解原理,只會讓你成為腳本小子。 vulhub靶場漏洞復現 讓漏洞復現變得簡單,讓安全研究者更加專注於漏洞原理本身。 shell編程篇 不涉及linux基礎,最終案例會偏向於安全加固方向。 [待完結] WEB漏洞攻防篇2021年9月3日停止更新,轉戰先知社區等安全社區及小密圈 滲透工具使用集錦2021年9月3日停止更新,轉戰先知社區等安全社區及小密圈點點點工程師 測試神器 - Charles 軟件測試數據包抓包分析神器 測試神器 - Fiddler 一文學會 fiddle ,學不會倒立吃翔,稀得! 測試神器 - Jmeter 不僅是性能測試神器,更可用於搭建輕量級接口自動化測試框架。 RobotFrameWorkPython實現的自動化測試利器,該篇章僅介紹UI自動化部分。 Java實現UI自動化文檔寫於2016年,Java實現的UI自動化,仍有借鑒意義。 MonkeyRunner該工具目前的應用場景已不多,文檔已刪,為了排版好看才留著。


文章目錄

  • 子查詢簡介
    • WHERE 子查詢
    • FROM 子查詢

子查詢是在查詢語句裡面再嵌套一個查詢,這是因為我們在提取數據的時候有很多不知道的數據產生了依賴關系。此時我們就需要先查詢一組數據的結果集,然後將這個結果集作用為下一個查詢的對象。在 “表連接的章節”,我們曾說過子查詢的效率低下的問題,其實並不是所有的子查詢效率都是低下的,“WHERE” 子查詢在匹配記錄的時候要反復執行,這是不推薦使用的;但是如果將查詢結果集當做一張表來使用,與其他的表做一個連接,這就是 “FROM” 子句的子查詢了,這種子查詢的方式,還是比較推薦使用的。

詳細的說,子查詢分為 “單行子查詢”、“多行子查詢”、"WHERE"子查詢、“FROM” 子查詢 和 “SELECT” 子查詢;這些都是該章節我們需要學習的內容。



子查詢簡介


  • 子查詢是一種查詢語句中再嵌套一個查詢的語句
  • 普通查詢語句分為 “SELECT” 子查詢、“FROM” 子查詢、“WHERE"子查詢;(重點推薦使用 " ‘FROM’ 子查詢”)

子查詢示例如下:

查詢底薪超過公司平均底薪的員工信息。(之前我們使用過表連接的方式做個這個案例,這裡來看一下如何通過子查詢的方式來實現。)

SELECT
empno, ename, sal
FROM
t_emp
WHERE
sal >= (SELECT AVG(sal) FROM t_emp);
-- 正常情況下,將聚合函數作為 WHERE 子句的條件是不可以的,但是這裡利用子查詢與聚合函數先將平均底薪查詢出來,這就變成具體的數據了
-- 這種情況下,作為 WHERE 子句的條件,就可以被使用了

以上就是 WHERE 子句的子查詢,不過 WHERE 子句的子查詢使不推薦使用的,應該使用表連接的寫法。



WHERE 子查詢


  • 在書寫 SQL 語句的時候, WHERE 子查詢最符合我們人的思考邏輯
  • 雖然這種 子查詢 最簡單、最容易理解,但是卻是效率很低的子查詢

以剛剛演示的 查詢底薪超過公司平均底薪的員工信息 來說吧。“WHERE” 子句拿每一條員工的記錄與 “SELECT” 子查詢做比較的時候,子查詢都需要重新執行一次。如果員工表有 10000 條記錄,那麼 子查詢 就需要執行 10000次,反復執行這麼多次,效率上是極其低下的。

在查詢語句中,反復被查詢的子查詢被稱為 “相關子查詢”,這裡的 “WHERE” 子查詢就屬於 “相關子查詢” 應該避免使用這種子查詢。



FROM 子查詢



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved