MySQL 表內容的增刪查改 -- CRUD操作,聚合函數,group by 子句

目錄

1. Create

1.1 語法

1.2 單行數據 + 全列插入

1.3 多行數據 + 指定列插入

1.4 插入數據否則更新數據

1.5 替換

2. Retrieve

2.1 SELECT 列

2.1.1 全列查詢

2.1.2 指定列查詢

2.1.3 查詢字段為表達式

2.1.4 為查詢結果指定別名

2.1.5 結構去重

2.2 WHERE 條件

2.2.1 運算符介紹

2.2.2 案例

2.3 對篩選結果排序顯示?

2.3.1 案例

2.4 分頁顯示結果

3. Update

3.1 案例

4. Delete

4.1 案例

4.2 截斷表

5. 插入查詢結果

6. 聚合函數

6.1 案例

7. group by 子句的使用

7.1 案例


????????CRUD: create(創建),retrieve(讀取),Update(更新),delete(刪除)

1. Create

1.1 語法

INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ...value_list: value, [, value] ...

? ? ? ? 插入數據的時候,value_list 中列的數量和順序要和 前面定義表([(column [, column] ...)]?)的列的一致。

? ? ? ? 這里先創建一張學生表,用于下列實驗。?

1.2 單行數據 + 全列插入

? ? ? ? 如果定義表中沒有指定列,表示全列插入。也可以在定義表中指定全部列表示全列插入。

1.3 多行數據 + 指定列插入

1.4 插入數據否則更新數據

? ? ? ? 由于在插入的時候會發生主鍵或者唯一鍵沖突,可以選擇性的進行同步更新操作:

INSERT ... ON DUPLICATE KEY UPDATE column = value [, column = value] ...

? ? ? ? 如下圖中的語句,當插入的數據沒有主鍵或者唯一鍵沖突的時候插入數據,如果有主鍵或唯一鍵沖突則將原數據更新為 update 之后的數據。

1.5 替換

