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

MySQL多表關(guān)聯(lián)查詢方式及實際應(yīng)用

 更新時間:2024年07月01日 11:09:35   作者:埋頭苦干的小馮  
MySQL語句學(xué)習(xí)的難點和重點就在于多表查詢,同時MySQL也有諸多方法供大家選擇,不論是多表聯(lián)查(聯(lián)結(jié)表、左連接、右連接……),這篇文章主要給大家介紹了關(guān)于MySQL多表關(guān)聯(lián)查詢方式及實際應(yīng)用的相關(guān)資料,需要的朋友可以參考下

一、關(guān)聯(lián)查詢方式

1、 inner join--內(nèi)連接

代表選擇的是兩個表的交差部分。

內(nèi)連接就是表間的主鍵與外鍵相連,只取得鍵值一致的,可以獲取雙方表中的數(shù)據(jù)連接方式。

基本語法

SELECT 列名1,列名2... FROM 表1 INNER JOIN 表2 ON 表1.外鍵=表2.主鍵 WhERE 條件語句;

2、left join--左連接

代表選擇的是前面一個表的全部。

左連接是以左表為標(biāo)準(zhǔn),只查詢在左邊表中存在的數(shù)據(jù),當(dāng)然需要兩個表中的鍵值一致。

基本語法

SELECT 列名1 FROM 表1 LEFT OUTER JOIN 表2 ON 表1.外鍵=表2.主鍵 WhERE 條件語句;

3、 right join--右連接

代表選擇的是后面一個表的全部

同理,右連接將會以右邊作為基準(zhǔn),進(jìn)行檢索。

基本語法

SELECT 列名1 FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.外鍵=表2.主鍵 WhERE 條件語句;

4、自連接

自連接顧名思義就是自己跟自己連接,參與連接的表都是同一張表。(通過給表取別名虛擬出)。

基本語法

SELECT 字段名列表  FROM 表1 別名1,表名1 別名2 
WHERE 別名1.字段名=別名1.字段名;

5、交叉連接

不適用任何匹配條件。生成笛卡爾積

基本語法

SELECT 列表名 FROM 表名1,表名2;

6、子查詢

1):子查詢是將一個查詢語句嵌套在另一個查詢語句中。內(nèi)部嵌套其他select語句的查詢,稱為外查詢或主查詢

2):內(nèi)層查詢語句的查詢結(jié)果,可以為外層查詢語句提供查詢條件。

3):子查詢中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等關(guān)鍵字

4):還可以包含比較運算符:= 、 !=、> 、<等

基本語法

SELECT 字段列表 FROM 表名 
WHERE 字段名=(SELECT 字段名 FROM 表名);

二、關(guān)聯(lián)查詢應(yīng)用

基于這三個表

mysql> select * from dept3;
+--------+-----------+
| deptno | name      |
+--------+-----------+
| 1001   | 研發(fā)部    |
| 1002   | 銷售部    |
| 1003   | 財務(wù)部    |
| 1004   | 人事部    |
+--------+-----------+
4 rows in set (0.00 sec)

