SQL 命令的完整指南和詳細範例:從基礎到進階查詢

最後更新: 16/06/2025
作者: 艾薩克
  • 發現 命令 查詢、管理和安全的基本 SQL 和實際範例 數據庫.
  • 了解如何使用 SELECT、WHERE、JOIN、GROUP BY、聚合函數和視圖,以及語法和實際用例。
  • Conoce 技巧 進階、權限管理和常見問題解答,以在專業環境中掌握 SQL。

資料庫中的 SQL 命令

結構化查詢語言 SQL 就是這樣一種工具,一旦掌握,它就會成為您與任何關係資料庫互動的最佳助手。如果您想知道如何輕鬆有效地存取、修改、刪除或分析大量數據,那麼 SQL 就是您一直在尋找的答案。 學習正確使用 SQL 指令 標誌著從普通用戶到數據管理和分析的真正專家之間的區別。

在本文中,我為您帶來 主要 SQL 指令的綜合彙編 本書配有清晰的解釋和實例,涵蓋從基礎知識到進階查詢的所有內容。我也會向您展示一些在淺顯易懂的文章中經常被忽略的技巧和細節,以便您能夠充分利用資料庫,無論您是剛入門還是希望提升知識水平。準備好深入 SQL 世界,探索這門語言如何改變您處理資訊的方式。

什麼是 SQL 以及為什麼它仍然很重要?

的SQL,即結構化查詢語言,是一種查詢語言 程序設計 專為管理和操作關係型資料庫而設計。儘管它是在 70 世紀 XNUMX 年代開發的,但它仍然是與 MySQL、PostgreSQL、SQL Server、MariaDB 和 Oracle Database 等資料庫通訊的標準解決方案。

它長盛不衰的原因很簡單: SQL 支援從查詢資料等基本任務到連接複雜資料表、建立結構、批次更新記錄或定義權限等進階操作的所有操作。。此外,它的語法足夠簡單,任何人都可以快速熟悉,但功能強大,足以解決複雜的業務問題。

從開發人員、分析師、資料庫管理員到資料科學家等各領域的專業人士都依賴 SQL 來處理、清理和分析其專案和組織的關鍵資料。

SQL 指令類別:DQL、DML、DDL 和 DCL

在我們開始討論這些例子之前,值得記住的是 SQL 命令可以根據其功能分為不同的類別:

  • DQL(資料查詢語言): 這些是查詢資料的句子,例如 選擇.
  • DML(資料操作語言): 他們使用以下命令來操縱記錄 INSERT, 更新 y DELETE.
  • DDL(資料定義語言): 它們管理資料庫的結構,例如, 創建, 改變, 下降 y 截短.
  • DCL(資料控制語言): 他們使用以下方式控制權限和訪問 GRANT y 撤消.

每種類型的命令在日常資料庫管理中都發揮著至關重要的作用。了解在各種情況下應該使用哪種命令,以避免資料管理中的錯誤甚至災難,這一點至關重要。

主要 SQL 命令:基礎知識和實際範例

掌握基本的 SQL 指令幾乎可以開啟任何資料管理或分析任務的大門。下面,我將講解一些最相關的命令、它們的工作原理,並提供一些範例來幫助你學習它們。

SELECT:查詢之王

命令 選擇 它是 SQL 中大多數操作的基礎。它允許您檢索儲存在一個或多個表中的資料。

一般語法:

從表名中選擇列 1、列 2、...;

要取得表格中的所有列,只需使用星號:

從員工中選擇*;

如果要過濾特定數據,可以新增條件:

SELECT 姓名,年齡 FROM 員工 WHERE 年齡 > 30;

謝謝 選擇 您可以檢索從單一值到複雜資料集的所有內容、套用聚合函數、計算衍生資料列以及為報表或視覺化準備資料。

  Access 中格式錯誤和資料庫損壞故障排除完整指南

WHERE:精確篩選結果

該條款 WHERE 它允許您指定條件,以僅選擇符合特定條件的行。它是任何查詢的基本過濾器。

