MySQL復雜SQL(多表聯查/子查詢)詳細講解

🤟致敬讀者

  • 🟩感謝閱讀🟦笑口常開🟪生日快樂?早點睡覺

📘博主相關

  • 🟧博主信息🟨博客首頁🟫專欄推薦🟥活動信息

文章目錄

  • MySQL復雜SQL(多表聯查/子查詢)詳細講解
    • 第一部分:多表聯查 (JOIN Operations)
      • 1. 連接的類型 (JOIN Types)
        • a. INNER JOIN (內連接 / 等值連接)
        • b. LEFT [OUTER] JOIN (左外連接)
        • c. RIGHT [OUTER] JOIN (右外連接)
        • d. FULL [OUTER] JOIN (全外連接)
        • e. CROSS JOIN (交叉連接 / 笛卡爾積)
      • 2. 多表連接 (Joining More Than Two Tables)
      • 3. 自連接 (Self Join)
      • 4. 自然連接 (NATURAL JOIN) 和 USING 子句
    • 第二部分:子查詢 (Subqueries)
      • 1. 子查詢的位置 (Where Subqueries Can Be Used)
      • 2. 子查詢的主要類型
        • a. 標量子查詢 (Scalar Subquery)
        • b. 列子查詢 (Column Subquery)
        • c. 行子查詢 (Row Subquery)
        • d. 表子查詢 / 派生表 (Table Subquery / Derived Table)
      • 3. 相關子查詢 vs. 非相關子查詢
      • 4. EXISTS 和 NOT EXISTS
    • 關鍵注意事項與最佳實踐
    • 總結


📃文章前言

  • 🔷文章均為學習工作中整理的筆記。
  • 🔶如有錯誤請指正,共同學習進步。

MySQL復雜SQL(多表聯查/子查詢)詳細講解

在這里插入圖片描述

MySQL 中復雜 SQL 的核心部分:多表聯查子查詢。這是數據庫操作中處理關聯數據的強大工具。

核心目標: 從多個相互關聯的表中組合和提取所需的數據。

第一部分:多表聯查 (JOIN Operations)

當你的數據模型設計良好(遵循規范化原則)時,數據會分散在多個表中,通過主鍵-外鍵關系連接。JOIN 操作就是用來基于這些關系將多個表中的行組合起來。

1. 連接的類型 (JOIN Types)

a. INNER JOIN (內連接 / 等值連接)
  • 作用: 返回兩個表中連接字段值相等的所有行組合。如果某行在其中一個表中沒有匹配的行,則不會出現在結果中。
  • 語法:
    SELECT 列名列表
    FROM1
    [INNER] JOIN2 ON1.關聯字段 =2.關聯字段
    [WHERE 條件];
    -- INNER 關鍵字通常可省略
    
  • 示例: 查詢所有有訂單的客戶信息(假設 customers 表有 customer_idorders 表有 customer_id 外鍵)
    SELECT c.customer_id, c.name, o.order_id, o.order_date
    FROM customers c
    INNER JOIN orders o ON c.customer_id = o.customer_id;
    -- 結果只包含那些在customers表中有記錄且在orders表中至少有一個訂單的客戶。
    
  • 圖示: 兩個集合的交集部分。
b. LEFT [OUTER] JOIN (左外連接)
  • 作用: 返回左表 (表1) 的所有行,即使在右表 (表2) 中沒有匹配的行。對于左表中存在而右表中沒有匹配的行,右表相關的列將顯示為 NULL
  • 語法:
    SELECT 列名列表
    FROM1
    LEFT [OUTER] JOIN2 ON1.關聯字段 =2.關聯字段
    [WHERE 條件];
    -- OUTER 關鍵字通常可省略
    
  • 示例: 查詢所有客戶及其訂單(包括沒有下過單的客戶)
    SELECT c.customer_id, c.name, o.order_id, o.order_date
    FROM customers c
    LEFT JOIN orders o ON c.customer_id = o.customer_id;
    -- 結果包含所有客戶。對于沒有訂單的客戶,o.order_id 和 o.order_date 會是 NULL。
    
  • 圖示: 整個左集合 + 與右集合的交集部分。右集合獨有的部分被舍棄。
c. RIGHT [OUTER] JOIN (右外連接)
  • 作用:LEFT JOIN 相反。返回右表 (表2) 的所有行,即使在左表 (表1) 中沒有匹配的行。對于右表中存在而左表中沒有匹配的行,左表相關的列將顯示為 NULL
  • 語法:
    SELECT 列名列表
    FROM1
    RIGHT [OUTER] JOIN2 ON1.關聯字段 =2.關聯字段
    [WHERE 條件];
    -- OUTER 關鍵字通常可省略
    
  • 示例: 查詢所有訂單及其對應的客戶信息(包括那些可能關聯到無效客戶的訂單 - 這種情況在良好設計的數據模型中較少見,但語法支持)
    SELECT c.customer_id, c.name, o.order_id, o.order_date
    FROM customers c
    RIGHT JOIN orders o ON c.customer_id = o.customer_id;
    -- 結果包含所有訂單。如果某個訂單的 customer_id 在 customers 表中找不到,則 c.customer_id 和 c.name 會是 NULL。
    
  • 圖示: 整個右集合 + 與左集合的交集部分。左集合獨有的部分被舍棄。
  • 注意: RIGHT JOIN 在實際應用中不如 LEFT JOIN 常見,因為通常可以通過調整表順序使用 LEFT JOIN 達到相同目的。
d. FULL [OUTER] JOIN (全外連接)
  • 作用: 返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表相關的列將顯示為 NULL。如果兩個表中有匹配的行,則進行連接。
  • 語法 (MySQL 不支持直接的 FULL OUTER JOIN,需用 UNION 模擬):
    SELECT 列名列表
    FROM1
    LEFT JOIN2 ON1.關聯字段 =2.關聯字段
    UNION [ALL] -- 通常用 UNION 去重,如果確定不會有重復或需要保留重復則用 UNION ALL
    SELECT 列名列表
    FROM1
    RIGHT JOIN2 ON1.關聯字段 =2.關聯字段
    WHERE1.關聯字段 IS NULL; -- 排除掉左連接中已包含的匹配行
    
  • 示例: 查詢所有客戶和所有訂單(包括沒有訂單的客戶和沒有對應客戶的訂單)
    SELECT c.customer_id, c.name, o.order_id, o.order_date
    FROM customers c
    LEFT JOIN orders o ON c.customer_id = o.customer_id
    UNION
    SELECT c.customer_id, c.name, o.order_id, o.order_date
    FROM customers c
    RIGHT JOIN orders o ON c.customer_id = o.customer_id
    WHERE c.customer_id IS NULL; -- 只取右連接中左表為NULL的部分(即orders有而customers沒有的行)
    
  • 圖示: 左集合 + 右集合的并集。
e. CROSS JOIN (交叉連接 / 笛卡爾積)
  • 作用: 返回兩個表中所有可能的行組合。結果集的行數是 表1行數 * 表2行數通常不是你想要的結果,除非明確需要所有組合。
  • 語法:
    SELECT 列名列表
    FROM1
    CROSS JOIN2;
    -- 或者使用隱式連接(不推薦):
    SELECT 列名列表
    FROM1,2;
    
  • 示例: 生成所有產品和所有尺寸的組合
    SELECT p.product_name, s.size_name
    FROM products p
    CROSS JOIN sizes s;
    

2. 多表連接 (Joining More Than Two Tables)

  • 可以連續使用多個 JOIN 子句連接多個表。
  • 語法:
    SELECT ...
    FROM1
    JOIN2 ON 條件
    JOIN3 ON 條件 -- 條件可以是表2和表3的關系,或者表1和表3的關系(較少見)
    ...
    [WHERE ...];
    
  • 示例: 查詢訂單的詳細信息(客戶名、訂單日期、產品名、數量)
    SELECT c.name, o.order_date, p.product_name, od.quantity
    FROM orders o
    JOIN customers c ON o.customer_id = c.customer_id
    JOIN order_details od ON o.order_id = od.order_id
    JOIN products p ON od.product_id = p.product_id;
    

3. 自連接 (Self Join)

  • 作用: 將表與其自身連接。常用于表示層次結構(如員工-經理關系、類別-父類別)。
  • 技巧: 需要使用表別名 (Alias) 來區分同一個表的兩個“實例”。
  • 示例: 查詢員工及其經理的名字
    SELECT e1.employee_name AS Employee, e2.employee_name AS Manager
    FROM employees e1
    LEFT JOIN employees e2 ON e1.manager_id = e2.employee_id;
    -- 使用 LEFT JOIN 是因為頂級經理沒有上級(manager_id 為 NULL)
    

4. 自然連接 (NATURAL JOIN) 和 USING 子句

  • NATURAL JOIN: 自動連接所有同名列。強烈不推薦使用! 因為它依賴于列名匹配,不明確且容易出錯。
    SELECT ... FROM table1 NATURAL JOIN table2; -- 避免使用
    
  • USING 子句: 當連接的兩個表具有完全相同名稱的關聯字段時,可以用 USING 簡化 ON
    SELECT c.customer_id, c.name, o.order_id, o.order_date
    FROM customers c
    JOIN orders o USING (customer_id); -- 等價于 ON c.customer_id = o.customer_id
    

第二部分:子查詢 (Subqueries)

子查詢是指嵌套在另一個 SQL 查詢(主查詢)內部的查詢。子查詢的結果被外部查詢使用。

1. 子查詢的位置 (Where Subqueries Can Be Used)

  • SELECT 子句(標量子查詢)
  • FROM 子句(派生表/內聯視圖)
  • WHERE 子句(最常用)
  • HAVING 子句
  • INSERT / UPDATE / DELETE 語句的 VALUESSET 部分

2. 子查詢的主要類型

a. 標量子查詢 (Scalar Subquery)
  • 特點: 返回單個值(一行一列)。
  • 用途: 可以出現在任何期望單個值的地方(如 SELECT 列表、WHERE 條件中的比較運算符右側)。
  • 示例: 查詢價格高于平均價格的產品
    SELECT product_name, price
    FROM products
    WHERE price > (SELECT AVG(price) FROM products);
    
  • 示例:SELECT 列表中使用(為每行計算一個相關值)
    SELECT order_id, order_date,(SELECT COUNT(*) FROM order_details od WHERE od.order_id = o.order_id) AS item_count
    FROM orders o;
    
b. 列子查詢 (Column Subquery)
  • 特點: 返回單列多行
  • 用途: 常與 IN, ANY/SOME, ALL 運算符一起用在 WHEREHAVING 子句中。
  • 示例 (IN): 查詢至少訂購過一次’Coffee’產品的客戶
    SELECT customer_id, name
    FROM customers
    WHERE customer_id IN (SELECT DISTINCT o.customer_idFROM orders oJOIN order_details od ON o.order_id = od.order_idJOIN products p ON od.product_id = p.product_idWHERE p.product_name = 'Coffee'
    );
    
  • 示例 (ANY/SOME): 查詢價格大于任何電子產品價格的非電子產品 (> ANY 等價于 > (SELECT MIN(price) FROM ... WHERE category='Electronics'))
    SELECT product_name, price
    FROM products
    WHERE category <> 'Electronics'AND price > ANY (SELECT priceFROM productsWHERE category = 'Electronics');
    
  • 示例 (ALL): 查詢價格大于所有電子產品價格的非電子產品 (> ALL 等價于 > (SELECT MAX(price) FROM ... WHERE category='Electronics'))
    SELECT product_name, price
    FROM products
    WHERE category <> 'Electronics'AND price > ALL (SELECT priceFROM productsWHERE category = 'Electronics');
    
c. 行子查詢 (Row Subquery)
  • 特點: 返回單行多列
  • 用途: 與行比較運算符一起使用(較少見)。
  • 示例: 查找與特定員工(ID=123)在同一個部門和同一個職位級別的員工
    SELECT employee_id, name, department, job_level
    FROM employees
    WHERE (department, job_level) = (SELECT department, job_levelFROM employeesWHERE employee_id = 123
    )
    AND employee_id <> 123; -- 排除自己
    
d. 表子查詢 / 派生表 (Table Subquery / Derived Table)
  • 特點: 返回一個結果集(多行多列)
  • 用途: 必須出現在 FROM 子句中,并且必須有別名。
  • 作用: 簡化復雜查詢,創建臨時中間結果集。
  • 示例: 計算每個類別的平均價格,并找出高于其類別平均價格的產品
    SELECT p.product_id, p.product_name, p.category, p.price, cat_avg.avg_price
    FROM products p
    JOIN (SELECT category, AVG(price) AS avg_priceFROM productsGROUP BY category
    ) cat_avg ON p.category = cat_avg.category
    WHERE p.price > cat_avg.avg_price;
    

3. 相關子查詢 vs. 非相關子查詢

  • 非相關子查詢 (Uncorrelated Subquery):
    • 子查詢可以獨立運行,不依賴于外部查詢。
    • 執行過程:先執行子查詢得到結果集,然后外部查詢使用這個結果集。
    • 上面大部分示例都是非相關的。
  • 相關子查詢 (Correlated Subquery):
    • 子查詢不能獨立運行,它引用了外部查詢中的列。
    • 執行過程:外部查詢取出一行,傳遞給子查詢;子查詢基于外部行中的值執行;外部查詢根據子查詢返回的結果判斷是否保留該行;重復此過程處理外部查詢的每一行。
    • 效率提示: 相關子查詢通常比非相關子查詢或 JOIN 慢,因為它需要對外部查詢的每一行都執行一次子查詢。優化時需謹慎。
    • 示例: 查詢那些訂單總額超過 1000 的客戶 (在 WHERE 中使用相關子查詢)
      SELECT c.customer_id, c.name
      FROM customers c
      WHERE EXISTS (SELECT 1FROM orders oWHERE o.customer_id = c.customer_id -- 關聯條件GROUP BY o.customer_idHAVING SUM(o.total_amount) > 1000
      );
      -- 或者更高效的方式可能是使用 JOIN + GROUP BY + HAVING
      
    • 示例:SELECT 列表中使用相關子查詢 (如之前的 item_count 例子)

4. EXISTS 和 NOT EXISTS

  • 專門用于相關子查詢(但也可以用于非相關)。
  • EXISTS (subquery): 如果子查詢返回至少一行,則結果為 TRUE
  • NOT EXISTS (subquery): 如果子查詢返回零行,則結果為 TRUE
  • 非常高效,因為只要子查詢找到一行匹配,EXISTS 就立即返回 TRUE,不需要處理所有結果。
  • 示例 (EXISTS): 查詢至少下過一個訂單的客戶 (等價于前面的 IN 示例,但可能更高效)
    SELECT customer_id, name
    FROM customers c
    WHERE EXISTS (SELECT 1FROM orders oWHERE o.customer_id = c.customer_id -- 關聯條件
    );
    
  • 示例 (NOT EXISTS): 查詢從未下過訂單的客戶
    SELECT customer_id, name
    FROM customers c
    WHERE NOT EXISTS (SELECT 1FROM orders oWHERE o.customer_id = c.customer_id -- 關聯條件
    );
    

關鍵注意事項與最佳實踐

  1. 明確連接條件 (ON Clause): 總是顯式地寫出連接條件 (ONUSING)。避免隱式連接(逗號分隔表名)和 NATURAL JOIN,它們容易出錯且不清晰。
  2. 表別名 (Aliases): 在多表查詢和子查詢中,使用簡短、有意義的表別名 (FROM table AS aliasFROM table alias)。這能極大提高可讀性和避免列名歧義。
  3. 性能考慮:
    • 索引是關鍵! 確保連接字段 (ON 子句中的列) 和 WHERE 子句中頻繁過濾的列上有索引。
    • 理解 INNER JOIN 通常比 OUTER JOIN 快。
    • 相關子查詢可能導致性能問題(Nested Loops)。如果可能,嘗試將其重寫為 JOIN
    • 大型 IN 子查詢可能效率低下,考慮用 JOINEXISTS 替代。
    • 派生表(FROM 中的子查詢)可能會阻止某些優化。有時可以用 WITH (Common Table Expression - CTE) 在 MySQL 8.0+ 中更清晰地表達。
  4. NULL 值處理: 在連接條件 (ON) 或 WHERE 子句中使用涉及可能為 NULL 的列進行比較時(如 col1 = col2),如果 col1col2NULL,該行通常不會匹配(因為 NULL = NULLUNKNOWN/NULL)。如果需要匹配 NULL,需使用 IS NULL 顯式處理。
  5. 可讀性和維護性:
    • 合理縮進和格式化復雜的 SQL。
    • 分解非常復雜的查詢。使用 CTE (WITH 子句,MySQL 8.0+) 或臨時視圖(如果支持)將查詢步驟模塊化。
    • 注釋解釋復雜的邏輯。
  6. 測試: 逐步構建復雜查詢。先從一個簡單的部分開始,驗證結果,然后逐步添加 JOIN 或子查詢。使用 LIMIT 測試大數據集查詢的性能。
  7. 選擇 JOIN 還是子查詢? 沒有絕對答案。通常:
    • 需要組合多個表的數據顯示時,JOIN 更自然。
    • 用于過濾或計算聚合值的條件檢查時,子查詢(尤其是 EXISTS/NOT EXISTS)可能更直觀或更高效。
    • 分析執行計劃 (EXPLAIN) 是確定哪種方式性能更好的最終手段。

總結

掌握多表聯查 (INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN) 和子查詢(標量、列、行、表子查詢、相關/非相關、EXISTS/NOT EXISTS)是進行復雜數據庫查詢的基礎。理解它們的工作原理、適用場景以及性能影響至關重要。通過實踐、關注索引、編寫清晰的 SQL 并利用 EXPLAIN 分析,你將能夠高效地從關聯的數據庫表中提取所需的信息。記住,清晰性和性能往往是相輔相成的。


📜文末寄語

  • 🟠關注我,獲取更多內容。
  • 🟡技術動態、實戰教程、問題解決方案等內容持續更新中。
  • 🟢《全棧知識庫》技術交流和分享社區,集結全棧各領域開發者,期待你的加入。
  • 🔵?加入開發者的《專屬社群》,分享交流,技術之路不再孤獨,一起變強。
  • 🟣點擊下方名片獲取更多內容🍭🍭🍭👇

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908497.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908497.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908497.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring中循環依賴問題的解決機制總結

一、解決機制 1. 什么是循環依賴 循環依賴是指兩個或多個Bean之間相互依賴對方&#xff0c;形成一個閉環的依賴關系。最常見的情況是當Bean A依賴Bean B&#xff0c;而Bean B又依賴Bean A時&#xff0c;就形成了循環依賴。在Spring容器初始化過程中&#xff0c;如果不加以特殊…

集運維_安裝linux,麒麟等系統_步驟

u盤工具選擇Ventoy,Rufus 在選擇Ventoy和Rufus這兩款U盤啟動盤制作工具時,需根據具體需求權衡其優缺點: ?核心差異? ?多系統支持?: ?Ventoy?:支持將多個ISO、WIM、IMG等類型的鏡像文件直接復制到U盤,實現?一盤多用?(例如同時存放Windows、Linux等鏡像),無需…

第4章:Cypher查詢語言基礎

Cypher是Neo4j的聲明式圖查詢語言&#xff0c;專為處理圖數據而設計。它允許用戶以直觀、高效的方式查詢和修改圖數據庫中的數據。本章將介紹Cypher的基本概念和語法&#xff0c;幫助讀者掌握使用Cypher進行基礎圖數據操作的能力。 4.1 Cypher語言概述 Cypher是Neo4j的主要查…

上位機知識篇---Flask框架實現Web服務

本文將簡單介紹Web 服務與前端顯示部分,它們基于Flask 框架和HTML/CSS/JavaScript實現,主要負責將實時視頻流和檢測結果通過網頁展示,并提供交互式狀態監控。以下是詳細技術解析: 一、Flask Web 服務架構 1. 核心路由設計 @app.route(/) def index():"""…

Neovim - 打造一款屬于自己的編輯器(一)

文章目錄 前言&#xff08;勸退&#xff09;neovim 安裝neovim 配置配置文件位置第一個 hello world 代碼拆分 neovim 配置正式配置 neovim基礎配置自定義鍵位Lazy 插件管理器配置tokyonight 插件配置BufferLine 插件配置自動補全括號 / 引號 插件配置 前言&#xff08;勸退&am…

按字典序排列最小的等效字符串

文章目錄 題目思路解題過程Python代碼C代碼復雜度 題目 給出長度相同的兩個字符串s1 和 s2 &#xff0c;還有一個字符串 baseStr 。 其中 s1[i] 和 s2[i] 是一組等價字符。 舉個例子&#xff0c;如果 s1 “abc” 且 s2 “cde”&#xff0c;那么就有 ‘a’ ‘c’, ‘b’ ‘…

Ubuntu2404 下搭建 Zephyr 開發環境

1. 系統要求 操作系統&#xff1a;Ubuntu2404&#xff08;64位&#xff09;磁盤空間&#xff1a;至少 8GB 可用空間&#xff08;Zephyr 及其工具鏈較大&#xff09; 2. 安裝必要工具 Tool Min. Version CMake 3.20.5 Python 3.10 Devicetree compiler 1.4.6 2.1 安裝系…

2025年06月07日Github流行趨勢

項目名稱&#xff1a;netbird 項目地址url&#xff1a;https://github.com/netbirdio/netbird項目語言&#xff1a;Go歷史star數&#xff1a;14824今日star數&#xff1a;320項目維護者&#xff1a;mlsmaycon, braginini, pascal-fischer, lixmal, pappz項目簡介&#xff1a;使…

fast-reid部署

配置設置&#xff1a; 官方庫鏈接&#xff1a; https://github.com/JDAI-CV/fast-reid# git clone https://github.com/JDAI-CV/fast-reid.git 安裝依賴&#xff1a; pip install -r docs/requirements.txt 編譯&#xff1a;切換到fastreid/evaluation/rank_cylib目錄下&a…

clickhouse 和 influxdb 選型

以下是 ClickHouse、InfluxDB 和 HBase 在體系架構、存儲引擎、數據類型、性能及場景的詳細對比分析: ??? ?一、體系架構對比? ?維度??ClickHouse??InfluxDB??HBase??設計目標?大規模OLAP分析,高吞吐復雜查詢 時序數據采集與監控,優化時間線管理高吞吐隨機…

ros創建工作空間配置運行狀態機

ROS 一、創建工作空間目錄 /home/wict/workspace/hudahua/ros/catkin_ws #初始化工作空間&#xff08;僅需一次&#xff09; catkin_init_workspace二&#xff1a;回到根目錄編譯 #創建正確的工作空間結構&#xff08;如果尚未創建&#xff09; mkdir -p ~/workspace/hudahua…

【看到哪里寫到哪里】C的“數組指針”

C里面&#xff0c;數組指針&#xff0c;不是基本類型。顧名思義&#xff0c;數組指針&#xff0c;是指針&#xff0c;是指向數組的指針&#xff1b; 1.它的基本定義樣子是 type (*ptr)[size]; 這個指針&#xff0c;指向的數組的&#xff1b;這里要注意&#xff0c;要定義數組…

深度相機的日常學習

文章目錄 一、深度相機的概念二、深度相機的工作原理三、深度相機的應用領域 一、深度相機的概念 深度相機&#xff08;Depth Camera&#xff09;是一種能夠捕捉場景中物體距離信息的設備&#xff0c;與傳統的 RGB 相機不同&#xff0c;深度相機不僅可以獲取場景的二維圖像信息…

elasticsearch基本操作筆記

1.通過kibana查看elasticsearch版本信息 a.左上角三道橫->Management->Dev Tools b.GET / 執行 c.執行結果 { “name” : “xxxx”, “cluster_name” : “xxxxxxx”, “cluster_uuid” : “vl1UudAoQp-aHWAzyPoMyw”, “version” : { “number” : “7.15.1”, “build…

兩種Https正向代理的實現原理

正向代理 HTTPS 主要有兩種方案&#xff0c;分別是基于證書的解密與再加密方案和基于 HTTP CONNECT 隧道的方案&#xff0c;以下是這兩種方案的具體信息&#xff1a; 一、基于證書的解密與再加密方案 原理 工作原理&#xff1a;代理服務器擁有自己的證書&#xff0c;客戶端需…

服務器健康摩爾斯電碼:深度解讀S0-S5狀態指示燈

當服務器機柜中閃爍起神秘的琥珀色燈光&#xff0c;運維人員的神經瞬間繃緊——這些看似簡單的Sx指示燈&#xff0c;實則是服務器用硬件語言發出的求救信號。掌握這套"摩爾斯電碼"&#xff0c;等于擁有了預判故障的透視眼。 一、狀態指示燈&#xff1a;服務器的生命體…

Java高級 | 【實驗七】Springboot 過濾器和攔截器

隸屬文章&#xff1a;Java高級 | &#xff08;二十二&#xff09;Java常用類庫-CSDN博客 系列文章&#xff1a;Java高級 | 【實驗一】Springboot安裝及測試 |最新-CSDN博客 Java高級 | 【實驗二】Springboot 控制器類相關注解知識-CSDN博客 Java高級 | 【實驗三】Springboot 靜…

【圖片識別改名】如何批量將圖片按圖片上文字重命名?自動批量識別圖片文字并命名,基于圖片文字內容改名,WPF和京東ocr識別的解決方案

應用場景 在日常工作和生活中&#xff0c;我們經常會遇到需要對大量圖片進行重命名的情況。例如&#xff0c;設計師可能需要根據圖片內容為設計素材命名&#xff0c;文檔管理人員可能需要根據掃描文檔中的文字對圖片進行分類命名。傳統的手動重命名方式效率低下且容易出錯&…

防火墻iptables項目實戰

目錄 一、網絡規劃 三、環境準備與檢測 1、firewall &#xff08;1&#xff09;配置防火墻各大網卡ip并禁用firewalld和selinux &#xff08;2&#xff09;打開firewall路由轉發 2、PC1&#xff08;內網&#xff09; &#xff08;1&#xff09;配置ip并禁用firewalld和s…

阿里云域名怎么綁定

阿里云服務器綁定域名全攻略&#xff1a;一步步輕松實現網站“零”障礙上線&#xff01; 域名&#xff0c;您網站在云端的“身份證”&#xff01; 在數字化浪潮中&#xff0c;擁有一個屬于自己的網站或應用&#xff0c;是個人展示、企業運營不可或缺的一環。而云服務器&#x…