MySQL基本查詢(二)

文章目錄

  • Update
  • Delete
  • 插入查詢結果(select + insert)
  • 聚合函數
  • 分組聚合統計

在這里插入圖片描述

Update

1. 語法:
set后面加列屬性或者表達式
UPDATE table_name SET column = expr [, column = expr …][WHERE …] [ORDER BY …] [LIMIT …]

  • 案例
  1. 將孫悟空同學的數學成績變更為 80 分
update exam_result set math=80 where name = '孫悟空';
  1. 將曹孟德同學的數學成績變更為 60 分,語文成績變更為 70 分
update exam_result set math=60,chinese=70 where name='曹孟德';
  1. 將總成績倒數前三的 3 位同學的數學成績加上 30 分
// 先查詢總分最后三名同學的總分
select name,math+english+chinese as total from exam_result order by total asc limit 3; 
// 讓后三名同學的數學加上30分
// 先執行order by 再執行update 最后執行limit
update exam_result set math = math + 30 order by math+english+chinese asc limit 3; 
// 再查詢最后三名同學的總分
select name,math+english+chinese as total from exam_result order by total asc limit 3; 

可能倒數3名同學會發生變化

  1. 如果update沒有設置條件會進行全列的更改,沒有where子句則更新全表,更新全表的語句慎用
    將所有同學的語文成績更新為原來的 2 倍
update exam_result set chinese = chinese*2;

在這里插入圖片描述

Delete

  1. 語法:
    DELETE FROM table_name [WHERE …] [ORDER BY …] [LIMIT …]
  • 案例
  1. 刪除孫悟空同學的考試成績
delete from exam_result where name='孫悟空';
// 刪除全表的數據
delete from exam_result;
  1. 刪除倒數第一的人的成績
delete from exam_result order by math+english+chinese asc limit 1;
  1. 清空表的數據
    這種做法是不會讓auto_increment的值置0的或者置空的
delete from 表名

在這里插入圖片描述
4. 截斷表
語法:
TRUNCATE [TABLE] table_name

truncate table 表名
  • 會重置 AUTO_INCREMENT 項,刪除表之后會重置auto_increment項,把它的值變為1
  • truncate不會做更新日志的操作,delete from會做更新日志的操作
  • 實際上 MySQL 不對數據操作,所以比 DELETE 更快,但是TRUNCATE在刪除數據的時候,并不經過真正的事
    物,所以無法回滾
  • 只能對整表操作,不能像 DELETE 一樣針對部分數據操作
  • 三種日志:
    <> bin log: 歷史上操作過的sql語句優化之后保留下來——方便主從同步、備份、恢復
    <> redo log:確保宕機、斷電的時候數據不丟失(因為數據可能在內存中存著)——保證崩潰安全
    <> undo log:做事務回滾、事務的隔離性
    在這里插入圖片描述

插入查詢結果(select + insert)

1. 語法
INSERT INTO table_name [(column [, column …])] SELECT …

  • 案例
    刪除表中的的重復記錄,重復的數據只能有一份
// 創建空表
create table no_duplicate_table like duplicate_table;
// 將去重之后的表插入到新表中
select distinct * from duplicate_table;
insert into no_duplicate_table select distinct * from duplicate_table;
// 查看no_duplicate_table得到去重之后的數據
select * from no_duplicate_table;
// 通過重命名表,實現原子的的去重操作
// 將原表重命名備份一下,然后把新表的名字改為原表的名字
rename table duplicate_table to old_duplicate_table;
rename table no_duplicate_table to duplicate_table;
// 查看最終的結果
select * from duplicate_table;

2. 只是打印去重,并沒有修改原表中的數據
在這里插入圖片描述

3. create table no_duplicate_table like duplicate_table;創建像duplicate_table一樣的表結構

