mysql -- CRUD

CRUD

MySQL是一個廣泛使用的開源關系數據庫管理系統(RDBMS),它支持通過SQL(Structured Query Language)語言進行數據的管理。在MySQL中,CRUD是一個常見的術語,代表了數據管理的四個基本操作:創建(Create)、讀取(Read)、更新(Update)和刪除(Delete)。下面,我將逐一介紹這些操作及其在MySQL中的具體應用方式。

1. 創建(Create)

創建操作通常指的是向數據庫中添加新數據。在MySQL中,這通常通過INSERT語句來實現。例如,如果你有一個名為students的表,其中包含idnameage三個字段,你可以使用以下語句來插入新的記錄:

INSERT INTO students (id, name, age) VALUES (1, 'Alice', 21);

2. 讀取(Read)

讀取操作是指從數據庫中查詢數據。這在MySQL中通常通過SELECT語句實現。你可以使用不同的條件來過濾你需要的數據。繼續使用上面的students表為例,如果你想查詢所有記錄,可以使用:

SELECT * FROM students;

如果只想查詢特定條件的數據,比如年齡大于20歲的學生:

SELECT * FROM students WHERE age > 20;

3. 更新(Update)

更新操作用于修改數據庫中的現有數據。在MySQL中,這通過UPDATE語句實現。例如,如果你想將名為Alice的學生的年齡改為22,可以使用以下語句:

UPDATE students SET age = 22 WHERE name = 'Alice';

4. 刪除(Delete)

刪除操作用于從數據庫中移除數據。在MySQL中,這通常通過DELETE語句實現。如果你想刪除所有名為Alice的學生記錄,可以使用:

DELETE FROM students WHERE name = 'Alice';

WHERE

在數據庫查詢語言SQL中,WHERE子句是用來指定篩選條件的關鍵組成部分,它決定了哪些記錄應該被包括在查詢結果中。這個概念有時被稱為“條件編譯”,盡管這個術語在其他編程領域有不同的含義(如在C或C++中根據預處理指令編譯代碼)。在SQL中,可以視為根據指定的條件動態“編譯”或構造查詢結果。

基本使用

WHERE子句通常跟在SELECT, UPDATE, DELETE等SQL語句后面,用于限制這些語句作用的數據行。它后面可以跟一個或多個條件,這些條件可以使用邏輯運算符如AND, OR, 和NOT進行組合。

示例

假設有一個名為employees的表,包含id, name, age, 和department字段。以下是一些使用WHERE子句的示例:

選擇特定部門的員工

SELECT * FROM employees WHERE department = 'Sales';

更新特定員工的年齡

UPDATE employees SET age = 30 WHERE id = 101;

刪除某個年齡以下的員工

DELETE FROM employees WHERE age < 22;

復雜條件

WHERE子句可以通過使用邏輯運算符來處理更復雜的條件:

  • 組合條件(使用AND):

    SELECT * FROM employees WHERE age >= 25 AND department = 'HR';
    

  • 多重選擇(使用OR):

    SELECT * FROM employees WHERE department = 'HR' OR department = 'Sales';
    

  • 排除條件(使用NOT):

    SELECT * FROM employees WHERE NOT department = 'Intern';
    

    使用通配符和LIKE

    WHERE子句中,LIKE運算符常被用來搜索模式匹配,尤其是當你不知道確切值時。可以結合通配符使用,如%(代表任意字符序列)和_(代表單個字符):

    SELECT * FROM employees WHERE name LIKE 'Sa%';
    

    這個例子找出所有名字以"Sa"開始的員工。

    BETWEEN、IN 和其他運算符

BETWEEN:用于范圍搜索,包括邊界值。

SELECT * FROM employees WHERE age BETWEEN 25 AND 35;

IN:允許在多個可能的值中選擇。

SELECT * FROM employees WHERE department IN ('HR', 'Sales', 'Engineering');

LIMIT

在SQL中,LIMIT子句用于限制查詢結果的數量,這在處理大型數據庫時尤其有用,可以幫助控制數據的加載和處理量,從而提高效率。LIMIT常與SELECT語句一起使用,以限定返回的記錄數。

基本使用

示例

假設有一個名為employees的表,你想要檢索其中的一部分記錄。你可以使用LIMIT子句來實現這一點:

SELECT * FROM employees LIMIT 10;

這條語句將返回employees表中的前10條記錄。

結合 OFFSET 使用

