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

MySQL復(fù)合查詢的實(shí)現(xiàn)示例

 更新時(shí)間:2023年10月07日 10:22:52   作者:冰果滴  
復(fù)合查詢語句是MySQL中一種非常重要的查詢方式,可以用于優(yōu)化查詢性能和控制查詢的結(jié)果集,具有一定的參考價(jià)值,感興趣的可以了解一下

前言:經(jīng)過前面的學(xué)習(xí),MySQL的基本操作都已經(jīng)掌握了。之前介紹的是對(duì)于一張表進(jìn)行查詢,但是僅僅查詢一張表是不夠的,所以從這一篇開始要介紹多張表時(shí)如何查詢。

一.單表查詢(引入子查詢)

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

這兩種寫法都可以。 

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

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

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

max是聚合函數(shù),不能這么用,因此可以將其分開:

這樣分兩步寫看著很不好,因此這里要用到一個(gè)新的查詢:子查詢

即在一個(gè)查詢里嵌套另一個(gè)查詢。

也可以據(jù)此顯示年薪最高的員工的名字和工作崗位:

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

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

這里format是最后一步,不要先對(duì)它重命名,后面是無法識(shí)別的。 

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

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

二.多表查詢

(1)顯示雇員名、雇員工資以及所在部門的名字因?yàn)樯厦娴臄?shù)據(jù)來自EMP和DEPT表,因此要聯(lián)合查詢

這里雇員名和雇員工資在emp表(從表)中,而部門名字在dept表(主表)中,emp表只有部門的編號(hào)。

select后面是可以跟多個(gè)表的,后面多個(gè)表會(huì)被合并為一個(gè)表顯示:

多表組合,形成笛卡爾積,本質(zhì)是數(shù)據(jù)的窮舉。

這里只有兩個(gè)deptno相等的才是有效的,但是不能這么寫:

應(yīng)該這樣寫:

因此:

得到了想要查詢的結(jié)果。 

解決多表查詢的思路:

① 讀題,確定都和哪些表有關(guān)

② 組合成一張表

③ 將多表查詢,看作成為一張表的查詢

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

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

三.自連接

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

可以用e1和e2表示兩個(gè)相同的emp表。

例子:顯示員工FORD的上級(jí)領(lǐng)導(dǎo)的編號(hào)和姓名

如果按照之前的方法,是要兩步的,不過這里可以用自連接變成一步。

這樣就變成了一步。

也可以用子查詢的方法變成一步。

四.子查詢

(1)多行單列子查詢 

返回多行記錄的子查詢。(這里是對(duì)上面子查詢的擴(kuò)展)

① in:在這個(gè)集合中

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

② all:所有的

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

不使用all,可以將題目轉(zhuǎn)化為大于30的員工中最高工資的員工。

用all。

③ any:任何一個(gè)

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

(2)多列子查詢

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

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

(3)在from子句中使用子查詢

子查詢語句出現(xiàn)在from子句中。這里要用到數(shù)據(jù)查詢的技巧,把一個(gè)子查詢當(dāng)做一個(gè)臨時(shí)表使用。

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

如果想知道其工資等級(jí),就繼續(xù)往上加:

例子②:查找每個(gè)部門工資最高的人的姓名、工資、部門、最高工資

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

mysql永遠(yuǎn)會(huì)有一張表。

如果我們只有一張表,要進(jìn)行各種select,我們認(rèn)為,所有select查出來的結(jié)果,都是一張表。

如果我們有多張表,進(jìn)行查詢之前,我們可以進(jìn)行整合,也是select,查出來的結(jié)果,也是一張表。

五.合并查詢(union、union all)

為了合并多個(gè)select的執(zhí)行結(jié)果,可以使用集合操作符 union,union all。

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

例子:將工資大于2500或職位是MANAGER的人找出來。

這是不使用union的方法。

使用union將兩個(gè)語句合并在一起。 

如果使用union all就不會(huì)去重。

union (all):本質(zhì)是將多次查詢結(jié)果合并成為一個(gè)結(jié)果(就是將多張表合并成為一張表)。