mysql> select * from emp3;
+-----+--------------+------+---------+
| eid | ename        | age  | dept_id |
+-----+--------------+------+---------+
| 1   | 喬峰         |   20 | 1001    |
| 10  | 丁春秋       |   71 | 1005    |
| 2   | 段譽         |   21 | 1001    |
| 3   | 虛竹         |   23 | 1001    |
| 4   | 阿紫         |   18 | 1001    |
| 5   | 掃地僧       |   85 | 1002    |
| 6   | 李秋水       |   33 | 1002    |
| 7   | 鳩摩智       |   50 | 1002    |
| 8   | 天山童姥     |   60 | 1003    |
| 9   | 慕容博       |   58 | 1003    |
+-----+--------------+------+---------+
10 rows in set (0.00 sec)
?
mysql> select * from emp;
+-------+-----------+-----------+------+------------+-------+-------+--------+
| empno | ename     | job       | mgr  | hiredate   | sai   | comm  | deptno |
+-------+-----------+-----------+------+------------+-------+-------+--------+
|  1001 | 甘寧      | 文員      | 1013 | 2000-12-17 |  8000 |  NULL |     20 |
|  1002 | 黛綺絲    | 銷售員    | 1006 | 2001-02-20 | 16000 |  3000 |     30 |
|  1003 | 殷天正    | 銷售員    | 1006 | 2001-02-22 | 12500 |  5000 |     30 |
|  1004 | 劉備      | 經(jīng)理      | 1009 | 2001-04-02 | 29750 |  NULL |     20 |
|  1005 | 謝遜      | 銷售員    | 1006 | 2001-09-28 | 12500 | 14000 |     30 |
|  1006 | 關(guān)羽      | 經(jīng)理      | 1009 | 2001-05-01 | 28500 |  NULL |     30 |
|  1007 | 張飛      | 經(jīng)理      | 1009 | 2001-09-01 | 24500 |  NULL |     10 |
|  1008 | 諸葛亮    | 分析師    | 1004 | 2007-04-19 | 30000 |  NULL |     20 |
|  1009 | 曾阿牛    | 董事長    | NULL | 2001-11-17 | 50000 |  NULL |     10 |
|  1010 | 韋一笑    | 銷售員    | 1006 | 2001-09-08 | 15000 |     0 |     30 |
|  1011 | 周泰      | 文員      | 1006 | 2007-05-23 | 11000 |  NULL |     20 |
|  1012 | 程普      | 文員      | 1006 | 2001-12-03 |  9500 |  NULL |     30 |
|  1013 | 龐統(tǒng)      | 分析師    | 1004 | 2001-12-03 | 30000 |  NULL |     20 |
|  1014 | 黃蓋      | 文員      | 1007 | 2002-01-23 | 13000 |  NULL |     10 |
|  1015 | 張三      | 保潔員    | 1001 | 2013-05-01 | 80000 | 50000 |     50 |
+-------+-----------+-----------+------+------------+-------+-------+--------+
15 rows in set (0.00 sec)

?

1、inner join--內(nèi)連接

查詢銷售部的員工信息。

mysql> select name,emp3.* from dept3 inner join emp3 
    -> on dept3.deptno=emp3.dept_id
    -> where name='銷售部';
+-----------+-----+-----------+------+---------+
| name      | eid | ename     | age  | dept_id |
+-----------+-----+-----------+------+---------+
| 銷售部    | 5   | 掃地僧    |   85 | 1002    |
| 銷售部    | 6   | 李秋水    |   33 | 1002    |
| 銷售部    | 7   | 鳩摩智    |   50 | 1002    |
+-----------+-----+-----------+------+---------+
3 rows in set (0.00 sec)

2、left join--左連接

查看每員工所對應(yīng)的部門。

mysql> select emp3.*,name from emp3 left join dept3 
    -> on emp3.dept_id=dept3.deptno;
+-----+--------------+------+---------+-----------+
| eid | ename        | age  | dept_id | name      |
+-----+--------------+------+---------+-----------+
| 1   | 喬峰         |   20 | 1001    | 研發(fā)部    |
| 2   | 段譽         |   21 | 1001    | 研發(fā)部    |
| 3   | 虛竹         |   23 | 1001    | 研發(fā)部    |
| 4   | 阿紫         |   18 | 1001    | 研發(fā)部    |
| 5   | 掃地僧       |   85 | 1002    | 銷售部    |
| 6   | 李秋水       |   33 | 1002    | 銷售部    |
| 7   | 鳩摩智       |   50 | 1002    | 銷售部    |
| 8   | 天山童姥     |   60 | 1003    | 財務(wù)部    |
| 9   | 慕容博       |   58 | 1003    | 財務(wù)部    |
| 10  | 丁春秋       |   71 | 1005    | NULL      |
+-----+--------------+------+---------+-----------+
10 rows in set (0.00 sec)

3、right join--右連接

查看每個部門對應(yīng)的員工信息。

mysql> select name,emp3.* from dept3 right join emp3 
    -> on dept3.deptno=emp3.dept_id;
+-----------+-----+--------------+------+---------+
| name      | eid | ename        | age  | dept_id |
+-----------+-----+--------------+------+---------+
| 研發(fā)部    | 1   | 喬峰         |   20 | 1001    |
| 研發(fā)部    | 2   | 段譽         |   21 | 1001    |
| 研發(fā)部    | 3   | 虛竹         |   23 | 1001    |
| 研發(fā)部    | 4   | 阿紫         |   18 | 1001    |
| 銷售部    | 5   | 掃地僧       |   85 | 1002    |
| 銷售部    | 6   | 李秋水       |   33 | 1002    |
| 銷售部    | 7   | 鳩摩智       |   50 | 1002    |
| 財務(wù)部    | 8   | 天山童姥     |   60 | 1003    |
| 財務(wù)部    | 9   | 慕容博       |   58 | 1003    |
| NULL      | 10  | 丁春秋       |   71 | 1005    |
+-----------+-----+--------------+------+---------+

4、自連接

在emp表中查詢姓名的上級領(lǐng)導(dǎo)(mgr)的名字。

mysql> select a.ename,b.ename 領(lǐng)導(dǎo)名字 from emp a,emp b 
    -> where a.mgr=b.empno;
+-----------+--------------+
| ename     | 領(lǐng)導(dǎo)名字     |
+-----------+--------------+
| 甘寧      | 龐統(tǒng)         |
| 黛綺絲    | 關(guān)羽         |
| 殷天正    | 關(guān)羽         |
| 劉備      | 曾阿牛       |
| 謝遜      | 關(guān)羽         |
| 關(guān)羽      | 曾阿牛       |
| 張飛      | 曾阿牛       |
| 諸葛亮    | 劉備         |
| 韋一笑    | 關(guān)羽         |
| 周泰      | 關(guān)羽         |
| 程普      | 關(guān)羽         |
| 龐統(tǒng)      | 劉備         |
| 黃蓋      | 張飛         |
| 張三      | 甘寧         |
+-----------+--------------+
14 rows in set (0.00 sec)

5、交叉連接

