【MySQL】CRUD

CRUD 簡介

CRUD是對數據庫中的記錄進行基本的增刪改查操作

  • Create(創建)
  • Retrieve(讀取)
  • Update(更新)
  • Delete(刪除)

一、新增(Create)

語法:

INSERT [INTO] table_name [(colum [, column] ...)]
VALUES (value_list) [, (value_list)] ...
  • INTO 可以省略但是一般不省略
  • 表名后跟著要增加數據的列名,同時 數據的位置?也要對應 列的位置

示例:

2.1 單行數據 + 全列插入

-- 插入兩條記錄,value_list 數量必須和定義表的列的數量及順序一致
INSERT INTO EXAM 
VALUES (1,'唐三藏',70,80,90);INSERT INTO EXAM 
VALUES (2,'孫悟空',90,90,90);

2.2 多行數據 + 指定列插入

-- 插入兩條記錄,value_list 數量必須和指定列數量及順序一致
INSERT INTO EXAM(id,name,math) VALUES 
(3,'豬八戒',60),
(4,'沙悟凈',70);

二、查詢(Retrieve)

語法:

SELECT[DISTINCT]select_expr [, select_expr] ...[FROM table_references][WHERE where_condition][GROUP BY {col_name | expr}, ...][HAVING where_condition][ORDER BY {col_name | expr } [ASC | DESC], ...][LIMIT {[offset,] row_count | row_count OFFSET offset}]

示例:

3.1 查詢表中所有的列

select * from 表名;
  • select:表示查詢的關鍵字
  • * :所有的列
  • from 表名:要從哪個表中查詢數據

3.2 查詢指定列

select 列名1 [,列名2] from 表名;

3.3 查詢字段為表達式

常量表達式

查詢列表中的表達式可以是表中不存在的值或列,如果是字符串常量要寫到單引號中

算術表達式

可以通過加上 as 來修改臨時列名

所有的 select 操作,都會先從物理表(真實存在的表)中查詢對應的值,再計算表達式的值,合并結果后,通過臨時表返回。

3.4 去重查詢

通過 DISTINCT 關鍵字來對某列數據進行去重

3.5 條件查詢

比較運算符:

邏輯運算符:

  • WHERE條件可以使用表達式,但不能使用別名
  • AND的優先級高于OR,在同時使用時,需要使用小括號()包裹優先執行的部分

代碼示例:

插入數據:

INSERT INTO EXAM (id,name, chinese, math, english) VALUES(1,'唐三藏', 67, 98, 56),(2,'孫悟空', 87.5, 78, 77),(3,'豬悟能', 88, 98.5, 90),(4,'曹孟德', 82, 84, 67),(5,'劉玄德', 55.5, 85, 45),(6,'孫權', 70, 73, 78.5),(7,'宋公明', 75, 65, 30);
-- 查詢英語不及格的同學(<60)
SELECT name,english FROM EXAM WHERE english < 60;-- 查詢語文成績好于英語成績的同學
SELECT name,chinese,english FROM EXAM WHERE chinese > english;-- 查詢語文成績大于80分且英語成績大于80分的同學
SELECT * FROM EXAM WHERE chinese > 80 AND english > 80;-- 查詢語文成績大于80分或者英語成績大于80分的同學
SELECT * FROM EXAM WHERE chinese > 80 OR english > 80;-- 查詢語文成績在 [80,90] 之間的同學
SELECT name,chinese FROM EXAM WHERE chinese BETWEEN 80 AND 90;-- 也可以使用 AND
SELECT name,chinese FROM EXAM WHERE chinese >= 80 AND chinese <= 90;-- 查詢數學成績是 58 或 59 的同學
SELECT name,math FROM EXAM WHERE math IN (58,59);-- 模糊查詢
-- %匹配任意多個(包括0個)字符
SELECT name FROM EXAM WHERE name LIKE '孫%'; -- 匹配到孫悟空,孫權
-- _匹配嚴格的一個任意字符
SELECT name FROM EXAM WHERE name LIKE '孫_'; -- 匹配到孫權-- 查詢數學成績為空的人的數據
SELECT name,math FROM EXAM WHERE math is NULL;-- 查詢數學成績不為空的人的數據
SELECT name,math FROM EXAM WHERE math is NOT NULL;