REPLACE [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ...value_list: value, [, value] ...

? ? ? ? 如果插入的數據與表中的數據沒沖突,則插入該數據;如果插入的數據與表中的數據有沖突,則將表中數據替換為該數據。?

2. Retrieve

SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...DISTINCT:表示去重。
{* | {column [, column] ...}:*表示通配符,column表示要查看的列。
WHERE ...:后面跟篩選條件。
ORDER BY column [ASC | DESC], ...:按照 column 升序或降序排序。
LIMIT ...:限制條數。

? ? ? ? 下列是后續實驗使用的表的結構以及其數據。?

2.1 SELECT 列

2.1.1 全列查詢

? ? ? ? 通常情況下不建議使用 * 進行全列查詢,因為查詢的列越多,意味著需要傳輸的數據量越大,并且會影響到索引的使用。?

2.1.2 指定列查詢

? ? ? ? 指定列的順序不需要按定義表的順序來寫。可以指定想要查詢的若干列進行查詢。

2.1.3 查詢字段為表達式

? ? ? ? (1)表達式不包含字段

? ? ? ? (2)表達式包含一個字段

? ? ? ? (3)表達式包含多個字段?

2.1.4 為查詢結果指定別名

SELECT column [AS] alias_name [...] FROM table_name;

? ? ? ? as 可以省略。?

2.1.5 結構去重

2.2 WHERE 條件

2.2.1 運算符介紹

? ? ? ? 比較運算符:?

? ? ? ? '=' 不能用于判斷是否等于 NULL。?

? ? ? ? between 的區間是左閉右閉的。?

? ? ? ? like 前可以加 not 表示取反。

? ? ? ? 邏輯運算符:

2.2.2 案例

? ? ? ? (1)查看英語低于60分的同學。

? ? ? ? (2)查看語文成績在 [80, 90] 分的同學。?

? ? ? ? (3)數學成績是 98 或 99 的同學。?

? ? ? ? (4)篩選出姓孫的同學,孫某以及孫某某。

? ? ? ? (5)篩選語文成績好于英語成績的同學。?

? ? ? ? (6)篩選總分在 200 分一下的同學。?

? ? ? ? 從上圖可以看到,語句 1 可以正常執行,而語句 2 則會失敗。原因是因為 select 語句是有執行順序的。首先執行的是 from 表示從那個表中找,其次是 where 子句,表示篩選的條件,最后在是列的顯示。上述的語句 2 中,在執行 where 的時候還沒有進行重命名,所以使用 total 充當篩選條件是不可行的,其次,重命名也不能在 where 子句中進行。

2.3 對篩選結果排序顯示?

? ? ? ? order by 的執行順序在顯示列之后,所以可以使用重命名的列名進行排序。

-- ASC 為升序(從小到大)
-- DESC 為降序(從大到小)
-- 默認為 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

? ? ? ? 注:沒有 order by 子句查詢出來的順序是未定義的。 NULL 視為比任何值都小。

2.3.1 案例

? ? ? ? (1)按數學成績升序或降序顯示同學及其數學成績。

? ? ? ? (2)?按數學降序,英語升序,語文升序的方式顯示各科成績。

? ? ? ? 上述語句表明的是,當數學相等的時候,按照英語成績升序排列,當數學成績相等并且英語成績相等的時候,按照語文成績相等來排。?

2.4 分頁顯示結果

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

? ? ? ? 對未知表進行查詢的時候最好加上一條 limit 語句,避免因為表中數據過大,查詢全表數據導致數據庫卡死。

3. Update

UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...];

? ? ? ? 對查詢到的結果進行列值更新如果沒有 where 子句會對全表進行修改

3.1 案例

? ? ? ? (1)將孫悟空的數學成績修改為 80 分。

? ? ? ? (2)將總分倒數前 3 的同學數學加 30 分。?

4. Delete

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

? ? ? ? 對查詢到的結果進行刪除

4.1 案例

? ? ? ? (1)刪除孫悟空的成績。

? ? ? ? (2)刪除整張表的數據。?

? ? ? ? 整張表的數據刪除之后,并不會重置 auto_increment 項。

4.2 截斷表

TRUNCATE [TABLE] table_name;

? ? ? ? truncate 也是清空整張表的數據,只能對整張表操作,不能想 delete 一樣刪除部分數據。會重置 auto_increment 項。truncate 不對數據操作,直接把表清空,所以比 delete 快,但是 truncate 在刪除數據的時候,并不會記錄到日志當中,也不會經過真正的事務,所以無法回滾。

5. 插入查詢結果

INSERT INTO table_name [(column [, column ...])] SELECT ...;

? ? ? ? 案例:刪除表中的重復記錄。

? ? ? ? (1)創建原始數據表并插入測試數據。

? ? ? ? (2)創建一張空表,結構和原表一樣。?

? ? ? ? (3)將原表去重的數據插入到新表中。?

? ? ? ? (4)將原表重命名為其他,然后將新表重命名為原表。?

6. 聚合函數

6.1 案例

? ? ? ? (1)統計學生數學成績的平均值。

? ? ? ? (2)返回 > 70 分以上的最低數學成績。

7. group by 子句的使用

? ? ? ? 分組的目的是為了進行分組之后,方便進行聚合統計。

select column1, column2, .. from table group by column;

7.1 案例

? ? ? ? 創建一個雇員信息表(來自oracle 9i的經典測試表),EMP 員工表,DEPT 部門表,SALGRADE 工資等級表。

? ? ? ? (1)顯示每個部門的平均工資和最高工資。?

? ? ? ? (2)顯示每個部門的每種崗位的平均工資和最低工資。?

? ? ? ? (3)顯示平均工資低于 2000 的部門和它的平均工資。

? ? ? ? having 對聚合統計之后的結果進行條件篩選。?

知識點1:? ? ????

????????SQL 查詢中各個關鍵字的執行先后順序?from > on> join > where > group by > with > having > select > distinct > order by > limit

?

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

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

相關文章

LabVIEW累加器標簽通道

主要展示了 Accumulator Tag 通道的使用,通過三個并行運行的循環模擬不同數值的多個隨機序列,分別以不同頻率向累加器寫入數值,右側循環每秒讀取累加器值,同時可切換查看每秒內每次事件的平均值,用于演示多線程數據交互…

【iOS】源碼閱讀(五)——類類的結構分析

文章目錄 前言類的分析類的本質objc_class 、objc_object和NSObjectobjc_object:所有對象的基類型objc_class:類的底層結構NSObject:面向用戶的根類 小結 指針內存偏移普通指針----值拷貝對象----指針拷貝或引用拷貝用數組指針引出----內存偏…

Baklib構建企業CMS高效協作與安全管控體系

企業CMS高效協作體系構建 基于智能工作流引擎的設計邏輯,現代企業內容管理系統通過預設多節點審核路徑與自動化任務分配機制,有效串聯市場、技術、法務等跨部門協作鏈路。系統支持多人同時編輯與版本追溯功能,結合細粒度權限管控模塊&#x…

Linux環境變量與地址空間

哈嘍,各位Linux初學者們!今天咱們來聊聊Linux中那兩個看起來很高大上但實際上跟我們日常使用息息相關的概念:環境變量和地址空間。別被這些術語嚇到,我會用最接地氣的方式給你解釋清楚! 一、環境變量:Linu…

Oracle SHARED POOL的SUB POOL技術

從Oracle 9i開始,SHARED POOL可以分為多個SUB POOL,其數量受以下幾個因素影響: ?系統CPU的數量。默認情況下,在Oracle中每4個CPU分配一個SUB POOL,最多不能超過7個。 ?共享池的大小。SUB POOL的最小容量隨著Oracle版…

Collection集合遍歷的三種方法

1.foreach循環遍歷 格式&#xff1a;for&#xff08;元素的數據類型 變量名&#xff1a;數組或集合&#xff09;{ } 2.使用迭代器遍歷 方法名稱&#xff1a;Iterator<E> iterator&#xff08;&#xff09; 說明&#xff1a;返回集合中的迭代器對象&#xff0c;該迭代…

頭歌之動手學人工智能-Pytorch 之autograd

目錄 第1關&#xff1a;Variable 任務描述 編程要求 測試說明 沒有偉大的愿望&#xff0c;就沒有偉大的天才。——巴爾扎克開始你的任務吧&#xff0c;祝你成功&#xff01; 第2關&#xff1a;Variable 屬性 任務描述 編程要求 測試說明 真正的科學家應當是個幻想家&a…

篇章二 數據結構——前置知識(二)

目錄 1. 包裝類 1.1 包裝類的概念 1.2 基本數據類型和對應的包裝類 1.3 裝箱和拆箱 1.4 自動裝箱和自動拆箱 1.5 練習 —— 面試題 2. 泛型 2.1 如果沒有泛型——會出現什么情況&#xff1f; 2.2 語法 2.3 裸類型 1.沒有寫<> 但是沒有報錯為什么&#xff1f; …

Git典型使用場景相關命令

Git典型使用場景相關命令 1 建立本地倉庫與遠程倉庫的聯系2 作為開發者參與項目的常用命令2-1 一般步驟2-2 **合并與同步主分支改動**2-3 **查看日志和差異**2-4 **提交后想修改或撤銷**2-5 分支管理2-6 清除未被追蹤的文件&#xff08;謹慎使用&#xff09; 3 作為遠程倉庫管理…

redis緩存-更新策略-三大緩存問題

緩存&#xff1a;數據交換的緩沖區&#xff0c;存儲的數據的臨時地方&#xff0c;讀寫性能較高。 步驟&#xff1a; 先從redis里面查詢 緩存命中&#xff1a;直接返回結果緩存未命中 從數據庫里面查詢 沒有數據&#xff1a;返回null有數據&#xff1a;存到redis里面&#xff…

[TriCore] 01.QEMU 虛擬化 TriCore 架構中的寄存器 指令

目錄 1.寄存器宏 - FIELD() 2.寄存器操作 - FIELD_SETTER() & FIELD_GETTER() 3.指令輔助方法 - HELPER() 3.1.輔助宏 3.2.指令示例 3.3.函數調用 4.PSW 寄存器讀寫 - psw_read() & psw_write() 1.寄存器宏 - FIELD() FIELD() 宏定義寄存器 MASK // include/hw…

《軟件工程》第 4 章 - 需求獲取

在軟件工程中&#xff0c;需求獲取是挖掘用戶真實需求的關鍵步驟&#xff0c;它為后續的設計、開發和測試提供堅實基礎。本章將圍繞需求獲取的流程、方法及工具展開&#xff0c;結合實際案例與 Java 代碼&#xff0c;深入講解這一重要環節。 4.1 軟件需求的初始表示 4.1.1 用例…

react diff 算法

diff 算法作為 Virtual DOM 的加速器&#xff0c;其算法的改進優化是 React 整個界面渲染的基礎和性能的保障&#xff0c;同時也是 React 源碼中最神秘的&#xff0c;最不可思議的部分 diff 算法會幫助我們就算出 VirtualDOM 中真正變化的部分&#xff0c;并只針對該部分進行原…

Gin項目腳手架與標配組件

文章目錄 前言設計思想和原則? 技術棧視頻實況教程sponge 內置了豐富的組件(按需使用)幾個標配常用組件主要技術點另一個參考鏈接 前言 軟件和汽車一樣&#xff0c;由多個重要零部件組裝而成。 本文堆積了一些常用部件&#xff0c;還沒來得及好好整理。先放著。 神兵利器雖多…

【Webtrees 手冊】第 10章 - 用戶體驗

Webtrees 手冊/用戶體驗 < Webtrees 手冊 跳轉到導航跳轉到搜索 信息 手冊部分仍在建設中 請耐心等待或隨意貢獻自己的力量:-)。 第 10 章 - 用戶體驗 <- 章節概述 目錄 1多位系譜學家的合作 1.1家庭研究模型1.2“孤膽戰士”模型1.3示范“本地家庭書”1.4模特“俱樂部”…