到此這篇關(guān)于MySQL復(fù)合查詢的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)MySQL復(fù)合查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL慢查詢以及解決方案詳解

    MySQL慢查詢以及解決方案詳解

    MySQL的慢查詢,全名是慢查詢?nèi)罩?是MySQL提供的一種日志記錄,用來記錄在MySQL中響應(yīng)時(shí)間超過閥值的語句,下面這篇文章主要給大家介紹了關(guān)于MySQL慢查詢以及解決方案的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 數(shù)據(jù)結(jié)構(gòu)-樹(三):多路搜索樹B樹、B+樹

    數(shù)據(jù)結(jié)構(gòu)-樹(三):多路搜索樹B樹、B+樹

    這篇文章主要介紹了多路搜索樹B樹、B+樹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • MySql安裝與配置方法(MySQL添加用戶、刪除用戶與授權(quán))

    MySql安裝與配置方法(MySQL添加用戶、刪除用戶與授權(quán))

    這篇文章主要介紹了MySql安裝與配置方法(MySQL添加用戶、刪除用戶與授權(quán))的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • 詳解MySQL用事件調(diào)度器Event Scheduler創(chuàng)建定時(shí)任務(wù)

    詳解MySQL用事件調(diào)度器Event Scheduler創(chuàng)建定時(shí)任務(wù)

    事件調(diào)度器(Event Scheduler)是在MySQLv5.1.6中新增的一個(gè)功能,它相當(dāng)于一個(gè)定時(shí)器,可以在指定的時(shí)間點(diǎn)執(zhí)行一條SQL語句或一個(gè)語句塊,也可以用于在固定間隔重復(fù)執(zhí)行。下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)在MySQL中如何用事件調(diào)度器Event Scheduler創(chuàng)建定時(shí)任務(wù)
    2016-08-08
  • MySQL中Nested-Loop Join算法小結(jié)

    MySQL中Nested-Loop Join算法小結(jié)

    數(shù)據(jù)庫中JOIN操作的實(shí)現(xiàn)主要有三種:嵌套循環(huán)連接(Nested Loop Join),歸并連接(Merge Join)和散列連接或者哈稀連接(Hash Join)。其中嵌套循環(huán)連接又視情況又有兩種變形:塊嵌套循環(huán)連接和索引嵌套循環(huán)連接。
    2015-12-12
  • MySQL借助DB實(shí)現(xiàn)分布式鎖思路詳解

    MySQL借助DB實(shí)現(xiàn)分布式鎖思路詳解

    這篇文章主要給大家介紹了關(guān)于MySQL借助DB實(shí)現(xiàn)分布式鎖思路的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • MYSQL 左連接右連接和內(nèi)連接的詳解及區(qū)別

    MYSQL 左連接右連接和內(nèi)連接的詳解及區(qū)別

    這篇文章主要介紹了MYSQL 左連接右連接和內(nèi)連接的詳解及區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 關(guān)于MySQL中savepoint語句使用時(shí)所出現(xiàn)的錯(cuò)誤

    關(guān)于MySQL中savepoint語句使用時(shí)所出現(xiàn)的錯(cuò)誤

    這篇文章主要介紹了關(guān)于MySQL中savepoint語句使用時(shí)所出現(xiàn)的錯(cuò)誤,字符串出現(xiàn)e時(shí)所產(chǎn)生的問題也被作為MySQL的bug進(jìn)行過提交,需要的朋友可以參考下
    2015-05-05
  • MySQL忘記root密碼的兩種解決方案

    MySQL忘記root密碼的兩種解決方案

    在使用MySQL數(shù)據(jù)庫管理系統(tǒng)時(shí),有時(shí)候會(huì)碰到忘記了root用戶的密碼的情況,這時(shí)候就需要找到一種解決方案來重置或者恢復(fù)root密碼,本文將介紹兩種常用的方法來解決這個(gè)問題,需要的朋友可以參考下
    2024-09-09
  • Mysql之組合索引方法詳解

    Mysql之組合索引方法詳解

    這篇文章主要介紹了Mysql之組合索引方法詳解,文中通過示例代碼和查詢結(jié)果展示介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評(píng)論