3.6 排序

語法:

-- ASC 為升序(從小到大)
-- DESC 為降序(從大到小)
-- 默認為ASC
SELECT ... FROM table_name [WHERE ...] ORDER BY {col_name | expr } [ASC | DESC], ... ;
  • 查詢中沒有 ORDER BY 子句返回的順序永遠是未定義的
  • ORDER BY 子句中可以使用列的別名進行排序
  • NULL 進行排序時,視為比任何值都小

3.7 分頁查詢

像前面提到的 SELECT * FROM 表名 不能有效限制結果集的大小,是不安全的查詢,有可能把服務器的資源耗盡,通過分頁查詢可以有效減少服務器的壓力,同時也有較好的用戶體驗

-- 起始下標為0,
-- 從 0 開始,篩選 n 條結果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;-- 從 s 開始,篩選 n 條結果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s,n;-- 從 s 開始,篩選 n 條結果,用法比第二種更明確
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

三、修改(Updata)

語法:

Update 表名 set 列名 = 值 [,列名=值]... WHERE 條件;
  • 以原值的基礎上做變更時,不能使用 math += 30 這樣的語法
  • 不加 WHERE 條件時,會導致全表數據被列新

四、刪除(Delete)

語法:

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

代碼示例:

-- 刪除孫悟空同學的考試成績
DELETE FROM EXAM WHERE name = '孫悟空';-- 刪除整表數據
DELETE FROM EXAM;
  • 不加 WHERE 條件時,會導致全表數據被刪除

五、截斷表

?讓表恢復到最開始創建的狀態

語法:

TRUNCATE [TABLE] tbl_name;
  • 只能對整表進行操作,不像 DELETE 一樣針對部分數據
  • 不對數據操作所以比 DELETE 更快,TRUNCATE 在刪除數據時不經過真正的事務,所以無法回溯
  • 會重置 AUTO_INCREMENT 項

AUTO_INCREMENT 是創建列時添加的關鍵字,可以讓數據庫幫我們對這個列的數據進行自增,像 ID 這樣,每次插入數據都會自動 + 1

六、插入查詢結果

把一個查詢獲取的值插入到另一個表中

語法:

INSERT INTO table_name [(column [, column ...])] SELECT ...
  • 查詢出來的列要與插入的列一一對應

當我們需要刪除表中的數據,重復的數據只能有一份時,如果每次查詢都使用 DISTINCT 進行去重操作會嚴重影響效率。可以通過創建一個與 要被去重的表 結構相同的表,把去重的記錄寫到新表中,以后查詢都從新表中查,這樣真實的數據不丟失,又能保證查詢效率。

七、聚合函數

7.1 常用函數

可以通過 COUNT(*) 來獲取表中數據的數量,這個是 SQL 語言級別的標準,對于所有的軟件都通用。

在 MYISAM 存儲引擎中有一個變量記錄了表中的記錄數,獲取記錄可以通過這個變量直接讀取,效率極高,但是不同數據庫讀取方式可能不同,要酌情使用

八、Group by 分組查詢

?GROUP BY 可以將一個數據集分為若干個小組,方便進行其他數據處理

語法:

SELECT {col_name | expr} ,...,aggregate_function (aggregate_expr) -- 查詢列表FROM table_referencesGROUP BY {col_name | expr}, ...  -- 分組條件[HAVING where_condition]        -- 針對分組之后的結果進行過濾
  • 查詢列表中如果要寫列名,列必須是group by中的列,或是包含在聚合函數中
  • aggregate_function:聚合函數,比如COUNT(),SUM(),AVG()...

Having 子句

使用 GROUP BY 對結果進行處理之后,對分組的結果進行過濾時,不能使用 WHERE 子句,而要使用 HAVING 子句

Having 與 Where 的區別

  • Having 用于對分組結果的條件過濾
  • Where 用于對表中真實數據的條件過濾

九、內置函數

