MySQL之復(fù)合查詢使用及說明
復(fù)合查詢
會使用到的表:
emp表(員工表):

dept表(部門表):

salgrade表(工資表):

基本查詢回顧
- 查詢工資高于500或崗位為MANAGER的雇員,同時還要滿足他們的姓名首字母為大寫的J

- 按照部門號升序而雇員的工資降序排序

- 使用年薪進(jìn)行降序排序

- 顯示工資最高的員工的名字和工作崗位

- 顯示工資高于平均工資的員工信息

- 顯示每個部門的平均工資和最高工資

- 顯示平均工資低于2000的部門號和它的平均工資

- 顯示每種崗位的雇員總數(shù),平均工資

多表查詢笛卡爾積
實(shí)際開發(fā)中往往數(shù)據(jù)來自不同的表,所以需要多表查詢。我們用一個簡單的公司管理系統(tǒng),有三張 表EMP,DEPT,SALGRADE來演示如何進(jìn)行多表查詢。
案例:

其實(shí)我們只要emp表中的deptno = dept表中的deptno字段的記錄
- 顯示雇員名、雇員工資以及所在部門的名字

因?yàn)樯厦娴臄?shù)據(jù)來自EMP和DEPT表,因此要聯(lián)合查詢
- 顯示部門號為10的部門名,員工名和工資

- 顯示各個員工的姓名,工資,及工資級別

自連接
自連接是指在同一張表連接查詢
案例:
- 顯示員工FORD的上級領(lǐng)導(dǎo)的編號和姓名(mgr是員工領(lǐng)導(dǎo)的編號--empno)

這里使用到表的別名 ,給自己的表起別名,因?yàn)橐茸龅芽柗e,所以別名可以先識別
子查詢
子查詢是指嵌入在其他sql語句中的select語句,也叫嵌套查詢
單行子查詢
- 顯示SMITH同一部門的員工

多行子查詢
- in關(guān)鍵字;查詢和10號部門的工作崗位相同的雇員的名字,崗位,工資,部門號,但是不包含10自 己的

- all關(guān)鍵字;顯示工資比部門30的所有員工的工資高的員工的姓名、工資和部門號

- any關(guān)鍵字;顯示工資比部門30的任意員工的工資高的員工的姓名、工資和部門號(包含自己部門 的員工)

多列子查詢
單行子查詢是指子查詢只返回單列,單行數(shù)據(jù);多行子查詢是指返回單列多行數(shù)據(jù),都是針對單列而言 的,而多列子查詢則是指查詢返回多個列數(shù)據(jù)的子查詢語句
案例:
- 查詢和SMITH的部門和崗位完全相同的所有雇員,不含SMITH本人

在from子句中使用子查詢
子查詢語句出現(xiàn)在from子句中。這里要用到數(shù)據(jù)查詢的技巧,把一個子查詢當(dāng)做一個臨時表使用。
案例:
- 顯示每個高于自己部門平均工資的員工的姓名、部門、工資、平均工資

- 查找每個部門工資最高的人的姓名、工資、部門、最高工資

- 顯示每個部門的信息(部門名,編號,地址)和人員數(shù)量

合并查詢
在實(shí)際應(yīng)用中,為了合并多個select的執(zhí)行結(jié)果,可以使用集合操作符 union,union all
union
該操作符用于取得兩個結(jié)果集的并集。當(dāng)使用該操作符時,會自動去掉結(jié)果集中的重復(fù)行。
案例:
- 將工資大于2500或職位是MANAGER的人找出來

union all
該操作符用于取得兩個結(jié)果集的并集。當(dāng)使用該操作符時,不會去掉結(jié)果集中的重復(fù)行
- 將工資大于2500或職位是MANAGER的人找出來

總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
AlmaLinux 9 安裝 MySQL 8.0.32的詳細(xì)過程
這篇文章主要介紹了AlmaLinux 9 安裝 MySQL 8.0.32的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
windows下mysql?8.0.27?安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了windows下mysql?8.0.27?安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04

