【MySQL】多表查詢
首先,為了方便說明問題,建立兩個表emp(僱員資訊)和dept(僱員部門資訊),其資料如下:
在之前的部落格中,我們分享了單表查詢的方法,但是在實際應用中,我們要查的資料很可能不在同一個表中,而是來自於不同的表。多表查詢如果不加任何條件,得到的結果稱為笛卡爾積。
例如,查詢僱員名、僱員工資以及部門所在的名字。
可以發現,結果是這樣的,從第一個表中選出第一條記錄,和第二個表中的所有所有記錄進行組合,然後再從第一個表中取出第二條記錄,和第二張表的所有記錄進行組合,這樣的結果是沒有實際意義的。我們需要的是emp.deptno = dept.deptno
欄位的記錄。
自連線
自連線是指在同一張表連線查詢
- 顯示員工FORD的上級領導的名字
子查詢
子查詢是指嵌入在其他sql語句中的select語句,也叫巢狀查詢。
單行子查詢:子查詢的查詢結果只有一行
- 顯示和SMITH同一部門的員工
多行子查詢(in ,all, any):返回多條記錄的子查詢
- 查詢和10好部門的工作相同的官員的名字、工作、工資、部門號,但是不包括10號自己的資訊
- 顯示工資比部門編號為30的所有員工的工資高的員工的姓名、工資和部門號
- 顯示工資比部門編號為30的任意員工的工資高的員工的姓名、工資和部門號
多列子查詢:查詢返回多個列資料的子查詢語句
- 查詢和SMITH的部門和崗位完全相同的僱員,不含SMITH本人
from子句中使用子查詢
- 顯示高於自己部門的平均工資的員工資訊
- 查詢每個部門工資最高的人的ename, job, sal
3.顯示每個部門的資訊(部門名、編號、地址)和人員數量
這裡有兩種方法可以使用,但是經驗證,當資料非常多的時候from子查詢的效率是高於多表查詢的。
刪除表中的重複記錄
已知一個表tt中有重複的資料
- 建立一張空表tmp_tt,空表的結構與表tt的結構相同;
create table tmp_tt like tt;
- 將tt表進行distinct,將資料匯入空表中;
insert into tmp_tt select distinct * from tt;
- 刪除原表tt
drop table tt;
- 將tmp_tt改名為tt
alter table tmp_tt rename tt;
合併查詢
在實際應用中,為了合併多個select的執行結果,可以使用union,union all集合操作符
- union操作符用於取得兩個結果的並集,並再自動去掉重複行
查詢工資大於2500和職位Manger的人
2. union all 與union類似,但是不會自動去重
例如:與or類似
外來鍵
外來鍵定義主表和從表的關係,外來鍵約束主要是定義在從表上,主表必須是有主鍵或者唯一鍵。當定義外來鍵後,要求外來鍵列資料必須在主表列存在或者為NULL。
例如:建立一個主表class,從表stu
由上圖,我們可以知道主鍵不能為null,但是外來鍵可以為null,同時不能存在外來鍵有的資料而主表中不存在。
相關文章
- mysql多表查詢MySql
- MySQL 多表查詢MySql
- mySQL多表查詢與事務MySql
- mysql多表查詢如何實現MySql
- MYSQL學習筆記26: 多表查詢|子查詢MySql筆記
- MySQL資料庫基礎——多表查詢:子查詢MySql資料庫
- mysql中的多表關聯查詢MySql
- Java-MySql-函式、多表查詢JavaMySql函式
- 多表查詢
- MYSQL學習筆記25: 多表查詢(子查詢)[標量子查詢,列子查詢]MySql筆記
- 一個MySQL多表查詢的問題MySql
- 04多表查詢
- mysql多表多欄位查詢並去重MySql
- SQL查詢的:子查詢和多表查詢SQL
- MYSQL學習筆記24: 多表查詢(聯合查詢,Union, Union All)MySql筆記
- Oracle-多表查詢Oracle
- ORM多表查詢下ORM
- mysql新建表和多表查詢,關鍵字joinMySql
- Mysql資料庫之多表查詢、事務、DCLMySql資料庫
- MySQL讓人又愛又恨的多表查詢MySql
- 讓人又愛又恨的Mysql多表查詢MySql
- JPA多表關聯查詢
- jpa動態查詢與多表聯合查詢
- JPA的多表複雜查詢
- JPA 之 多表聯合查詢
- 多表查詢建表語句
- 34. 過濾條件、多表查詢、子查詢
- springDataJpa多表級聯查詢(@ManyToOne @OneToOne)Spring
- MyBatisPlus怎麼多表關聯查詢?MyBatis
- SpringDataJpa (二)-動態查詢&多表操作Spring
- 如何做多表關聯查詢
- MYSQL 怎麼 LEFT JOIN 多表聯查MySql
- Android—Room資料庫多表查詢(Relationships)AndroidOOM資料庫
- mybatis多表聯合查詢的寫法MyBatis
- onethinkphp 如何做多表關聯查詢PHP
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL
- 開發人員不得不會的MySQL多表聯合查詢方法!MySql
- 【MySQL】MySQL進階(外來鍵約束、多表查詢、檢視、備份與恢復)MySql