基本語法:

從產品中選擇*,其中價格<100;

您可以使用邏輯運算子來組合條件,例如 , OR y 以及比較運算符 (=、<、>、<=、>=、<>).

例如招募30歲以下的銷售人員:

SELECT * FROM 員工 WHERE 部門 = '銷售' AND 年齡 < 30;

SQL 查詢範例

插入:新增記錄

INSERT 您可以向表格中新增一行。這對於向資料庫提供新資訊至關重要。

一般語法:

插入產品(名稱,價格)值('鍵盤',29.99);

如果要在單一查詢中新增多個記錄,也可以這樣做:

插入產品(名稱,價格)值('滑鼠',15.50),('顯示器',120.00);

請記住,如果省略列表,則必須為表中的每個欄位提供一個值,並遵守它們的順序。

更新:修改現有數據

命令 更新 允許您變更符合特定條件的記錄中一個或多個欄位的值。這對於更正錯誤或更新資訊非常有用。

句法:

更新員工設定薪資=薪資*1.05其中部門='行銷';

在這個例子中,所有行銷部員工的薪資都會增加5%。這一點至關重要。 無論何時更新,都使用 WHERE,除非您確實想修改整個表。

DELETE:刪除數據

若要刪除記錄,請使用 DELETE 條件旁邊,從而避免意外刪除表中的所有資料。

例如:

從產品中刪除其中 id_producto = 10;

如果省略 WHERE 子句,表格中的所有行都會被刪除。注意!

ORDER BY:組織結果

該條款 訂購 用於根據一個或多個列對查詢結果進行排序。預設情況下,順序將按升序排列,但您可以指定 ASC o DESC 根據您的需要。

SELECT * FROM 員工 ORDER BY 薪資 DESC;

您可以組合多個列進行排序:

SELECT * FROM 產品 ORDER BY 類別 ASC,價格 DESC;

GROUP BY 與聚合函數:SUM、AVG、MIN、MAX、COUNT

通過...分組 允許您根據一個或多個列對結果進行分組,這與以下函數結合使用非常有用: 和() (添加), AVG() (平均的), MIN (最低限度), 關於 MAX (最大)和 COUNT (計數)。

例如,要知道每個類別中有多少種產品:

SELECT 類別,COUNT(*) FROM 產品 GROUP BY 類別;

或計算每位顧客的總帳單:

SELECT customer_id, SUM(金額) FROM sales GROUP BY customer_id;

您可以使用該子句過濾結果群組 HAVING:

SELECT 部門,AVG(薪水) FROM 員工 GROUP BY 部門 HAVING AVG(薪水)> 2000;

LIMIT 和 OFFSET:限制結果數

當你的表有數千筆記錄時, LIMIT 僅顯示部分結果至關重要,以提高效能和可讀性。

從產品中選擇*限制10;

OFFSET 您可以跳過多行,這對於分頁很有用:

從產品中選擇*限制10偏移20;

BETWEEN、IN 和 LIKE:高級 WHERE 條件

這些關鍵字擴展了過濾的可能性:

  • 之間: 選擇一定範圍內的值。
    SELECT * FROM 員工 其中薪資介於 1000 和 3000 之間;
  • 中: 搜尋多個值。
    SELECT * FROM 產品 WHERE 類別 IN ('計算機', '電子產品');
  • 喜歡: 在文字中尋找模式。
    SELECT * FROM 客戶其中名稱 LIKE 'A%';

也可以使用通配符,例如 % (任意數量的字元)和 _ (單一字元)使用 LIKE 進一步自訂搜尋。

JOIN:跨表交叉訊息

SQL 的強大功能之一是能夠使用下列方法組合來自不同表的數據 註冊。最常見的是:

  • 內部聯接: 傳回兩個表中符合的行。
  • 左連接: 傳回左表中的所有行以及右表中的任何符合項目(如果沒有符合項,則以 NULL 填入)。
  • 正確加入: 傳回右表中的所有行以及左表中的所有符合行。
  • 完全外連接: 傳回兩個表中的所有行(沒有符合的地方用 NULL 填入)。
  修復:“驅動器不是有效的備份位置”

內連接範例:

從訂單中選擇 orders.id、customers.name INNER JOIN customer ON orders.customer_id = customer.id;

左連接:

從員工中選擇員工.姓名、銷售額.金額 左連線銷售額 ON 員工.id = 銷售額.員工_id;

ALTER、CREATE 與 DROP:修改資料庫結構

除了操作資料之外,SQL 還允許您定義和修改表格和其他資料庫物件的結構:

  • 創建: 建立新物件(表格、視圖、索引、使用者…)。
    建立表格產品(id INT PRIMARY KEY,名稱 VARCHAR(100),價格 DECIMAL(8,2));
  • 改變: 修改現有物件的結構。
    ALTER TABLE 產品 ADD 描述 VARCHAR(255);
    ALTER TABLE 產品 ALTER COLUMN 價格 SET NOT NULL;
  • 降低: 從資料庫中刪除物件。
    刪除表產品;
    刪除使用者 example_user CASCADE;

檢視(VIEW):可重複使用的查詢和進階篩選

意見 它們是表示已儲存查詢的虛擬物件。它們的功能類似於表,但不儲存資料;它們僅指向其他表中的資訊。它們有助於簡化複雜查詢、集中篩選器以及方便存取特定資訊。

建立視圖 active_employees AS SELECT * FROM 員工 WHERE active = 1;

您可以像查詢表一樣查詢檢視:

從活躍員工中選擇*;

視圖非常適合管理權限並僅向特定使用者顯示相關資料。

列上的聚合函數和計算

SQL 允許您使用 聚合函數 和算術運算子對資料進行計算:

  • 和(): 某一列的總和。
  • 平均值(): 算術平均值。
  • MIN() 和 MAX(): 最小值和最大值。
  • 數數(): 記錄數。

例如,如果您想知道每個部門的員工人數:

SELECT 部門,COUNT(*) FROM 員工 GROUP BY 部門;

或按部門劃分的最高薪資:

SELECT 部門,MAX(薪水)FROM 員工GROUP BY 部門;

您甚至可以直接在查詢中建立計算列:

從員工中選擇姓名、薪水*0.95 作為淨薪水;

對錶和列使用別名 (AS)

在查詢中,您可以使用命令為列和表指派臨時名稱 AS這使得讀取結果和編寫複雜查詢變得更加容易。

例如:

從員工中選擇 e.name 作為員工,d.name 作為部門從員工作為 e 加入部門作為 d ON e.department_id = d.id;

這樣,結果將顯示具有自訂名稱的列。在執行 JOIN 或列名稱較長或難以描述的場景下,使用別名尤其有用。

進階 SQL 查詢範例:解決實際案例

要熟練 SQL,你需要面對真正的挑戰。以下是一些建議: 擴充範例 從實際案例中提取,有助於鞏固知識。

查詢某部門的所有員工及其總銷售額

SELECT e.id, e.name, SUM(v.amount) AS total_sales FROM employee e JOIN sales v ON e.id = v.employee_id WHERE e.department = 'Sales' GROUP BY e.id, e.name;

此範例顯示如何連接表格、套用聚合函數和篩選結果。

以部門計算平均工資和最高工資

SELECT 部門,AVG(薪水)AS 平均薪水,MAX(薪水)AS 最高薪水 FROM 員工 GROUP BY 部門;

這樣,您就可以分析薪酬分配並找出不平等或激勵更大的領域。

使用 CASE 按價格範圍統計產品數量

SELECT CASE WHEN price < 50 THEN '便宜' WHEN price < 150 THEN '中' ELSE '昂貴' END AS price_range, COUNT(*) AS amount FROM products GROUP BY price_range;

用例 允許您在查詢中建立自訂類別。

尋找重複記錄的範例查詢

從客戶中選擇名稱、COUNT(*) 按名稱分組,其中 COUNT(*) > 1;

這有助於您保持資料庫清潔且無冗餘資料。

決定第 n 高工資(子查詢)

從員工中選擇 TOP 1 薪資(從員工中選擇不同的 TOP N 薪資按薪資降序排列)按薪資升序排列;

非常適合回答技術面試中的問題或製作高級報告。

  如何在 Windows 10 中找到大文件

自動刪除舊記錄

刪除自 日誌 其中日期<NOW()-間隔6個月;

非常適合需要控製表大小的生產資料庫。

SQL 中的實用技巧與竅門

掌握 SQL 不僅僅意味著知道如何編寫基本查詢。以下是一些 充分利用語言的技巧:

  • 在 UPDATE 和 DELETE 中始終使用 WHERE 以防止意外的大量修改或刪除。
  • 在最常被存取的欄位上建立索引 加快搜尋和加入的速度。
  • 優先使用顯式 JOIN 而不是 WHERE 來連接表: 便於維護和可讀性。
  • 使用聚合函數和 GROUP BY 無需依賴外部電子表格即可自動報告和分析。
  • 在測試資料庫上進行測試 在做出重大改變之前。
  • 使用 GRANT 和 REVOKE 控制權限 以確保您的資料安全。
  • 欣賞美景(VIEW) 簡化對複雜資訊的存取並集中業務邏輯。
  • 不要過度使用 SELECT *,因為您可能會引入超出必要範圍的資料並降低系統速度。
  • 對複雜查詢進行評論 以方便日後的維護。

面試和實際案例中SQL指令的常見問題

掌握 SQL 是應對技術面試和解決日常問題的關鍵。以下是一些典型的問題和答案,可以幫助你做好準備:

  • 什麼是 INNER JOIN?
    這是 SQL 中的預設連接;它會傳回與兩個表相符的行。例如:

    從 A 內部連接 B 中選擇 *,A.id = B.a_id;
  • LEFT JOIN 用於什麼?
    傳回左表的所有行以及右表的所有符合項目。例如:

    SELECT * FROM 員工 LEFT JOIN 銷售 ON 員工.id = 銷售.員工_id;
  • DROP 和 DELETE 有什麼不同?
    DELETE 從表中刪除行,而 下降 從資料庫中完全刪除物件(表格、視圖、使用者)。
  • ALTER 之後可以回滾嗎?
    不可以,因為 ALTER 是 DDL 語句,很多系統會自動提交。所以在使用前務必確認。
  • 什麼是偽列?
    它們是系統產生的虛擬資料列,例如 Oracle 中的 ROWID、USER 或 CURRVAL。
  • 如何建立視圖?
    建立視圖 view_employees AS SELECT 姓名,薪水 FROM 員工;
  • 如何授予權限?
    授予 ana, rita 對庫存的選擇權限;
  • 如何刪除用戶及其資料?
    DROP USER 使用者 CASCADE;

SQL 中的正規表示式和特殊運算符

SQL 中一個鮮為人知但非常強大的功能是使用正規表示式和進階運算子搜尋模式。例如:

  • % : 表示任意長度的任意字串(用於 LIKE)。
  • _ : 代表單一字元(在 LIKE 中也是如此)。
  • | : 交替,尋找這個或那個東西。
  • * : 重複一個字元零次或多次。

高階管理:角色、權限和安全

管理資料庫不僅限於查詢和修改資料。使用以下命令來控制誰可以存取、修改或刪除資訊至關重要: GRANT, 撤消或高階管理 ROLES:

創建角色經理;
授予經理對員工的 SELECT、INSERT、UPDATE 權限;
授予經理胡安,瑪麗亞;

這樣,您就可以集中管理安全性,並在大型環境中簡化權限管理。如果您想深入了解權限管理,請查看我們的文章 自動化和管理.

Windows 中的 .ETL 檔案是什麼?
相關文章:
Windows 中的 .ETL 檔案:它們是什麼、它們的用途以及如何分析它們