mysql> select * from emp3,dept3;
+-----+--------------+------+---------+--------+-----------+
| eid | ename        | age  | dept_id | deptno | name      |
+-----+--------------+------+---------+--------+-----------+
| 1   | 喬峰         |   20 | 1001    | 1001   | 研發(fā)部    |
| 1   | 喬峰         |   20 | 1001    | 1002   | 銷售部    |
| 1   | 喬峰         |   20 | 1001    | 1003   | 財務(wù)部    |
| 1   | 喬峰         |   20 | 1001    | 1004   | 人事部    |
| 10  | 丁春秋       |   71 | 1005    | 1001   | 研發(fā)部    |
| 10  | 丁春秋       |   71 | 1005    | 1002   | 銷售部    |
| 10  | 丁春秋       |   71 | 1005    | 1003   | 財務(wù)部    |
| 10  | 丁春秋       |   71 | 1005    | 1004   | 人事部    |
| 2   | 段譽         |   21 | 1001    | 1001   | 研發(fā)部    |
| 2   | 段譽         |   21 | 1001    | 1002   | 銷售部    |
| 2   | 段譽         |   21 | 1001    | 1003   | 財務(wù)部    |
| 2   | 段譽         |   21 | 1001    | 1004   | 人事部    |
| 3   | 虛竹         |   23 | 1001    | 1001   | 研發(fā)部    |
| 3   | 虛竹         |   23 | 1001    | 1002   | 銷售部    |
| 3   | 虛竹         |   23 | 1001    | 1003   | 財務(wù)部    |
| 3   | 虛竹         |   23 | 1001    | 1004   | 人事部    |
| 4   | 阿紫         |   18 | 1001    | 1001   | 研發(fā)部    |
| 4   | 阿紫         |   18 | 1001    | 1002   | 銷售部    |
| 4   | 阿紫         |   18 | 1001    | 1003   | 財務(wù)部    |
| 4   | 阿紫         |   18 | 1001    | 1004   | 人事部    |
| 5   | 掃地僧       |   85 | 1002    | 1001   | 研發(fā)部    |
| 5   | 掃地僧       |   85 | 1002    | 1002   | 銷售部    |
| 5   | 掃地僧       |   85 | 1002    | 1003   | 財務(wù)部    |
| 5   | 掃地僧       |   85 | 1002    | 1004   | 人事部    |
| 6   | 李秋水       |   33 | 1002    | 1001   | 研發(fā)部    |
| 6   | 李秋水       |   33 | 1002    | 1002   | 銷售部    |
| 6   | 李秋水       |   33 | 1002    | 1003   | 財務(wù)部    |
| 6   | 李秋水       |   33 | 1002    | 1004   | 人事部    |
| 7   | 鳩摩智       |   50 | 1002    | 1001   | 研發(fā)部    |
| 7   | 鳩摩智       |   50 | 1002    | 1002   | 銷售部    |
| 7   | 鳩摩智       |   50 | 1002    | 1003   | 財務(wù)部    |
| 7   | 鳩摩智       |   50 | 1002    | 1004   | 人事部    |
| 8   | 天山童姥     |   60 | 1003    | 1001   | 研發(fā)部    |
| 8   | 天山童姥     |   60 | 1003    | 1002   | 銷售部    |
| 8   | 天山童姥     |   60 | 1003    | 1003   | 財務(wù)部    |
| 8   | 天山童姥     |   60 | 1003    | 1004   | 人事部    |
| 9   | 慕容博       |   58 | 1003    | 1001   | 研發(fā)部    |
| 9   | 慕容博       |   58 | 1003    | 1002   | 銷售部    |
| 9   | 慕容博       |   58 | 1003    | 1003   | 財務(wù)部    |
| 9   | 慕容博       |   58 | 1003    | 1004   | 人事部    |
+-----+--------------+------+---------+--------+-----------+
40 rows in set (0.00 sec)

6、子查詢

在emp3表中年齡大于平均年齡的姓名。

mysql> select ename,age from emp3   
    -> where age>(select avg(age) from emp3);
+--------------+------+
| ename        | age  |
+--------------+------+
| 丁春秋       |   71 |
| 掃地僧       |   85 |
| 鳩摩智       |   50 |
| 天山童姥     |   60 |
| 慕容博       |   58 |
+--------------+------+
5 rows in set (0.00 sec)

#驗證是否查詢正確,看看平均年齡是多少
mysql> select avg(age) 平均年齡 from emp3;
+--------------+
| 平均年齡     |
+--------------+
|      43.9000 |
+--------------+
1 row in set (0.00 sec)

7、group_concat(字段名)函數(shù)的使用 

查詢每個部門的員工姓名。

emp表

mysql> select job,group_concat(ename) from emp group by job;
+-----------+--------------------------------------+
| job       | group_concat(ename)                  |
+-----------+--------------------------------------+
| 保潔員    | 張三                                 |
| 分析師    | 諸葛亮,龐統(tǒng)                          |
| 文員      | 甘寧,周泰,程普,黃蓋                  |
| 經(jīng)理      | 劉備,關(guān)羽,張飛                       |
| 董事長    | 曾阿牛                               |
| 銷售員    | 黛綺絲,殷天正,謝遜,韋一笑            |
+-----------+--------------------------------------+
6 rows in set (0.00 sec)

emp3和dept3表 

mysql> select name,group_concat(ename) from dept3 left join emp3 
    -> on dept3.deptno=emp3.dept_id
    -> group by dept3.name;
+-----------+-------------------------------+
| name      | group_concat(ename)           |
+-----------+-------------------------------+
| 人事部    | NULL                          |
| 研發(fā)部    | 段譽,阿紫,喬峰,虛竹           |
| 財務(wù)部    | 天山童姥,慕容博               |
| 銷售部    | 李秋水,掃地僧,鳩摩智          |
+-----------+-------------------------------+
4 rows in set (0.00 sec)

 注:在使用的過程中根據(jù)需求聯(lián)合使用。 