LIMIT子句通常與OFFSET子句結合使用,OFFSET用于指定從哪條記錄開始獲取數據,這在實現分頁功能時非常有用。

示例

如果你想跳過前10條記錄,并從第11條記錄開始獲取接下來的10條記錄,你可以這樣寫:

SELECT * FROM employees LIMIT 10 OFFSET 10;

用途

  • 性能優化:當數據集非常大時,限制查詢結果的數量可以減少網絡傳輸的數據量,減輕數據庫服務器的負載,提高查詢響應時間。
  • 數據分頁LIMITOFFSET的組合非常適用于數據分頁,這在Web應用和移動應用中非常常見,可以用戶逐頁瀏覽數據而不是一次性加載全部數據。
  • 抽樣調查:當需要從大量數據中隨機抽取樣本進行分析時,LIMIT可以用來限制返回的記錄數,雖然需要額外的方法來確保數據的隨機性。

分組查詢

在SQL中,分組查詢是通過GROUP BY子句實現的,它允許你將結果集的行根據一個或多個列的值分組。這通常與聚合函數(如COUNT(), SUM(), AVG(), MAX(), MIN()等)一起使用,以對每個組進行計算或總結。

基本使用

GROUP BY子句跟在FROMWHERE子句之后(如果存在WHERE的話),并在ORDER BY子句之前。它可以對查詢結果進行分組,然后對每個分組應用聚合函數。

示例

假設有一個名為sales的表,其中包含date, region, 和amount字段,你可以使用GROUP BY來計算每個地區的總銷售額:

SELECT region, SUM(amount) AS total_sales
FROM sales
GROUP BY region;

這條語句將按region列的值對sales表中的行進行分組,并計算每個地區的銷售總額。

多列分組

你可以根據多個列進行分組。例如,如果你想按年份和地區分組計算銷售額,假設date字段包含日期信息:

SELECT YEAR(date) AS year, region, SUM(amount) AS total_sales
FROM sales
GROUP BY YEAR(date), region;

這里,結果將根據年份和地區分組,為每個組合計算銷售總額。

使用HAVING子句

HAVING子句用于對GROUP BY生成的分組進行條件過濾,它是在分組和聚合完成后應用的。HAVING類似于WHERE子句,但WHERE過濾行,而HAVING過濾組。

示例

如果你只想顯示銷售額超過某個特定值的分組:

SELECT region, SUM(amount) AS total_sales
FROM sales
GROUP BY region
HAVING SUM(amount) > 10000;

這里,只有那些銷售總額超過10,000的地區才會被顯示。

常見用途

  • 業務洞察:通過分組查詢,可以快速了解不同類別、地區或時間段內的業務表現。
  • 報告和匯總:為報告制作提供匯總數據,如月度銷售、年度成本分析等。
  • 數據清洗:識別異常值或進行數據質量分析,例如分組后查找不符合預期的數據點。

*查詢的執行順序

在MySQL中,SQL查詢命令的執行順序是指數據庫如何內部處理SQL語句的不同部分,從而生成最終的查詢結果。理解這一執行順序對于編寫高效的SQL查詢尤為重要,因為它幫助開發者理解如何優化查詢以及為什么某些查詢寫法比其他方法更有效。

以下是MySQL處理SQL查詢語句的典型邏輯執行順序:

  1. FROM子句

    這是處理的第一步。MySQL從指定的表中讀取數據。如果涉及多個表,將進行相應的聯接操作。
  2. JOIN子句

    如果查詢中包含多個表,將根據JOIN子句指定的條件執行聯接。這一步發生在任何WHERE篩選之前,因此JOIN的處理會影響后續步驟中涉及的數據量。
  3. WHERE子句

    過濾步驟,此時會根據WHERE子句中指定的條件篩選從FROM和JOIN步驟獲取的數據。只有滿足條件的行才會被進一步處理。
  4. GROUP BY子句

    如果查詢包含GROUP BY子句,MySQL此時會將之前的結果集按照指定的字段進行分組。
  5. HAVING子句

    類似于WHERE子句,但是它是在數據已經被分組后進行過濾。HAVING子句用于篩選那些滿足指定條件的組。
  6. SELECT子句

    選擇特定的列。這一步只處理那些在之前的步驟中沒有被過濾掉的行,且只包括指定要返回的字段。
  7. DISTINCT子句

    如果使用了DISTINCT關鍵字,MySQL此時會去除重復的數據行,確保查詢結果中的每行數據都是唯一的。
  8. ORDER BY子句

    結果排序。此步驟在所有行被選擇和可能的去重之后進行,根據指定的字段對結果集進行排序。
  9. LIMIT / OFFSET子句

    最后階段,限制返回的結果數或者跳過一定數量的行。這常用于分頁顯示結果。

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

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

