欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL之復(fù)合查詢解讀

 更新時(shí)間:2025年08月11日 10:14:25   作者:每天敲200行代碼  
本文系統(tǒng)講解SQL查詢技術(shù),涵蓋基本查詢(條件篩選、排序、聚合)、多表連接、自連接、子查詢(單行/多行/多列)及合并查詢(UNION/UNION?ALL),通過emp、dept、salgrade三張表演示員工與部門數(shù)據(jù)關(guān)聯(lián)分析方法

一、基本查詢練習(xí)回顧

1、查詢工資高于 500 或崗位為 MANAGER 的雇員,同時(shí)還要滿足他們的姓名首字母為大寫的 J

2、按照部門號(hào)升序而雇員的工資降序排序

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

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

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

6、顯示每個(gè)部門的平均工資和最高工資

7、顯示平均工資低于2000的部門號(hào)和它的平均工資

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

二、多表查詢

實(shí)際開發(fā)中往往數(shù)據(jù)來自不同的表,所以需要多表查詢。這里我們用一個(gè)簡單的公司管理系統(tǒng),有三張表 emp,dept,salgrade 來演示如何進(jìn)行多表查詢。

?練習(xí)

1、顯示雇員名、雇員工資以及所在部門的名字因?yàn)樯厦娴臄?shù)據(jù)來自 emp 和 dept 表,因此要聯(lián)合查詢(將數(shù)據(jù)進(jìn)行窮舉組合 —— 笛卡爾積)

其實(shí)我們只要 emp 表中的 deptno=dept 表中的 deptno 字段的記錄:

2、顯示部門號(hào)為 10 的部門名,員工名和工資

3、顯示各個(gè)員工的姓名,工資,及工資級(jí)別

三、自連接

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

?練習(xí)

1、顯示員工 FORD 的上級(jí)領(lǐng)導(dǎo)的編號(hào)和姓名(mgr 是員工領(lǐng)導(dǎo)的編號(hào) —— empno)

(1)使用的子查詢

先找 FORD 的上級(jí)領(lǐng)導(dǎo)的編號(hào)(emp),再根據(jù)領(lǐng)導(dǎo)的編號(hào)來找領(lǐng)導(dǎo)的信息(emp)。

(2)使用多表查詢(自查詢)

  • 使用到表的別名

from emp e1, emp e2,給自己的表起別名,因?yàn)橐茸龅芽柗e,所以別名可以先識(shí)別。

四、子查詢

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

  • 目前學(xué)習(xí)到的子查詢都在 where 子句中充當(dāng)判斷條件。
  • 任何時(shí)刻,查詢出來的臨時(shí)結(jié)構(gòu),本質(zhì)在邏輯上也是表結(jié)構(gòu)。

1、單行子查詢

返回一行記錄的子查詢。

  • 顯示 SMITH 同一部門的員工

2、多行子查詢

返回多行記錄的子查詢。

(1)in 關(guān)鍵字

in 關(guān)鍵字用來判斷一個(gè)對(duì)應(yīng)的列值是否在某個(gè)集合當(dāng)中,只要在集合當(dāng)中,說明查找成功。

查詢和  10  號(hào)部門的工作崗位相同的雇員的名字,崗位,工資,部門號(hào),但是不包含  10  自己的。

擴(kuò)展:除了上面的要求以外,還需要顯示出對(duì)應(yīng)員工所屬崗位的名字。

(2)all 關(guān)鍵字

all 關(guān)鍵字表示與所有的值作比較。

顯示工資比部門  30  的所有員工的工資高的員工的姓名、工資和部門號(hào)。

另一種寫法:

(3)any 關(guān)鍵字

amy 關(guān)鍵字表示與任意的值作比較。

顯示工資比部門 30 的任意員工的工資高的員工的姓名、工資和部門號(hào)(包含自己部門的員工)。

3、多列子查詢

  • 單行子查詢是指子查詢只返回單列,單行數(shù)據(jù)。
  • 多行子查詢是指返回單列多行數(shù)據(jù),都是針對(duì)單列而言的,而多列子查詢則是指查詢返回多個(gè)列數(shù)據(jù)的子查詢語句。

?練習(xí)

查詢和 SMITH 的部門和崗位完全相同的所有雇員,不含 SMITH 本人

4、在 from 子句中使用子查詢

子查詢語句出現(xiàn)在  from  子句中。

這里要用到數(shù)據(jù)查詢的技巧,把一個(gè)子查詢當(dāng)做一個(gè)臨時(shí)表使用。

?練習(xí)

(1)顯示每個(gè)高于自己部門平均工資的員工的姓名、部門、工資、平均工資

  • 獲取各個(gè)部門的平均工資,將其看作臨時(shí)表

擴(kuò)展:除了上面的要求以外,還需要顯示出對(duì)應(yīng)部門的辦公地點(diǎn)。

(2)查找每個(gè)部門工資最高的人的姓名、工資、部門、最高工資

(3)顯示每個(gè)部門的信息(部門名,編號(hào),地址)和人員數(shù)量

a. 方法 1:使用多表

解決多表問題的本質(zhì):(多表的指導(dǎo)思想)

想辦法將多表轉(zhuǎn)化為單表,所以在 MySQL 中,所有 select 的問題全都可以轉(zhuǎn)成單表問題。 

b. 方法 2:使用子查詢(推薦)

  • 對(duì) emp 表進(jìn)行人員統(tǒng)計(jì)

  • 將上面的表看作臨時(shí)表