在現在互聯網項目中使用很少,因為可能對數據庫的性能造成影響,一般把對數據的處理放在應用中

日期函數:

字符串函數:

數學函數:

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

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

相關文章

【數據架構04】數據湖架構篇

? 10張高質量數據治理架構圖 無論你是數據架構師、治理專家&#xff0c;還是數字化轉型負責人&#xff0c;這份資料庫都能為你提供體系化參考&#xff0c;高效解決“架構設計難、流程不清、平臺搭建慢”的痛點&#xff01; &#x1f31f;限時推薦&#xff0c;速速收藏&#…

【Java Web】3.SpringBootWeb請求響應

&#x1f4d8;博客主頁&#xff1a;程序員葵安 &#x1faf6;感謝大家點贊&#x1f44d;&#x1f3fb;收藏?評論?&#x1f3fb; 文章目錄 一、請求 1.1 postman 1.2 簡單參數 1.3 實體參數 1.4 數組集合參數 1.5 日期參數 1.6 JSON參數 1.7 路徑參數 二、響應 2…

競爭性學習:無監督世界的智能聚類引擎

一、競爭性學習&#xff1a;無監督聚類的生物啟發范式 1.1 核心原理&#xff1a;神經元的 “適者生存” 競爭性學習模擬生物神經網絡的競爭機制&#xff1a;多個神經元對輸入數據 “競爭響應”&#xff0c;獲勝神經元&#xff08;與輸入最匹配&#xff09;更新權重&#xff0…

docker面試題(5)

Docker安全么 Docker 利用了 Linux 內核中很多安全特性來保證不同容器之間的隔離&#xff0c;并且通過簽名機制來對鏡像進行 驗證。大量生產環境的部署證明&#xff0c;Docker 雖然隔離性無法與虛擬機相比&#xff0c;但仍然具有極高的安全性。 如何清理后臺停止的容器 可以使用…

同為科技 智能PDU產品選型介紹 EN10/I801CI

智能PDU是一種利用信息技術手段&#xff0c;優化電力的分配和使用。隨著數據中心進行虛擬化部署和為提高計算效率而整合設備&#xff0c;平均機架功率密度在持續增長&#xff0c;幾年前&#xff0c;一個普通機柜需要3-4千瓦電力&#xff0c;而現今9-15千瓦甚至更高電力的機柜則…

Aciviti工作流

1. springBoot和activiti整合 pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

golang 對象池sync.Pool的實現

Go語言中sync.Pool通過多級緩存機制實現高效對象復用&#xff0c;其核心設計結合了GMP調度模型特性。以下是實現要點分析&#xff1a; P o o l ∑ p 0 G O M A X P R O C S ( l o c a l P o o l p ) v i c t i m C a c h e Pool \sum_{p0}^{GOMAXPROCS}(localPool_p) vict…

Docker run命令-p參數詳解

端口映射基礎語法 docker run -p <宿主機端口>:<容器端口> 操作示例 docker run -d --restartalways --namespug -p 5000:80 registry.aliyuncs.com/openspug/spug參數解析 -d&#xff1a;后臺運行容器--restartalways&#xff1a;設置容器自動重啟--namespug&…

《2.1.4 C語言中的整數類型及類型轉換|精講篇》

后面作者會在2025.5.25 00:00前整理出筆記和思維導圖大家放心&#xff0c;主頁還有其他文章 請先移步歡迎參考 收藏文章 關注博主 高效學習 好了&#xff0c;這小節我們要探討一個相對來說簡單的問題&#xff0c;就是C語言里邊的那些定點整數是如何進行強制類型轉換的。好來看這…

采用多維計算策略(分子動力學模擬+機器學習),顯著提升 α-半乳糖苷酶熱穩定性

字數 978&#xff0c;閱讀大約需 5 分鐘 在工業應用領域&#xff0c;α-半乳糖苷酶在食品加工、動物營養及醫療等方面發揮著重要作用。然而&#xff0c;微生物來源的該酶往往存在熱穩定性不足的問題&#xff0c;限制了其在工業場景中的高效應用。近日&#xff0c;來自江南大學的…