相關文章

圖片轉圖標(ICO)的工具軟件

目前常用的ICO轉換方式大多都是網頁在線轉換&#xff0c;沒網就無法使用了。自己編寫了一款小軟件&#xff0c;可以將各種格式圖片轉為ICO圖標。 目前支持PNG,BMP,JPG,JPEG,GIF等格式的圖片轉換成ICO&#xff0c;支持的尺寸有常用的16*16&#xff0c;24*24&#xff0c;32*32&am…

Linux 進程間通信 System V系列: 共享內存,信號量,簡單介紹消息隊列

進程間通信 System V系列: 共享內存,初識信號量 一.共享內存1.引入2.原理3.系統調用接口1.shmget2.shmat和shmdt3.shmctl 4.邊寫代碼邊了解共享內存的特性1.ftok形成key,shmget創建與獲取共享內存2.shm相關指令3.shmat和shmdt掛接和取消掛接4.shmctl獲取共享內存信息,釋放共享內…

政務網離線安裝python3及其依賴手冊

文章目錄 python安裝及環境配置gcc安裝make安裝python3安裝pip安裝 測試測試python3報錯:ModuleNotFoundError: No module named _ctypes’測試pip3報錯“pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.” 依賴庫…

springboot 日志詳解

系統用戶操作日志(記錄用戶操作并定時保存到表中) 客戶需求: 要對幾個關鍵的業務功能進行操作日志記錄&#xff0c;即什么人在什么時間操作了哪個功能&#xff0c;操作前的數據報文是什么、操作后的數據報文是什么&#xff0c;必要的時候可以一鍵回退。 設計思路: ruoyi中使用S…

共享旅游革命:千益暢行卡的優勢揭秘

在共享經濟的快速發展中&#xff0c;共享旅游創業已成為許多創新者和投資者關注的重點。特別是千益暢行&#xff0c;作為共享旅游行業的新秀&#xff0c;其商業模型和經營策略引起了市場的高度討論。然而&#xff0c;對于這個公司是否僅僅是新一輪的市場“收割者”&#xff0c;…

Kylin Server V10下FTP服務器安全加固

一、查看操作系統信息 [root@localhost ~]# cat /etc/.kyinfo [dist] name=Kylin milestone=Server-V10-GFB-Release-ZF9_01-2204-Build03 arch=arm64 beta=False time=2023-01-09 11:04:36 dist_id=Kylin-Server-V10-GFB-Release-ZF9_01-2204-Build03-arm64-2023-01-09 11:04…

大模型prompt實例:知識庫信息質量校驗模塊

大模型相關目錄 大模型&#xff0c;包括部署微調prompt/Agent應用開發、知識庫增強、數據庫增強、知識圖譜增強、自然語言處理、多模態等大模型應用開發內容 從0起步&#xff0c;揚帆起航。 大模型應用向開發路徑&#xff1a;AI代理工作流大模型應用開發實用開源項目匯總大模…

基于FPGA的數字信號處理(11)--定點數的舍入模式(2)向最臨近值取整nearest

前言 在之前的文章介紹了定點數為什么需要舍入和幾種常見的舍入模式。今天我們再來看看另外一種舍入模式&#xff1a;向最臨近值取整nearest。 10進制數的nearest nearest&#xff1a; 向最臨近值方向取整。它的舍入方式和四舍五入非常類似&#xff0c;都是舍入到最近的整數…

【Unity AR開發系列】介紹如何使用這個支持熱更的AR開發插件,快速地開發AR應用

預告 Unity開發AR系列 本專欄將介紹如何使用這個支持熱更的AR開發插件&#xff0c;快速地開發AR應用。 更新 二、使用插件一鍵安裝HybridCLR和ARCore 三、配置帶HybridCLR的ARCore開發環境

計算機視覺與深度學習實戰之以Python為工具:基于主成分分析的人臉二維碼識別