Linux 進程概念(下)

目錄 前言 4.進程狀態 一.普遍的操作系統層面上宏觀概念&#xff1a; 二.具體的Linux操作系統的狀態&#xff1a; 5.進程優先級&#xff08;了解&#xff09; 6.其他概念 進程切換 前言 本篇是接著上一篇的內容繼續往下了解進程相關的一些概念&#xff01; 4.進程狀態 運…

使用java實現word轉pdf,html以及rtf轉word,pdf,html

word,rtf的轉換有以下方案&#xff0c;想要免費最靠譜的是LibreOffice方案, LibreOffice 是一款 免費、開源、跨平臺 的辦公軟件套件&#xff0c;旨在為用戶提供高效、全面的辦公工具&#xff0c;適用于個人、企業和教育機構。它支持多種操作系統&#xff08;Windows、macOS、…

IP證書的作用與申請全解析:從安全驗證到部署實踐

在網絡安全領域&#xff0c;IP證書&#xff08;IP SSL證書&#xff09;作為傳統域名SSL證書的補充方案&#xff0c;專為公網IP地址提供HTTPS加密與身份驗證服務。本文將從技術原理、應用場景、申請流程及部署要點四個維度&#xff0c;系統解析IP證書的核心價值與操作指南。 一…

GitLab 18.0 正式發布,15.0 將不再受技術支持,須升級【三】

GitLab 是一個全球知名的一體化 DevOps 平臺&#xff0c;很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版&#xff0c;專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料&#xff1a; 極狐GitLab 官網極狐…

超簡單Translation翻譯模型部署

Helsinki-NLP/opus-mt-{en}-{zh}系列翻譯模型可以實現200多種語言翻譯&#xff0c;Helsinki-NLP/opus-mt-en-zh是其中英互譯模型。由于項目需要&#xff0c;在本地進行搭建&#xff0c;并記錄下搭建過程&#xff0c;方便后人。 1. 基本硬件環境 CPU&#xff1a;N年前的 Intel…