Jetpack Compose預覽調試技巧

Jetpack Compose 預覽(Preview)不顯示是一個常見問題,可能由多種原因導致。以下是系統的調試技巧和解決方案: 1. 檢查基礎配置 Compose 版本兼容性 確保 compose-compiler、compose-ui 等依賴版本一致且與 Kotlin 版本兼容。檢查 build.gradle: android {compileOptions {…

使用 Go 語言實現完整且輕量級高性能的 MQTT Broker

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一種輕量級的發布/訂閱消息傳輸協議。但是目前雖然mqtt的客戶端很多&#xff0c;但是服務端著實不多&#xff0c;常見的服務端如mosquitto或emqx。但是golang語言的實現幾乎找不到。golang的輕量級部署和高并…

uv sync --frozen卡住不動

今天受邀幫同事調試uv卡住不動的問題&#xff0c;同樣的代碼已經在別的服務器跑起來了&#xff0c;換了一臺服務器之后&#xff0c;執行uv sync --frozen沒有按預期創建虛擬環境和安裝依賴。 1. 鏡像源是已經配置好的&#xff0c;pip install也能很快安裝包。 2. 查看了uv.lo…

Spring Boot中如何對密碼等敏感信息進行脫敏處理

以下是常見的脫敏方法及實現步驟&#xff0c;涵蓋配置、日志和API響應等多個層面&#xff1a; ?1. 配置文件敏感信息脫敏? (1) 使用加密庫&#xff08;如Jasypt&#xff09; ?步驟?&#xff1a; 添加依賴&#xff1a; <dependency><groupId>com.github.ulise…

springboot中redis的事務的研究

redis的事務類似于隊列操作&#xff0c;執行過程分為三步&#xff1a; 開啟事務入隊操作執行事務 使用到的幾個命令如下&#xff1a; 命令說明multi開啟一個事務exec事務提交discard事務回滾watch監聽key(s)&#xff1a;當監聽一個key(s)時&#xff0c;如果在本次事務提交之…

python打卡day35@浙大疏錦行

知識點回顧&#xff1a; 三種不同的模型可視化方法&#xff1a;推薦torchinfo打印summary權重分布可視化進度條功能&#xff1a;手動和自動寫法&#xff0c;讓打印結果更加美觀推理的寫法&#xff1a;評估模式 作業&#xff1a;調整模型定義時的超參數&#xff0c;對比下效果。…

Python爬蟲實戰:研究Crawley 框架相關技術

1. Crawley 框架相關定義 1.1 網絡爬蟲定義 網絡爬蟲是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。它通過 HTTP 協議與 Web 服務器進行交互,獲取網頁內容并進行解析處理,是數據采集和信息檢索的重要工具。 1.2 Crawley 框架定義 Crawley 是一個基于 Pytho…

tvalid寄存器的理解

if(!out_axis_tvalid_reg || m_axis_tready ) beginend m_axis_tready 是上拍下一級給的ready信號 out_axis_tvalid_reg是上一拍&#xff0c;本級給下級的valid信號 一共有四種組合&#xff0c;然后可以通過這個if語句&#xff0c;在接下來的begin ... end中&#xff0c;用來…

【AI實戰】從“苦AI”到“爽AI”:Magentic-UI 把“人類-多智能體協作”玩明白了!

Hello&#xff0c;親愛的小伙伴們&#xff01;你是否曾經在深夜里&#xff0c;為了自動化點外賣、篩機票、抓網頁數據焦頭爛額&#xff1f;有沒有幻想過哪天能出個“貼心AI管家”&#xff0c;一鍵點菜、搞定事務、自動操作網頁&#xff0c;比你還懂你&#xff1f;更關鍵——還讓…

【東楓科技】usrp rfnoc 開發環境搭建

作者 太原市東楓電子科技有限公司 &#xff0c;代理銷售 USRP&#xff0c;Nvidia&#xff0c;等產品與技術支持&#xff0c;培訓服務。 環境 Ubuntu 20.04 依賴包 sudo apt-get updatesudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils …