首先,為了方便說明問題,建立兩個表emp(僱員資訊)和dept(僱員部門資訊),其資料如下:
在先前的文章中,我們分享了單表查詢的方法,但是在實際應用中,我們要查的資料很可能不在同一個表中,而是來自於不同的表。多表查詢如果不加任何條件,得到的結果稱為笛卡兒積。 例如,找出僱員名、僱員工資以及部門所在的名字。
可以發現,結果是這樣的,從第一個表中選出第一筆記錄,和第二個表中的所有所有記錄進行組合,然後再從第一個表中取出第二張記錄,和第二張表的所有記錄進行組合,這樣的結果是沒有實際意義的。我們需要的是emp.deptno = dept.deptno欄位的記錄。
自連接
自連接是指在同一張表連接查詢
顯示員工FORD的上級領導的名字
子查詢
子查詢是指嵌入在其他sql語句中的select語句,也叫嵌套查詢。
單行子查詢:子查詢的查詢結果只有一行
顯示和SMITH同一部門的員工
多行子查詢(in ,all, any):傳回多筆記錄的子查詢
查詢和10好部門的工作相同的官員的名字、工作、工資、部門號,但不包括10號自己的資訊
顯示薪資比部門編號為30的所有員工的薪資高的員工的姓名、薪資和部門號
#顯示薪資比部門編號為30的任意員工的薪資高的員工的姓名、薪資和部門號碼
多列子查詢:查詢傳回多個列資料的子查詢語句
查詢和SMITH的部門和職位完全相同的僱員,不含SMITH本人
#from子句中使用子查詢
顯示高於自己部門的平均薪資的員工資訊
查找每個部門薪水最高的人的ename, job, sal
顯示每個部門的資訊(部門名稱、編號、地址)和人員數量
這裡有兩種方法可以使用,但是經驗證,當資料非常多的時候from子查詢的效率是高於多表查詢的。
刪除表中的重複記錄
已知一個表tt中有重複的資料
建立一張空表tmp_tt,空表的結構與表tt的結構相同;create table tmp_tt like tt;
將tt表進行distinct,將資料匯入空表中;insert into tmp_tt select distinct * from tt;
刪除原表ttdrop table tt;
將tmp_tt改名為ttalter table tmp_tt rename tt;
合併查詢
在實際應用中,為了合併多個select的執行結果,可以使用union,union all集合運算子
1、union運算子用於取得兩個結果的並集,並再自動去掉重複行,查找薪資大於2500和職位Manger的人
2. union all 與union類似,但不會自動去重
例如:與or類似
外鍵
外鍵定義主表和從表的關係,外鍵約束主要是定義在從表上,主表必須是有主鍵或唯一鍵。當定義外鍵後,要求外鍵列資料必須在主表列存在或為NULL。
例如:建立一個主表class,從表stu
#由上圖,我們可以知道主鍵不能為null,但是外鍵可以為null,同時不能存在外鍵有的資料而主表中不存在。
更多相關問題請訪問PHP中文網:mysql影片教學
以上是mysql的多表查詢詳細解說的詳細內容。更多資訊請關注PHP中文網其他相關文章!

MySQL通過異步、半同步和組複製三種模式處理數據複製。 1)異步複製性能高但可能丟失數據。 2)半同步複製提高數據安全性但增加延遲。 3)組複製支持多主複製和故障轉移,適用於高可用性需求。

EXPLAIN語句可用於分析和提升SQL查詢性能。 1.執行EXPLAIN語句查看查詢計劃。 2.分析輸出結果,關注訪問類型、索引使用情況和JOIN順序。 3.根據分析結果,創建或調整索引,優化JOIN操作,避免全表掃描,以提升查詢效率。

使用mysqldump進行邏輯備份和MySQLEnterpriseBackup進行熱備份是備份MySQL數據庫的有效方法。 1.使用mysqldump備份數據庫:mysqldump-uroot-pmydatabase>mydatabase_backup.sql。 2.使用MySQLEnterpriseBackup進行熱備份:mysqlbackup--user=root--password=password--backup-dir=/path/to/backupbackup。恢復時,使用相應的命

MySQL慢查詢的主要原因包括索引缺失或不當使用、查詢複雜度、數據量過大和硬件資源不足。優化建議包括:1.創建合適的索引;2.優化查詢語句;3.使用分錶分區技術;4.適當升級硬件。

MySQL視圖是基於SQL查詢結果的虛擬表,不存儲數據。 1)視圖簡化複雜查詢,2)增強數據安全性,3)維護數據一致性。視圖是數據庫中的存儲查詢,可像表一樣使用,但數據動態生成。

mysqldiffersfromothersqldialectsinsyntaxforlimit,自動啟動,弦樂範圍,子征服和表面上分析。 1)MySqluessLipslimit,whilesqlserverusestopopandoraclesrontersrontsrontsrontsronnum.2)

MySQL分區能提升性能和簡化維護。 1)通過按特定標準(如日期範圍)將大表分成小塊,2)物理上將數據分成獨立文件,3)查詢時MySQL可專注於相關分區,4)查詢優化器可跳過不相關分區,5)選擇合適的分區策略並定期維護是關鍵。

在MySQL中,如何授予和撤銷權限? 1.使用GRANT語句授予權限,如GRANTALLPRIVILEGESONdatabase_name.TO'username'@'host';2.使用REVOKE語句撤銷權限,如REVOKEALLPRIVILEGESONdatabase_name.FROM'username'@'host',確保及時溝通權限變更。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。