最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL復(fù)合查詢深度解析

 更新時(shí)間:2025年08月26日 14:39:39   作者:Ragef  
這篇文章給大家介紹MySQL復(fù)合查詢深度解析,文章介紹了多表連接與子查詢的用法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

多表查詢

內(nèi)連接

內(nèi)連接是最常用的多表連接方式,它只返回兩個(gè)表中滿足連接條件的行。

語法: 

SELECT 列名
FROM 表1
INNER JOIN 表2 ON 表1.列 = 表2.列;

例如:

SELECT e.name, d.dept_name
FROM employees e
INNER JOIN departments d ON e.dept_id = d.dept_id;

多表內(nèi)連接

SELECT e.name, d.dept_name, p.project_name
FROM employees e
INNER JOIN departments d ON e.dept_id = d.dept_id
INNER JOIN projects p ON e.project_id = p.id;

左外連接

左外連接會返回左表中的所有記錄,即使右表中沒有匹配項(xiàng),也會保留左表的行,右表沒有對應(yīng)數(shù)據(jù)的部分用 NULL 填充。

語法:

SELECT 列名
FROM 左表
LEFT [OUTER] JOIN 右表
ON 左表.列 = 右表.列;

左表寫在FROM子句中,右表寫在JOIN子句中。

例如:

SELECT e.name, d.dept_name
FROM employees e
LEFT JOIN departments d ON e.dept_id = d.dept_id;

右外連接

右外連接和左外連接相反,以右表為主,把它所有行都留下,左表能匹配就匹配,不能匹配補(bǔ) NULL。

語法:

SELECT 列列表
FROM 左表
RIGHT [OUTER] JOIN 右表
ON 連接條件;

例如:

SELECT s.id, st.name, s.score
FROM students st
RIGHT JOIN scores s ON st.id = s.student_id;

自連接

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

語法:

SELECT 列
FROM 表名 AS A
JOIN 表名 AS B ON A.某列 = B.某列
[WHERE / GROUP BY / ...];

必須給表起兩個(gè)不同的別名(A、B)

SELECT  e.name   AS employee,
        m.name   AS manager
FROM    employees AS e
LEFT JOIN employees AS m
       ON e.manager_id = m.emp_id;

子查詢

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

單行子查詢

返回一行記錄的子查詢。

SELECT ...
FROM 表1
WHERE 列 運(yùn)算符 (SELECT 單列
                 FROM 表2
                 WHERE 條件
                 LIMIT 1);   -- 確保只返回一行

例如:

SELECT name, salary
FROM   employees
WHERE  salary > (SELECT AVG(salary) FROM employees);

多行子查詢

返回多行記錄的子查詢。

多行子查詢的4大運(yùn)算符

IN:匹配子查詢結(jié)果中的任意一個(gè)值

SELECT stu_name
FROM   students
WHERE  stu_id IN (SELECT stu_id FROM enroll WHERE course = '數(shù)學(xué)');

ANY:與子查詢結(jié)果中的任意一個(gè)值比較即可

SELECT name
FROM   employees
WHERE  salary > ANY (SELECT salary FROM employees WHERE dept_id = 10);

ALL:與所有子查詢結(jié)果比較

SELECT name
FROM   employees
WHERE  salary > ALL (SELECT salary FROM employees WHERE dept_id = 10);

EXISTS:子查詢至少返回一行則為真

SELECT name
FROM   students s
WHERE  EXISTS (SELECT 1
               FROM   scores sc
               WHERE  sc.stu_id = s.stu_id
               AND    sc.score > 90);

多列子查詢

單行子查詢是指子查詢只返回單列,單行數(shù)據(jù);

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

SELECT name
FROM   employees
WHERE  (dept_id, job_title) IN (
        SELECT dept_id, job_title
        FROM   employees
        WHERE  name = '張三'
);

from子句中使用子查詢

SELECT d.dept_name, t.avg_sal
FROM (
        SELECT dept_id, AVG(salary) AS avg_sal
        FROM   emp
        GROUP  BY dept_id
     ) AS t
JOIN dept d ON d.dept_id = t.dept_id
WHERE t.avg_sal > 8000;

合并查詢

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

union(去重合并)

SELECT name FROM employees
UNION
SELECT name FROM contractors;

union all(不去重、速度快)

SELECT name FROM employees
UNION ALL
SELECT name FROM contractors;

到此這篇關(guān)于MySQL復(fù)合查詢深度解析的文章就介紹到這了,更多相關(guān)mysql復(fù)合查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL系列之六 用戶與授權(quán)

    MySQL系列之六 用戶與授權(quán)

    做為Mysql數(shù)據(jù)庫管理員管理用戶賬戶,是一件很重要的事,指出哪個(gè)用戶可以連接服務(wù)器,從哪里連接,連接后能做什么,這篇文章主要介紹了MySQL用戶與授權(quán)的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • MYSQL替換時(shí)間(年月日)字段時(shí)分秒不變實(shí)例解析

    MYSQL替換時(shí)間(年月日)字段時(shí)分秒不變實(shí)例解析

    這篇文章主要介紹了MYSQL替換時(shí)間(年月日)字段,時(shí)分秒不變的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-07-07
  • Mysql my.ini 配置文件詳解

    Mysql my.ini 配置文件詳解

    Mysql my.ini 配置文件詳解
    2009-06-06
  • MySQL 的覆蓋索引與回表的使用方法

    MySQL 的覆蓋索引與回表的使用方法

    這篇文章主要介紹了MySQL 的覆蓋索引與回表的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Mysql中的join操作

    Mysql中的join操作

    這篇文章主要介紹了Mysql join操作的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • mysql使用字符串字段判斷是否包含某個(gè)字符串的方法

    mysql使用字符串字段判斷是否包含某個(gè)字符串的方法

    在MySQL中,判斷字符串字段是否包含特定子字符串,可使用LIKE操作符、INSTR()函數(shù)、LOCATE()函數(shù)、POSITION()函數(shù)、FIND_IN_SET()函數(shù)以及正則表達(dá)式REGEXP或RLIKE,每種方法適用于不同的場景和需求,LIKE和INSTR()通常用于簡單包含判斷
    2024-09-09
  • MYSQL悲觀鎖及樂觀鎖方式

    MYSQL悲觀鎖及樂觀鎖方式

    MySQL支持悲觀鎖和樂觀鎖兩種機(jī)制,悲觀鎖在執(zhí)行讀寫操作之前先獲取鎖,適用于高并發(fā)場景,但可能引發(fā)性能瓶頸和死鎖問題,樂觀鎖則通過版本號或時(shí)間戳等機(jī)制判斷數(shù)據(jù)是否被修改,適用于并發(fā)沖突較少的場景
    2024-12-12
  • MySQL數(shù)據(jù)庫入門之多實(shí)例配置方法詳解

    MySQL數(shù)據(jù)庫入門之多實(shí)例配置方法詳解

    這篇文章主要介紹了MySQL數(shù)據(jù)庫入門之多實(shí)例配置方法,結(jié)合實(shí)例形式分析了MySQL數(shù)據(jù)庫多實(shí)例配置相關(guān)概念、原理、操作方法與注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • Mysql讀寫分離過期常用解決方案

    Mysql讀寫分離過期常用解決方案

    這篇文章主要介紹了Mysql讀寫分離過期常用解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 圖文詳解MySQL中的主鍵與事務(wù)

    圖文詳解MySQL中的主鍵與事務(wù)

    這篇文章主要給大家介紹了關(guān)于MySQL中主鍵與事務(wù)的相關(guān)資料,主鍵與事務(wù)是我們使用mysql中經(jīng)常遇到的,文中通過圖文以及實(shí)例代碼介紹的很詳細(xì),需要的朋友可以參考下
    2021-05-05

最新評論

晋中市| 嘉黎县| 汝州市| 建阳市| 合川市| 江华| 吴江市| 诸暨市| 闸北区| 五大连池市| 依兰县| 万载县| 彰武县| 镇原县| 平泉县| 吴堡县| 黄平县| 那坡县| 怀安县| 砀山县| 酉阳| 衡山县| 龙口市| 勃利县| 昭觉县| 宜丰县| 融水| 洪湖市| 进贤县| 三穗县| 运城市| 濮阳县| 长岭县| 米脂县| 平谷区| 阳谷县| 罗城| 平陆县| 民县| 襄樊市| 天全县|