在這里插入圖片描述
4. 為什么最后是通過rename的方式進行的?
單純就是想等一切都就緒了,然后統一放入、更新、生效等。因為我們的move操作和重命名操作實際上就是在文件系統里就是改這個文件所在的目錄里面文件名和inode的映射關系,他相較于冗長地向表中插入和冗長的上傳行為比起來非常輕。很有可能我這個目錄有很多文件包括正在操作的這個文件正在被外部的網站或者各種語言正在訪問,所以我們不能著急動這個表而是應該先把這個表先傳到臨時目錄然后再統一move過去,這是一種比較推薦的做法

聚合函數

在這里插入圖片描述

  • 案例
    統計班級共有多少同學
    1. 用*做統計
    在這里插入圖片描述
    2. 統計數學成績有多少個
    select count(math) as res from exam_result;

3. 聚合函數會先算出后面表達式的結果,得到一個數字
統計去重后的數學成績
select count(distinct math) from exam_result;

4. 統計我們班數學的總分和平均成績,英語的平均成績
select sum(math) from exam_result
select sum(math)/count( * ) from exam_result
select sum(english)/count( * ) from exam_result

5. 統計數學成績的平均分
select avg(math) from exam_result

6. 統計英語成績的最高分
select max(english) from exam_result

7.返回 > 70 分以上的數學最低分
select min(math) from exam_result where math > 70;

總結:
1.只屬于某一個人的信息是無法聚合的,比如名字和平均分在一起聚合就不行

分組聚合統計

  1. 分組的目的是為了進行分組之后進行每組的聚合統計
  2. 把數據拿出來(用select拿)再進行分組
  3. 語法:select column1, column2, … from table group by column;
  4. 指定列名,實際分組,使用該列的不同行數據進行分組的
    在這里插入圖片描述
  • 案例

準備工作,創建一個雇員信息表(來自oracle 9i的經典測試表)
1、EMP員工表
2、DEPT部門表
3、SALGRADE工資等級表

// 準備工作
//利用source將該備份文件恢復到數據庫中
source /home/r/scott_data.sql;
use scott;
show tables;

在這里插入圖片描述
emp
在這里插入圖片描述dept
在這里插入圖片描述
salgrade
在這里插入圖片描述

1. 分組進行統計每個組的最高工資和平均工資

在這里插入圖片描述
在這里插入圖片描述

  1. 顯示每個部門的每種崗位的平均工資和最低工資

在這里插入圖片描述
3. 跟在select 后面的必須是分組的列屬性或者是聚合函數,因為這些屬性有相同的,而下圖中名字是每個人都不同的屬性,無法分組

在這里插入圖片描述

  1. 顯示平均工資低于2000的部門和它的平均工資
    先統計每個部門的平均工資,結果先聚合出來
    select deptno,avg(sal) as 平均工資 from emp group by deptno;
    再判斷平均工資低于2000的部門再對聚合的結果進行判斷
    select deptno,avg(sal) as 平均工資 from emp group bydeptno having 平均工資<2000

在這里插入圖片描述
在這里插入圖片描述
5. having是對聚合后的統計數據進行條件篩選

在這里插入圖片描述

6. having 和 where 的區別
1,2,3,4,5表示順序
MySQL中在邏輯上一切皆表

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

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

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

相關文章

Android Framework學習二:Activity創建及View繪制流程

文章目錄 Window繪制流程Window Manager Service&#xff08;WMS&#xff09;SurfaceSurfaceFlinger 安卓View層次結構ActivityPhoneWindowActivity與PhoneWindow兩者之間的關系ViewRootImplDecorViewDecorView 的作用DecorView 的結構總結 Activity創建流程View invalidate調用…

基于ssm的智慧養老平臺(全套)

一、系統架構 前端&#xff1a;jsp | js | jquery | css 后端&#xff1a;spring | springmvc | mybatis 環境&#xff1a;jdk1.8 | mysql | maven | tomcat 二、代碼及數據庫 三、功能介紹 01. 登錄 02. 管理員-主頁 03. 管理員-個人中心 04. 管理員-…

計算機視覺技術的發展歷程

計算機視覺技術的發展歷程可以分為以下幾個階段&#xff1a; 早期探索階段&#xff08;1960s-1980s&#xff09; 1960年代&#xff1a;計算機視覺的概念開始形成&#xff0c;研究者嘗試讓計算機識別和理解圖像&#xff0c;主要集中在基礎的圖像處理&#xff0c;如邊緣檢測和特…

2025五一杯B題五一杯數學建模思路代碼文章教學: 礦山數據處理問題

完整內容請看文章最下面的推廣群 問題1. 根據附件1中的數據和&#xff0c;建立數學模型&#xff0c;對數據A進行某種變換&#xff0c;使得變換后的結果與數據盡可能接近。計算變換后的結果與數據的誤差&#xff0c;并分析誤差的來源&#xff08;如數據噪聲、模型偏差等&#xf…

.NET 平臺詳解

什么是 .NET&#xff1f; .NET 是一個由微軟開發的跨平臺、開源的開發者平臺&#xff0c;用于構建多種類型的應用程序。它提供了一致的編程模型和豐富的類庫&#xff0c;支持多種編程語言&#xff08;如 C#、F#、Visual Basic&#xff09;。 .NET 的核心組成 運行時環境 CLR …

ICRA 2025 基于觸覺反饋的閉環分層控制框架——開放環境下通用門開啟的智能規劃與操作

在機器人領域&#xff0c;讓機器人在開放環境中與日常物品交互一直是個難題&#xff0c;其中開門任務極具挑戰性。門的設計、機械結構和推拉方式多種多樣&#xff0c;現有方法存在諸多局限。基于運動學的方法依賴已知門模型&#xff0c;面對未知門時難以發揮作用&#xff1b;幾…

阿里云服務遷移實戰: 07-其他服務遷移

概述 當完成了服務器、數據庫、IP、OSS等遷移后&#xff0c;剩下的就是其他服務了。 短信網關 短信模板只能一個個創建&#xff0c;不能批量操作。但是可以使用以下方式優化操作。 在原賬號導出模板列表 概述 當完成了服務器、數據庫、IP、OSS等遷移后&#xff0c;剩下的…

(六——下)RestAPI 毛子(Http resilience/Refit/游標分頁/異步大文件上傳)

文章目錄 項目地址一、Refit1.1 安裝需要的包1.2 創建接口IGitHubApi1.3 創建RefitGitHubService1. 實現接口2. 注冊服務 1.4 修改使用方法 二、Http resilience2.1 安裝所需要的包2.2 創建resilience pipeline簡單版2.3 創建全局的resilience處理1. 創建清理全局ResilienceHan…

leetcode 977. Squares of a Sorted Array

題目描述 雙指針法一 用right表示原數組中負數和非負數的分界線。 nums[0,right-1]的是負數&#xff0c;nums[right,nums.size()-1]是非負數。 然后用合并兩個有序數組的方法。合并即可。 class Solution { public:vector<int> sortedSquares(vector<int>&…

在 API 模擬階段:Apipost vs. Faker.js vs. Postman —— 為什么 Apipost 是最優選擇

在構建 API 的過程中&#xff0c;模擬數據的能力至關重要。就像你在做飯時等待食材送達一樣——沒有原料&#xff0c;菜也沒法完成。 但是&#xff0c;當你的后端還在開發中&#xff0c;而前端又急需真實的 API 響應進行開發時&#xff0c;該怎么辦&#xff1f;這時候&#xf…

一種快速計算OTA PSRR的方法(Ⅰ)

序言:最近碰到了一道有趣的習題&#xff0c;讓我重新思考了下如何計算運放的PSRR&#xff0c;再結合相關論文&#xff0c;現將所思所想分享出來&#xff0c;歡迎大家討論。 1.從Razavi的一道習題引入 題目要求計算電路的PSRR&#xff0c;已知PSRR定義為信號增益除以電源增益&am…

第十二屆藍橋杯 2021 C/C++組 空間

目錄 題目&#xff1a; 題目描述&#xff1a; 題目鏈接&#xff1a; 思路&#xff1a; 思路詳解&#xff1a; 代碼&#xff1a; 代碼詳解&#xff1a; 題目&#xff1a; 題目描述&#xff1a; 題目鏈接&#xff1a; 空間 - 藍橋云課 思路&#xff1a; 思路詳解&#…

TensorFlow深度學習實戰——基于循環神經網絡的情感分析模型

TensorFlow深度學習實戰——基于循環神經網絡的情感分析模型 0. 前言1. 數據處理2. 模型構建與訓練3. 模型評估相關鏈接 0. 前言 情感分析 (Sentiment Analysis) 是自然語言處理中的一項技術&#xff0c;旨在識別和提取文本中的情感信息&#xff0c;通常是分析一段文本中是否存…

eslint相關報錯收集

[vue/no-multiple-template-root]The template root requires exactly one element.eslint-plugin-vuejsx報錯&#xff1a;jsx報錯Parsing error: Unexpected token &#xff1c;eslint&#xff1b;ts報錯&#xff1a;Parsing error: Unexpected token {eslintmodule報錯 ‘mod…

【論文推薦】深度學習賦能地質災害分析:數據、模型、應用與機遇(用于地質災害分析的深度學習:數據源)

【論文推薦】深度學習賦能地質災害分析&#xff1a;數據、模型、應用與機遇&#xff08;用于地質災害分析的深度學習&#xff1a;數據源&#xff09; 【論文推薦】深度學習賦能地質災害分析&#xff1a;數據、模型、應用與機遇&#xff08;用于地質災害分析的深度學習&#xf…

判斷用戶選擇的Excel單元格區域是否跨頁?

VBA應用程序開發過程中&#xff0c;經常需要處理用戶選中的單元格區域&#xff0c;有的應用場景中&#xff0c;需要限制用戶選中區域位于同一頁中&#xff08;以打印預覽顯示的分頁劃分&#xff09;&#xff0c;但是VBA對象模型中并沒有提供相應的接口&#xff0c;用于快速查詢…

題解:洛谷 CF2091E Interesting Ratio

思路推導 我們先對 32 32 32 和 96 96 96 進行二進制拆分。 相同部分&#xff08;用 α \alpha α 表示&#xff09;&#xff1a; 5 5 5 個 2 2 2。 不同部分&#xff08;用 β \beta β 表示&#xff09;&#xff1a; 1 1 1 和 3 3 3。 gcd ? ( 32 , 96 ) \gcd(32,9…

linux安裝配置PostgreSQL

環境&#xff1a;centos7、SpringBoot、PostgreSQL15 PostgreSQL: Linux downloads (Red Hat family) PostgreSQL安裝 1.安裝 PostgreSQL Yum 倉庫 RPM 包 sudo rpm -ivh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noar…

docker安裝jenkins v2.504.1集群

1 概述 Jenkins是一款開源的、基于Java開發的持續集成&#xff08;CI&#xff09;與持續交付&#xff08;CD&#xff09;工具&#xff0c;旨在通過自動化構建、測試和部署流程&#xff0c;提升軟件開發效率與質量。 ? 1.1 核心功能與特點 持續集成與交付? Jenkins支持自動化…

5月2日日記

今天看了爸爸推薦的書&#xff0c;叫&#xff1a;“高效能人士的七個習慣” 現在剛看完50頁&#xff0c;感覺確實有點東西&#xff0c; 七個習慣分別是&#xff1a; 個人層面1積極主動 2要事第一 3以終為始 社交層面 4知彼解己5 統效綜合 6雙贏思維 7不斷更新 目前還沒有…