總結(jié)

到此這篇關(guān)于MySQL多表關(guān)聯(lián)查詢方式及實際應(yīng)用的文章就介紹到這了,更多相關(guān)MySQL多表關(guān)聯(lián)查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL定時執(zhí)行腳本(計劃任務(wù))命令實例

    MySQL定時執(zhí)行腳本(計劃任務(wù))命令實例

    在mysql中我們可以直接進(jìn)行一些參數(shù)設(shè)置讓它成定時為我們執(zhí)行一些任務(wù)了,這個雖然可以使用windows或者linux中的計劃任務(wù)實現(xiàn),但是mysql本身也能完成
    2013-10-10
  • MySQL中索引優(yōu)化distinct語句及distinct的多字段操作

    MySQL中索引優(yōu)化distinct語句及distinct的多字段操作

    這篇文章主要介紹了MySQL中索引優(yōu)化distinct語句及distinct的多字段操作方法,distinct語句去重功能的使用是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-01-01
  • MySQL使用變量實現(xiàn)各種排序

    MySQL使用變量實現(xiàn)各種排序

    這篇文章主要介紹了MySQL使用變量實現(xiàn)各種排序,需要的朋友可以參考下
    2017-05-05
  • MySQL中Like概念及用法講解

    MySQL中Like概念及用法講解

    在本篇文章里小編給大家整理的是一篇關(guān)于MySQL中Like概念及用法講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • Mysql數(shù)據(jù)庫5.7升級到8.4的實現(xiàn)

    Mysql數(shù)據(jù)庫5.7升級到8.4的實現(xiàn)

    很多情況需要升級MySQL的數(shù)據(jù)庫版本,本文主要介紹了Mysql數(shù)據(jù)庫5.7升級到8.4的實現(xiàn),文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Linux下mysql5.6.24(二進(jìn)制)自動安裝腳本

    Linux下mysql5.6.24(二進(jìn)制)自動安裝腳本

    這篇文章主要為大家詳細(xì)介紹了Linux環(huán)境下mysql5.6.24二進(jìn)制自動安裝腳本,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Mysql提升索引效率優(yōu)化的八種方法總結(jié)

    Mysql提升索引效率優(yōu)化的八種方法總結(jié)

    索引實際上也是一張表,保存了主鍵和索引的字段,并且指向?qū)嶓w表的記錄,所以索引也是需要占用空間的,這篇文章主要給大家介紹了關(guān)于Mysql提升索引效率優(yōu)化的八種方法,需要的朋友可以參考下
    2024-04-04
  • mysql實現(xiàn)merge into問題

    mysql實現(xiàn)merge into問題

    文章介紹了在數(shù)據(jù)庫操作中,如何使用`REPLACE INTO`和`INSERT INTO ON DUPLICATE KEY UPDATE`語句進(jìn)行數(shù)據(jù)更新和插入操作,如果不想創(chuàng)建唯一性索引,可以通過存儲過程實現(xiàn),文章通過實驗和驗證,展示了這兩種方法的實際效果
    2024-12-12
  • MySQL 跨庫查詢示例場景分析

    MySQL 跨庫查詢示例場景分析

    在 MySQL 數(shù)據(jù)庫應(yīng)用場景中,有時需要從多個數(shù)據(jù)庫中獲取數(shù)據(jù)并進(jìn)行關(guān)聯(lián)分析或綜合處理,這就涉及到跨庫查詢操作,本指南將詳細(xì)介紹 MySQL 跨庫查詢的方法、注意事項以及相關(guān)示例,感興趣的朋友一起看看吧
    2025-04-04
  • Express項目中操作MySQL的步驟

    Express項目中操作MySQL的步驟

    本文詳細(xì)介紹了如何在Express項目中操作MySQL數(shù)據(jù)庫,包括安裝配置、連接數(shù)據(jù)庫、執(zhí)行SQL語句以及處理查詢結(jié)果等關(guān)鍵步驟,感興趣的朋友跟隨小編一起看看吧
    2025-02-02

最新評論