注意:本文的下載教程,與以下文章的思路有相同點,也有不同點,最終目標只是讓讀者從多維度去熟練掌握本知識點。 下載教程:計算機視覺與深度學習實戰-以MATLAB和Python為工具_基于主成分分析的人臉二維碼識別_項目開發案例教程.pdf 一、引言 隨著科技的快速發展,計算機視覺…

單鏈表經典oj題(2)

前言 這次將要把剩下的oj題將以圖解和自己的理解把它講解完&#xff0c;希望對大家有所幫助&#xff0c;這次的講解也是干貨 第一題 21. 合并兩個有序鏈表 - 力扣&#xff08;LeetCode&#xff09; ok這次就簡單點&#xff0c;大家自己去看題目了 將兩個升序鏈表合并為一個…

帶有-i選項的sed命令在Linux上執行成功,但在MacOS上失敗了

問題&#xff1a; 我已經成功地使用以下 sed 命令在Linux中搜索/替換文本&#xff1a; sed -i s/old_string/new_string/g /path/to/file然而&#xff0c;當我在Mac OS X上嘗試時&#xff0c;我得到&#xff1a; command i expects \ followed by text我以為我的Mac運行的是…

未授權訪問:Memcached 未授權訪問漏洞

目錄 1、漏洞原理 2、環境搭建 3、未授權訪問 防御手段 今天繼續學習各種未授權訪問的知識和相關的實操實驗&#xff0c;一共有好多篇&#xff0c;內容主要是參考先知社區的一位大佬的關于未授權訪問的好文章&#xff0c;還有其他大佬總結好的文章&#xff1a; 這里附上大…

如何在OpenWrt軟路由中增加一個新功能

為了在OpenWrt中增加一個新的功能&#xff0c;并使其支持 UCI 配置&#xff0c;我們可以創建一個簡單的C語言服務&#xff0c;例如一個簡單的日志服務。此服務將記錄到日志文件中&#xff0c;并支持通過 UCI 配置啟用或禁用日志功能。以下是詳細的步驟和代碼示例。 1 創建服務…

K8S三 K8S部署微服務應用

一 用k8s部署微服務應用 以我們之前用docker部署過的eureka應用為例&#xff0c;首先添加配置文件eureka-app-deployment.yaml用于創建Deployment apiVersion: apps/v1 kind: Deployment metadata:name: eureka-app-deployment # deployment名字labels:app: eureka-app spec:…

【C++】CentOS環境搭建-升級CMAKE

【C】CentOS環境搭建-升級CMAKE CMAKE報錯CMake 3.12 or higher is required. You are running version 2.8.12.2升級步驟1.移除當前的cmake2.安裝必要的構建工具和庫3.下載最新的cmake源碼并解壓5.編譯和安裝6.驗證安裝 CMAKE報錯CMake 3.12 or higher is required. You are r…

oraclesql中刪除表中重復行的方法

在Oracle SQL中&#xff0c;刪除表中的重復行有幾種常見的方法。以下是其中的三種&#xff1a; 使用ROWID: 通過比較ROWID&#xff0c;你可以找到并刪除重復的行。這是因為ROWID是Oracle數據庫為每一行數據分配的唯一標識符。 sql DELETE FROM persons p1 WHERE ROWID NOT…

MySQL存儲引擎詳解

存儲引擎 MySQL體系結構 連接層&#xff1a;與客戶端連接&#xff0c;權限校驗、連接池服務層&#xff1a;SQL接口和解析、查詢優化、緩存、函數引擎層&#xff1a;索引、存儲引擎存儲層&#xff1a;系統文件、日志&#xff08;Redo、Undo等&#xff09; 存儲引擎介紹 不同的…

SSH:安全遠程訪問的基石

SSH&#xff1a;安全遠程訪問的基石 一、引言 在當今這個數字化、網絡化的時代&#xff0c;遠程訪問和管理計算機資源已成為日常工作的重要組成部分。然而&#xff0c;如何在不安全的網絡環境中確保數據傳輸的機密性、完整性和可靠性&#xff0c;成為了一個亟待解決的問題。S…

前端測試策略與實踐:單元測試、E2E測試與可訪問性審計

前端測試策略是確保Web應用程序質量、性能和用戶體驗的關鍵組成部分。有效的測試策略通常包括單元測試、端到端&#xff08;E2E&#xff09;測試以及可訪問性審計等多個層面。以下是關于這三類測試的策略與實踐建議&#xff1a; 單元測試 定義與目的&#xff1a; 單元測試是針…