搜尋
首頁資料庫mysql教程mysql的多表查詢詳細解說

mysql的多表查詢詳細解說

Aug 23, 2019 pm 03:48 PM
多表查詢

首先,為了方便說明問題,建立兩個表emp(僱員資訊)和dept(僱員部門資訊),其資料如下:

mysql的多表查詢詳細解說在先前的文章中,我們分享了單表查詢的方法,但是在實際應用中,我們要查的資料很可能不在同一個表中,而是來自於不同的表。多表查詢如果不加任何條件,得到的結果稱為笛卡兒積。 例如,找出僱員名、僱員工資以及部門所在的名字。

mysql的多表查詢詳細解說

可以發現,結果是這樣的,從第一個表中選出第一筆記錄,和第二個表中的所有所有記錄進行組合,然後再從第一個表中取出第二張記錄,和第二張表的所有記錄進行組合,這樣的結果是沒有實際意義的。我們需要的是emp.deptno = dept.deptno欄位的記錄。

mysql的多表查詢詳細解說

自連接

自連接是指在同一張表連接查詢

顯示員工FORD的上級領導的名字 

mysql的多表查詢詳細解說

子查詢

子查詢是指嵌入在其他sql語句中的select語句,也叫嵌套查詢。

單行子查詢:子查詢的查詢結果只有一行

顯示和SMITH同一部門的員工 

mysql的多表查詢詳細解說

多行子查詢(in ,all, any):傳回多筆記錄的子查詢

查詢和10好部門的工作相同的官員的名字、工作、工資、部門號,但不包括10號自己的資訊 

mysql的多表查詢詳細解說

顯示薪資比部門編號為30的所有員工的薪資高的員工的姓名、薪資和部門號 

mysql的多表查詢詳細解說

#顯示薪資比部門編號為30的任意員工的薪資高的員工的姓名、薪資和部門號碼 

mysql的多表查詢詳細解說

#

多列子查詢:查詢傳回多個列資料的子查詢語句

查詢和SMITH的部門和職位完全相同的僱員,不含SMITH本人 

mysql的多表查詢詳細解說

#from子句中使用子查詢

顯示高於自己部門的平均薪資的員工資訊 

mysql的多表查詢詳細解說查找每個部門薪水最高的人的ename, job, sal 

mysql的多表查詢詳細解說顯示每個部門的資訊(部門名稱、編號、地址)和人員數量

mysql的多表查詢詳細解說

這裡有兩種方法可以使用,但是經驗證,當資料非常多的時候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的人 

mysql的多表查詢詳細解說

2. union all 與union類似,但不會自動去重 
例如:與or類似

mysql的多表查詢詳細解說

外鍵

外鍵定義主表和從表的關係,外鍵約束主要是定義在從表上,主表必須是有主鍵或唯一鍵。當定義外鍵後,要求外鍵列資料必須在主表列存在或為NULL。
例如:建立一個主表class,從表stu 

mysql的多表查詢詳細解說

mysql的多表查詢詳細解說

#由上圖,我們可以知道主鍵不能為null,但是外鍵可以為null,同時不能存在外鍵有的資料而主表中不存在。

更多相關問題請訪問PHP中文網:mysql影片教學

以上是mysql的多表查詢詳細解說的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
MySQL如何處理數據複製?MySQL如何處理數據複製?Apr 28, 2025 am 12:25 AM

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

您如何使用解釋性語句分析查詢性能?您如何使用解釋性語句分析查詢性能?Apr 28, 2025 am 12:24 AM

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

您如何備份並還原MySQL數據庫?您如何備份並還原MySQL數據庫?Apr 28, 2025 am 12:23 AM

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

MySQL中慢速查詢的常見原因是什麼?MySQL中慢速查詢的常見原因是什麼?Apr 28, 2025 am 12:18 AM

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

MySQL中有什麼看法?MySQL中有什麼看法?Apr 28, 2025 am 12:04 AM

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

MySQL和其他SQL方言之間的語法有什麼區別?MySQL和其他SQL方言之間的語法有什麼區別?Apr 27, 2025 am 12:26 AM

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

什麼是mysql分區?什麼是mysql分區?Apr 27, 2025 am 12:23 AM

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

您如何在MySQL中授予和撤銷特權?您如何在MySQL中授予和撤銷特權?Apr 27, 2025 am 12:21 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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

SublimeText3 英文版

SublimeText3 英文版

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

MantisBT

MantisBT

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

DVWA

DVWA

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

SecLists

SecLists

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