5、合并查詢

在實(shí)際應(yīng)用中,為了合并多個(gè)  select  的執(zhí)行結(jié)果,可以使用集合操作符 union , union all。

(1)union

該操作符用于取得兩個(gè)結(jié)果集的并集。當(dāng)使用該操作符時(shí), 會(huì) 自動(dòng)去掉結(jié)果集中的重復(fù)行。

練習(xí) —— 將工資大于 2500 或職位是 MANAGER 的人找出來

(2)union all

該操作符用于取得兩個(gè)結(jié)果集的并集。當(dāng)使用該操作符時(shí),不會(huì)去掉結(jié)果集中的重復(fù)行。

練習(xí) —— 將工資大于 25000 或職位是 MANAGER 的人找出來

注意:select 如果要使用 union / union all 來拼接兩個(gè)結(jié)果,前提是必須保證兩個(gè)表的列數(shù)是相同的。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL中浮點(diǎn)型轉(zhuǎn)字符型可能會(huì)遇的問題詳解

    MySQL中浮點(diǎn)型轉(zhuǎn)字符型可能會(huì)遇的問題詳解

    類型轉(zhuǎn)換是我們?nèi)粘i_發(fā)中經(jīng)常會(huì)遇到的一個(gè)需求,最近在將浮點(diǎn)型轉(zhuǎn)換成字符型的時(shí)候就遇到了一個(gè)問題,所以總結(jié)分享出來,下面這篇文章主要給大家介紹了MySQL中關(guān)于浮點(diǎn)型轉(zhuǎn)字符型可能遇到的問題的相關(guān)資料,需要的朋友可以參考下。
    2017-09-09
  • 分析mysql中一條SQL查詢語句是如何執(zhí)行的

    分析mysql中一條SQL查詢語句是如何執(zhí)行的

    為了充分發(fā)揮MySQL的性能并順利地使用,就必須正確理解其設(shè)計(jì)思想,因此,了解MySQL的邏輯架構(gòu)是必要的。本文將通過一條SQL查詢語句的具體執(zhí)行過程來詳細(xì)介紹MySQL架構(gòu)中的各個(gè)組件
    2021-06-06
  • MySql like模糊查詢通配符使用詳細(xì)介紹

    MySql like模糊查詢通配符使用詳細(xì)介紹

    MySQL提供標(biāo)準(zhǔn)的SQL模式匹配,以及一種基于象Unix實(shí)用程序如vi、grep和sed的擴(kuò)展正則表達(dá)式模式匹配的格式
    2013-10-10
  • Mysql中g(shù)roup by 使用中發(fā)現(xiàn)的問題

    Mysql中g(shù)roup by 使用中發(fā)現(xiàn)的問題

    當(dāng)使用MySQL的GROUP BY語句時(shí),根據(jù)指定的列對(duì)結(jié)果進(jìn)行分組,這種情況通常是由于在 GROUP BY 中選擇的字段與其他非聚合字段不兼容,或者在 SELECT 子句中沒有正確使用聚合函數(shù)所導(dǎo)致的,本文給大家介紹Mysql中g(shù)roup by 使用中發(fā)現(xiàn)的問題,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Mysql數(shù)據(jù)庫按時(shí)間點(diǎn)恢復(fù)實(shí)戰(zhàn)記錄

    Mysql數(shù)據(jù)庫按時(shí)間點(diǎn)恢復(fù)實(shí)戰(zhàn)記錄

    如果客戶在某時(shí)間節(jié)點(diǎn)由于誤操作,導(dǎo)致數(shù)據(jù)丟失,RDS管控服務(wù)是如何進(jìn)行恢復(fù)的呢?通過Mysql數(shù)據(jù)庫按時(shí)間點(diǎn)恢復(fù)該如何操作呢,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • Windows安裝MySQL8.0.28.0.msi方式(圖文詳解)

    Windows安裝MySQL8.0.28.0.msi方式(圖文詳解)

    這篇文章主要介紹了Windows安裝MySQL8.0.28.0.msi,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • MySQL三種安裝方式總結(jié)大全(mis、zip、yum)

    MySQL三種安裝方式總結(jié)大全(mis、zip、yum)

    mysql是一種廣泛使用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(rdbms),它支持多種安裝方式,這篇文章主要介紹了MySQL三種安裝方式(mis、zip、yum)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-08-08
  • MySql8.023安裝過程圖文詳解(首次安裝)

    MySql8.023安裝過程圖文詳解(首次安裝)

    這篇文章主要介紹了MySql8.023安裝過程(首次安裝),本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 帶你一文理清MySQL的各種鎖

    帶你一文理清MySQL的各種鎖

    MySQL?作為一種常用的關(guān)系型數(shù)據(jù)庫,也提供了多種鎖類型,這篇文章主要給大家介紹了關(guān)于MySQL各種鎖的相關(guān)資料,文中通過代碼及圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • 用shell寫一個(gè)mysql數(shù)據(jù)備份腳本

    用shell寫一個(gè)mysql數(shù)據(jù)備份腳本

    本篇文章教給大家用shell寫一個(gè)mysql數(shù)據(jù)備份腳本,這是一個(gè)簡單備份MYSQL數(shù)據(jù)庫的方法,一起跟著學(xué)習(xí)下吧。
    2017-12-12

最新評(píng)論