文章目錄
資料新增
資料查詢 1、查詢選項 distinct 2、欄位選擇&別名 as 3、資料源 from 4、where子句 5、group by子句 6、having子句 7、order by子句 8、limit子句
資料更新
資料洗掉
資料新增
1、批量插入
批量插入 :是一種優化資料逐條插入的方式
示例
1、批量插入學生成績(t_1全欄位)
insert into t_1 values ( null , 'Tom' , 'Computer' , 90 ) , ( null , 'Lily' , 'Computer' , 92 ) ;
2、批量插入學生考試資訊(t_1不包含成績)
insert into t_1 ( stu_name, course) values ( 'Tony' , 'English' ) , ( 'Ray' , 'Math' ) ;
2、蠕蟲復制
蠕蟲復制 :從已有表中復制資料直接插入到另外一張表(同一張表)
示例
1、創建一張新表,將t_1表中的資料遷移到新表t_2中
create table t_1(
id int primary key auto_increment ,
stu_name varchar ( 20 ) not null ,
course varchar ( 20 ) not null ,
score decimal ( 5 , 2 )
) charset utf8;
insert into t_2 select * from t_1;
2、快速讓t_2表中的資料增長(重復執行)
insert into t_2 ( stu_name, course, score) select stu_name, course, score from t_2;
3、主鍵沖突
主鍵沖突 :在資料進行插入時包含主鍵指定,而主鍵在資料表已經存在
示例
1、用戶名作為主鍵的用戶注冊(沖突不能覆寫):username,password,regtime
create table t_3(
username varchar ( 50 ) primary key ,
password char ( 32 ) not null ,
regtime int unsigned not null
) charset utf8;
insert into t_3 values ( 'username' , 'password' , 12345678 ) ;
# 沖突忽略
insert ignore into t_3 values ( 'username' , '12345678' , 12345678 ) ;
2、用戶名作為主鍵的記錄用戶使用資訊(不存在新增、存在則更新時間):username,logintime
create table t_4(
username varchar ( 50 ) primary key ,
logintime int unsigned
) charset utf8;
insert into t_4 values ( 'username' , 12345678 ) ; # 當前時間戳
# 沖突更新(替換部分欄位資料)
insert into t_4 values ( 'username' , 12345678 ) on duplicate key update logintime = unix_timestamp( ) ; # 當前時間戳
如果主鍵不沖突:新增 如果主鍵沖突:更新指定欄位 上述方式適用于欄位較多,但是可能沖突時資料變化的欄位較少
3、用戶名作為主鍵的記錄用戶使用資訊(不存在新增、存在則更新全部):username,logintime、clientinfo
create table t_5(
username varchar ( 50 ) primary key ,
logintime int unsigned ,
clientinfo varchar ( 255 ) not null
) charset utf8;
insert into t_5 values ( 'username' , unix_timestamp( ) , '{PC:chrome}' ) ;
# 替換插入
replace into t_5 values ( 'username' , unix_timestamp( ) , '{phone:uc}' ) ;
replace遇到主鍵重復就會先洗掉、后新增 如果有較多欄位需要更新:建議使用替換
資料查詢
1、查詢選項 distinct
查詢選項 :用于對查詢結果進行簡單資料篩選
查詢選項是在select關鍵字之后,有兩個互斥值
all :默認 ,表示保留所有記錄(關鍵字可以沒有)distinct :去重,重復的記錄(針對所選欄位構成的記錄,而不是某個欄位)
示例
1、查看商品表中所有品類的商品資訊:重復的商品只保留一次(名字、價格、屬性都一致)
create table t_6(
id int primary key auto_increment ,
goods_name varchar ( 50 ) not null ,
goods_price decimal ( 10 , 2 ) default 0.00 ,
goods_color varchar ( 20 ) ,
goods_weight int unsigned comment '重量,單位克'
) charset utf8;
insert into t_6 values ( null , 'mate10' , 5499.00 , 'blue' , 320 ) ,
( null , 'mate10' , 5499.00 , 'gray' , 320 ) ,
( null , 'nokia3301' , 1299 , 'black' , 420 ) ;
# 考慮所有欄位的去重(不含邏輯主鍵)
select distinct goods_name, goods_price, goods_color, goods_weight from t_6;
select goods_name, goods_price, goods_color, goods_weight from t_6; # 保留所有
# 不考慮顏色去重
select distinct goods_name, goods_price, goods_weight from t_6;
select all goods_name, goods_price, goods_weight from t_6;
2、欄位選擇&別名 as
欄位選擇 :根據實際需求選擇的要獲取資料的欄位資訊
根據實際需求,明確所需要的欄位名字,使用英文逗號,分隔
獲取所有欄位,使用星號*通配所有欄位
欄位資料可以不一定是來自資料源(select只要有結果即可)
資料常量:select 1 函式或者變數:select unix_timestamp(),@@version (@@是系統變數的前綴,后面跟變數名) 欄位的選擇只要在保證資料需求能實作的情況下,盡可能少使用*代替(MySQL優化)
減少服務器的資料讀取壓力 減少網路傳輸壓力 讓客戶端能夠精確決議資料(不用大海撈針)
欄位別名 :給欄位取的臨時名字
欄位別名使用as語法實作:
欄位別名的目的通常為了保護資料
欄位沖突:多張表同時操作有同名欄位(系統默認覆寫),想保留全部 資料安全:對外提供資料不使用真實欄位名字 欄位別名的靈活使用一方面可以保證原始資料的安全,也可以為資料使用者提供便利
同名欄位覆寫問題(連表操作學習時會遇到) 原始欄位保護 資料欄位的簡化 select是SQL中用于取出資料的一種指令,這種指令未必一定需要從資料表取出資料,只要是本身能夠有資料的運算式,都可以使用select獲取
示例
1、查詢商品資訊
# 全部查詢
select * from t_6;
# 需求為商品名字和價格
select goods_name, goods_price from t_6;
# 別名使用
select goods_name as gn, goods_price gp from t_6;
2、不需要資料源的資料獲取:select的運算式本身能算出結果)
# 獲取當前時間戳和版本號
select unix_timestamp( ) as now, @@version as version, @@version ;
3、資料源 from
資料源 :from 關鍵字之后,資料的來源,只要最終結果是一個二維表,都可以當做資料源
單表資料源:資料源就是一張表 from 表名
多表資料源:資料來源是多張表(逗號分隔) from 表名1,表名2,...表名N
子查詢資料源:資料來源是一個查詢結果 from (select 欄位串列 from 表名) as 別名
資料源要求必須是一個表 如果是查詢結果必須給起一個表別名 資料表也可以指定別名
資料源是為查詢、檢索提供資料支持的,使用時需要明確指定
通常情況下資料源不會使用簡單的多表資料源(笛卡爾積)
資料表的別名在負責SQL查詢操作時非常有用,而且有些地方是必須使用(如子查詢資料源)
示例
1、單表資料源:最簡單的資料源,直接從一個資料表獲取
select * from t_7;
2、多表資料源:利用一張表的一條資料匹配另外一張表的所有記錄,記錄結果為:
記錄數 = 表1記錄數 * 表2記錄數 欄位數 = 表1欄位數 + 表2欄位數(笛卡爾積)
select * from t_7, t_8;
3、子查詢資料源:資料來源是一個select對應的查詢結果
select * from ( select * from t_7, t_8) t; # 資料有沖突查不出來
select * from ( select * from t_7) as t;
4、如果有時候名字較長或者使用不方便,可以利用表別名
select * from t_1 as t;
select t1. * , t2. stu_name from t_1 as t1, t_2 t2;
一般情況下別名設定是為了后續條件中可以直接使用別名 如果多表操作下,可以使用表別名來明確提取表欄位
4、where子句
where子句 :跟在from資料源之后,對資料進行條件匹配,篩選資料的
where 是在磁盤讀取后,進入記憶體之前進行篩選
where篩選的內容因為還沒進入記憶體,所以資料是沒有被加工過 的
示例
1、查詢t_5表中學生為lily的成績資訊
select * from t_5 where stu_name = 'Lily' ;
2、因為where是在磁盤取資料時進行條件篩選,此時資料沒有進入記憶體,所以欄位別名是無效的
# 錯誤
select stu_name name, score from t_5 where name = 'Lily' ;
運算子 :用于進行運算的符號
運算子可以用來進行欄位資料運算,配合where進行條件篩選 比較運算子 :
>(大于)、<(小于)、=(等于)、>=(大于等于)、<=(小于等于)、<>(不等于)between A and B:A和B之間(A小于B),包括A和B本身(數值比較)in (資料1,資料2,...資料N):在列舉的資料之中like 'pattern':像上面樣的,用于字串比較
_:單下劃線,匹配對應位置的一個任意字符(ab_:ab開頭+一個字符,匹配abc,ab1,但不能匹配abcd)%:匹配當前位置(往后)任意數量任意字符(ab%:ab開頭+任意數量任意字符,匹配abc,ab1,abcd) 邏輯運算子 :
and(邏輯與)、or(邏輯或)、not(邏輯非) null運算子 :
is null(為空)、is not null(不為空)
示例
1、查詢成績不及格的所有學生資訊
# 成績條件:成績是數值,又是比大小,可以直接使用比較運算子
select * from t_5 where score < 60 ;
2、查詢成績在60-90間的學生資訊
# 成績條件:區間60到90,可以有兩種解決方案
select * from t_5 where score between 60 and 90 ;
select * from t_5 where score >= 60 and score <= 90 ;
3、查詢還沒有成績的學生
# 成績條件:成績為null,所以不能用比較符號查,只能使用is null實作
select * from t_5 where score is null ;
5、group by子句
group by子句 :分組統計,根據某個欄位將所有的結果分類 ,并進行資料統計分析
分組的目的不是為了顯示資料,一定是為了統計資料 group by 子句一定是出現在where子句 之后(如果同時存在)分組統計可以進行統計細分:先分大組,然后大組分小組
聚合函式:
分組統計需要使用統計函式:
group_concat():將組里的某個欄位全部保留any_value():不屬于分組欄位的任意一個組里的值count():求對應分組的記錄數量
count(欄位名):統計某個欄位值的數量(NULL不統計)count(*):統計整個記錄的數量(較多) sum():求對應分組中某個欄位是和max()/min():求對應分組中某個欄位的最大/最小值avg():求對應分組中某個欄位的平均值 分組統計使用資料資料的查詢只能依賴統計函式和被分組欄位,而不能是其他欄位(MySQL7以前可以,不過資料沒意義:因為系統只保留組里的第一個)
示例
1、創建一張表,存盤學生資訊
create table t_0(
id int primary key auto_increment ,
name varchar ( 10 ) not null , gender enum ( '男' , '女' , '保密' ) ,
age tinyint unsigned not null ,
class_name varchar ( 10 ) not null comment '班級名稱'
) charset utf8;
insert into t_0 values
( null , '鳴人' , '男' , 18 , '木葉1班' ) , ( null , '佐助' , '男' , 18 , '木葉1班' ) , ( null , '佐井' , '男' , 19 , '木葉2班' ) ,
( null , '大蛇丸' , '男' , 28 , '木葉0班' ) , ( null , '卡卡西' , '男' , 29 , '木葉0班' ) , ( null , '小櫻' , '女' , 18 , '木葉1班' ) ,
( null , '雛田' , '女' , 18 , '木葉1班' ) , ( null , '我愛羅' , '男' , 19 , '木葉1班' ) , ( null , '向日葵' , '女' , 6 , '木葉10班' ) ,
( null , '博人' , '男' , 8 , '木葉10班' ) , ( null , '鼬' , '男' , 28 , '木葉0班' ) ;
2、統計每個班的人數
select count ( * ) , class_name from t_0 group by class_name;
3、多分組:統計每個班的男女學生數量
select count ( * ) , class_name, gender from t_0 group by class_name, gender;
4、統計每個班里的人數,并記錄班級學生的名字
select count ( * ) , group_concat( name) , class_name from t_0 group by class_name;
select count ( * ) , any_value( name) , class_name from t_0 group by class_name;
分組原理:
以統計班級學生為例
<style>#mermaid-svg-mO7XzBkDgVyekeiZ .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .label text{fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .node rect,#mermaid-svg-mO7XzBkDgVyekeiZ .node circle,#mermaid-svg-mO7XzBkDgVyekeiZ .node ellipse,#mermaid-svg-mO7XzBkDgVyekeiZ .node polygon,#mermaid-svg-mO7XzBkDgVyekeiZ .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-mO7XzBkDgVyekeiZ .node .label{text-align:center;fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .node.clickable{cursor:pointer}#mermaid-svg-mO7XzBkDgVyekeiZ .arrowheadPath{fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-mO7XzBkDgVyekeiZ .flowchart-link{stroke:#333;fill:none}#mermaid-svg-mO7XzBkDgVyekeiZ .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-mO7XzBkDgVyekeiZ .edgeLabel rect{opacity:0.9}#mermaid-svg-mO7XzBkDgVyekeiZ .edgeLabel span{color:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-mO7XzBkDgVyekeiZ .cluster text{fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-mO7XzBkDgVyekeiZ .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-mO7XzBkDgVyekeiZ text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-mO7XzBkDgVyekeiZ .actor-line{stroke:grey}#mermaid-svg-mO7XzBkDgVyekeiZ .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-mO7XzBkDgVyekeiZ #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .sequenceNumber{fill:#fff}#mermaid-svg-mO7XzBkDgVyekeiZ #sequencenumber{fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ #crosshead path{fill:#333;stroke:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .messageText{fill:#333;stroke:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-mO7XzBkDgVyekeiZ .labelText,#mermaid-svg-mO7XzBkDgVyekeiZ .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-mO7XzBkDgVyekeiZ .loopText,#mermaid-svg-mO7XzBkDgVyekeiZ .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-mO7XzBkDgVyekeiZ .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-mO7XzBkDgVyekeiZ .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-mO7XzBkDgVyekeiZ .noteText,#mermaid-svg-mO7XzBkDgVyekeiZ .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-mO7XzBkDgVyekeiZ .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-mO7XzBkDgVyekeiZ .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-mO7XzBkDgVyekeiZ .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-mO7XzBkDgVyekeiZ .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mO7XzBkDgVyekeiZ .section{stroke:none;opacity:0.2}#mermaid-svg-mO7XzBkDgVyekeiZ .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-mO7XzBkDgVyekeiZ .section2{fill:#fff400}#mermaid-svg-mO7XzBkDgVyekeiZ .section1,#mermaid-svg-mO7XzBkDgVyekeiZ .section3{fill:#fff;opacity:0.2}#mermaid-svg-mO7XzBkDgVyekeiZ .sectionTitle0{fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .sectionTitle1{fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .sectionTitle2{fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .sectionTitle3{fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mO7XzBkDgVyekeiZ .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-mO7XzBkDgVyekeiZ .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mO7XzBkDgVyekeiZ .grid path{stroke-width:0}#mermaid-svg-mO7XzBkDgVyekeiZ .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-mO7XzBkDgVyekeiZ .task{stroke-width:2}#mermaid-svg-mO7XzBkDgVyekeiZ .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mO7XzBkDgVyekeiZ .taskText:not([font-size]){font-size:11px}#mermaid-svg-mO7XzBkDgVyekeiZ .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mO7XzBkDgVyekeiZ .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-mO7XzBkDgVyekeiZ .task.clickable{cursor:pointer}#mermaid-svg-mO7XzBkDgVyekeiZ .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-mO7XzBkDgVyekeiZ .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-mO7XzBkDgVyekeiZ .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-mO7XzBkDgVyekeiZ .taskText0,#mermaid-svg-mO7XzBkDgVyekeiZ .taskText1,#mermaid-svg-mO7XzBkDgVyekeiZ .taskText2,#mermaid-svg-mO7XzBkDgVyekeiZ .taskText3{fill:#fff}#mermaid-svg-mO7XzBkDgVyekeiZ .task0,#mermaid-svg-mO7XzBkDgVyekeiZ .task1,#mermaid-svg-mO7XzBkDgVyekeiZ .task2,#mermaid-svg-mO7XzBkDgVyekeiZ .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-mO7XzBkDgVyekeiZ .taskTextOutside0,#mermaid-svg-mO7XzBkDgVyekeiZ .taskTextOutside2{fill:#000}#mermaid-svg-mO7XzBkDgVyekeiZ .taskTextOutside1,#mermaid-svg-mO7XzBkDgVyekeiZ .taskTextOutside3{fill:#000}#mermaid-svg-mO7XzBkDgVyekeiZ .active0,#mermaid-svg-mO7XzBkDgVyekeiZ .active1,#mermaid-svg-mO7XzBkDgVyekeiZ .active2,#mermaid-svg-mO7XzBkDgVyekeiZ .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-mO7XzBkDgVyekeiZ .activeText0,#mermaid-svg-mO7XzBkDgVyekeiZ .activeText1,#mermaid-svg-mO7XzBkDgVyekeiZ .activeText2,#mermaid-svg-mO7XzBkDgVyekeiZ .activeText3{fill:#000 !important}#mermaid-svg-mO7XzBkDgVyekeiZ .done0,#mermaid-svg-mO7XzBkDgVyekeiZ .done1,#mermaid-svg-mO7XzBkDgVyekeiZ .done2,#mermaid-svg-mO7XzBkDgVyekeiZ .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-mO7XzBkDgVyekeiZ .doneText0,#mermaid-svg-mO7XzBkDgVyekeiZ .doneText1,#mermaid-svg-mO7XzBkDgVyekeiZ .doneText2,#mermaid-svg-mO7XzBkDgVyekeiZ .doneText3{fill:#000 !important}#mermaid-svg-mO7XzBkDgVyekeiZ .crit0,#mermaid-svg-mO7XzBkDgVyekeiZ .crit1,#mermaid-svg-mO7XzBkDgVyekeiZ .crit2,#mermaid-svg-mO7XzBkDgVyekeiZ .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-mO7XzBkDgVyekeiZ .activeCrit0,#mermaid-svg-mO7XzBkDgVyekeiZ .activeCrit1,#mermaid-svg-mO7XzBkDgVyekeiZ .activeCrit2,#mermaid-svg-mO7XzBkDgVyekeiZ .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-mO7XzBkDgVyekeiZ .doneCrit0,#mermaid-svg-mO7XzBkDgVyekeiZ .doneCrit1,#mermaid-svg-mO7XzBkDgVyekeiZ .doneCrit2,#mermaid-svg-mO7XzBkDgVyekeiZ .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-mO7XzBkDgVyekeiZ .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-mO7XzBkDgVyekeiZ .milestoneText{font-style:italic}#mermaid-svg-mO7XzBkDgVyekeiZ .doneCritText0,#mermaid-svg-mO7XzBkDgVyekeiZ .doneCritText1,#mermaid-svg-mO7XzBkDgVyekeiZ .doneCritText2,#mermaid-svg-mO7XzBkDgVyekeiZ .doneCritText3{fill:#000 !important}#mermaid-svg-mO7XzBkDgVyekeiZ .activeCritText0,#mermaid-svg-mO7XzBkDgVyekeiZ .activeCritText1,#mermaid-svg-mO7XzBkDgVyekeiZ .activeCritText2,#mermaid-svg-mO7XzBkDgVyekeiZ .activeCritText3{fill:#000 !important}#mermaid-svg-mO7XzBkDgVyekeiZ .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mO7XzBkDgVyekeiZ g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-mO7XzBkDgVyekeiZ g.classGroup text .title{font-weight:bolder}#mermaid-svg-mO7XzBkDgVyekeiZ g.clickable{cursor:pointer}#mermaid-svg-mO7XzBkDgVyekeiZ g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-mO7XzBkDgVyekeiZ g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-mO7XzBkDgVyekeiZ .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-mO7XzBkDgVyekeiZ .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-mO7XzBkDgVyekeiZ .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-mO7XzBkDgVyekeiZ .dashed-line{stroke-dasharray:3}#mermaid-svg-mO7XzBkDgVyekeiZ #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mO7XzBkDgVyekeiZ #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mO7XzBkDgVyekeiZ #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-mO7XzBkDgVyekeiZ #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-mO7XzBkDgVyekeiZ #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mO7XzBkDgVyekeiZ #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mO7XzBkDgVyekeiZ #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mO7XzBkDgVyekeiZ #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-mO7XzBkDgVyekeiZ .commit-id,#mermaid-svg-mO7XzBkDgVyekeiZ .commit-msg,#mermaid-svg-mO7XzBkDgVyekeiZ .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mO7XzBkDgVyekeiZ .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mO7XzBkDgVyekeiZ .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mO7XzBkDgVyekeiZ g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mO7XzBkDgVyekeiZ g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-mO7XzBkDgVyekeiZ g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-mO7XzBkDgVyekeiZ g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-mO7XzBkDgVyekeiZ g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-mO7XzBkDgVyekeiZ .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-mO7XzBkDgVyekeiZ .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-mO7XzBkDgVyekeiZ .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-mO7XzBkDgVyekeiZ .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-mO7XzBkDgVyekeiZ .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-mO7XzBkDgVyekeiZ .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-mO7XzBkDgVyekeiZ .edgeLabel text{fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-mO7XzBkDgVyekeiZ .node circle.state-start{fill:black;stroke:black}#mermaid-svg-mO7XzBkDgVyekeiZ .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-mO7XzBkDgVyekeiZ #statediagram-barbEnd{fill:#9370db}#mermaid-svg-mO7XzBkDgVyekeiZ .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-mO7XzBkDgVyekeiZ .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-mO7XzBkDgVyekeiZ .statediagram-state .divider{stroke:#9370db}#mermaid-svg-mO7XzBkDgVyekeiZ .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-mO7XzBkDgVyekeiZ .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-mO7XzBkDgVyekeiZ .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-mO7XzBkDgVyekeiZ .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-mO7XzBkDgVyekeiZ .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-mO7XzBkDgVyekeiZ .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-mO7XzBkDgVyekeiZ .note-edge{stroke-dasharray:5}#mermaid-svg-mO7XzBkDgVyekeiZ .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-mO7XzBkDgVyekeiZ .error-icon{fill:#522}#mermaid-svg-mO7XzBkDgVyekeiZ .error-text{fill:#522;stroke:#522}#mermaid-svg-mO7XzBkDgVyekeiZ .edge-thickness-normal{stroke-width:2px}#mermaid-svg-mO7XzBkDgVyekeiZ .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-mO7XzBkDgVyekeiZ .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-mO7XzBkDgVyekeiZ .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-mO7XzBkDgVyekeiZ .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-mO7XzBkDgVyekeiZ .marker{fill:#333}#mermaid-svg-mO7XzBkDgVyekeiZ .marker.cross{stroke:#333}
:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}</style>
<style>#mermaid-svg-mO7XzBkDgVyekeiZ {
color: rgba(0, 0, 0, 0.75);
font: ;
}</style>
木葉1班
木葉2班
木葉0班
木葉10班
獲取資料后分組開始
匹配班級名字分組
木葉1班組
鳴人
佐助
小櫻
雛田
我愛羅
木葉2班組
佐井
木葉0班組
大蛇丸
卡卡西
鼬
木葉10班組
博人
向日葵
統計結果
只對結果負責
結果就是函式,而函式只對小組作業
木葉1班組5人 木葉2班組1人 木葉0班組3人 木葉10班組2人
回傳結果
分組結束
回溯統計 :在進行分組時(通常是多分組),每一次結果的回溯都進行一次匯總統計
回溯統計語法:在統計之后使用 with rollup 回溯統計一般用在多欄位分組 中,用來統計各級分組的匯總資料 因為回溯統計會將對應的分組欄位置空(不置空無法合并),所以回溯的資料還需要經過其他程式語言加工處理才能取出資料來
示例
統計每個班的男女同學數量,同時要知道班級人數總數
# 只統計每個班的男女同學數量,沒有班級匯總
select count ( * ) , class_name, gender, group_concat( name) from t_40 group by class_name, gender;
# 匯總統計:回溯
select count ( * ) , class_name, gender, group_concat( name) from t_40 group by class_name, gender with rollup ;
回溯統計原理:
<style>#mermaid-svg-56l0PShgZgx8G0BF .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-56l0PShgZgx8G0BF .label text{fill:#333}#mermaid-svg-56l0PShgZgx8G0BF .node rect,#mermaid-svg-56l0PShgZgx8G0BF .node circle,#mermaid-svg-56l0PShgZgx8G0BF .node ellipse,#mermaid-svg-56l0PShgZgx8G0BF .node polygon,#mermaid-svg-56l0PShgZgx8G0BF .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-56l0PShgZgx8G0BF .node .label{text-align:center;fill:#333}#mermaid-svg-56l0PShgZgx8G0BF .node.clickable{cursor:pointer}#mermaid-svg-56l0PShgZgx8G0BF .arrowheadPath{fill:#333}#mermaid-svg-56l0PShgZgx8G0BF .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-56l0PShgZgx8G0BF .flowchart-link{stroke:#333;fill:none}#mermaid-svg-56l0PShgZgx8G0BF .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-56l0PShgZgx8G0BF .edgeLabel rect{opacity:0.9}#mermaid-svg-56l0PShgZgx8G0BF .edgeLabel span{color:#333}#mermaid-svg-56l0PShgZgx8G0BF .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-56l0PShgZgx8G0BF .cluster text{fill:#333}#mermaid-svg-56l0PShgZgx8G0BF div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-56l0PShgZgx8G0BF .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-56l0PShgZgx8G0BF text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-56l0PShgZgx8G0BF .actor-line{stroke:grey}#mermaid-svg-56l0PShgZgx8G0BF .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-56l0PShgZgx8G0BF .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-56l0PShgZgx8G0BF #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-56l0PShgZgx8G0BF .sequenceNumber{fill:#fff}#mermaid-svg-56l0PShgZgx8G0BF #sequencenumber{fill:#333}#mermaid-svg-56l0PShgZgx8G0BF #crosshead path{fill:#333;stroke:#333}#mermaid-svg-56l0PShgZgx8G0BF .messageText{fill:#333;stroke:#333}#mermaid-svg-56l0PShgZgx8G0BF .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-56l0PShgZgx8G0BF .labelText,#mermaid-svg-56l0PShgZgx8G0BF .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-56l0PShgZgx8G0BF .loopText,#mermaid-svg-56l0PShgZgx8G0BF .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-56l0PShgZgx8G0BF .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-56l0PShgZgx8G0BF .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-56l0PShgZgx8G0BF .noteText,#mermaid-svg-56l0PShgZgx8G0BF .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-56l0PShgZgx8G0BF .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-56l0PShgZgx8G0BF .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-56l0PShgZgx8G0BF .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-56l0PShgZgx8G0BF .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-56l0PShgZgx8G0BF .section{stroke:none;opacity:0.2}#mermaid-svg-56l0PShgZgx8G0BF .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-56l0PShgZgx8G0BF .section2{fill:#fff400}#mermaid-svg-56l0PShgZgx8G0BF .section1,#mermaid-svg-56l0PShgZgx8G0BF .section3{fill:#fff;opacity:0.2}#mermaid-svg-56l0PShgZgx8G0BF .sectionTitle0{fill:#333}#mermaid-svg-56l0PShgZgx8G0BF .sectionTitle1{fill:#333}#mermaid-svg-56l0PShgZgx8G0BF .sectionTitle2{fill:#333}#mermaid-svg-56l0PShgZgx8G0BF .sectionTitle3{fill:#333}#mermaid-svg-56l0PShgZgx8G0BF .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-56l0PShgZgx8G0BF .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-56l0PShgZgx8G0BF .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-56l0PShgZgx8G0BF .grid path{stroke-width:0}#mermaid-svg-56l0PShgZgx8G0BF .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-56l0PShgZgx8G0BF .task{stroke-width:2}#mermaid-svg-56l0PShgZgx8G0BF .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-56l0PShgZgx8G0BF .taskText:not([font-size]){font-size:11px}#mermaid-svg-56l0PShgZgx8G0BF .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-56l0PShgZgx8G0BF .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-56l0PShgZgx8G0BF .task.clickable{cursor:pointer}#mermaid-svg-56l0PShgZgx8G0BF .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-56l0PShgZgx8G0BF .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-56l0PShgZgx8G0BF .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-56l0PShgZgx8G0BF .taskText0,#mermaid-svg-56l0PShgZgx8G0BF .taskText1,#mermaid-svg-56l0PShgZgx8G0BF .taskText2,#mermaid-svg-56l0PShgZgx8G0BF .taskText3{fill:#fff}#mermaid-svg-56l0PShgZgx8G0BF .task0,#mermaid-svg-56l0PShgZgx8G0BF .task1,#mermaid-svg-56l0PShgZgx8G0BF .task2,#mermaid-svg-56l0PShgZgx8G0BF .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-56l0PShgZgx8G0BF .taskTextOutside0,#mermaid-svg-56l0PShgZgx8G0BF .taskTextOutside2{fill:#000}#mermaid-svg-56l0PShgZgx8G0BF .taskTextOutside1,#mermaid-svg-56l0PShgZgx8G0BF .taskTextOutside3{fill:#000}#mermaid-svg-56l0PShgZgx8G0BF .active0,#mermaid-svg-56l0PShgZgx8G0BF .active1,#mermaid-svg-56l0PShgZgx8G0BF .active2,#mermaid-svg-56l0PShgZgx8G0BF .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-56l0PShgZgx8G0BF .activeText0,#mermaid-svg-56l0PShgZgx8G0BF .activeText1,#mermaid-svg-56l0PShgZgx8G0BF .activeText2,#mermaid-svg-56l0PShgZgx8G0BF .activeText3{fill:#000 !important}#mermaid-svg-56l0PShgZgx8G0BF .done0,#mermaid-svg-56l0PShgZgx8G0BF .done1,#mermaid-svg-56l0PShgZgx8G0BF .done2,#mermaid-svg-56l0PShgZgx8G0BF .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-56l0PShgZgx8G0BF .doneText0,#mermaid-svg-56l0PShgZgx8G0BF .doneText1,#mermaid-svg-56l0PShgZgx8G0BF .doneText2,#mermaid-svg-56l0PShgZgx8G0BF .doneText3{fill:#000 !important}#mermaid-svg-56l0PShgZgx8G0BF .crit0,#mermaid-svg-56l0PShgZgx8G0BF .crit1,#mermaid-svg-56l0PShgZgx8G0BF .crit2,#mermaid-svg-56l0PShgZgx8G0BF .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-56l0PShgZgx8G0BF .activeCrit0,#mermaid-svg-56l0PShgZgx8G0BF .activeCrit1,#mermaid-svg-56l0PShgZgx8G0BF .activeCrit2,#mermaid-svg-56l0PShgZgx8G0BF .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-56l0PShgZgx8G0BF .doneCrit0,#mermaid-svg-56l0PShgZgx8G0BF .doneCrit1,#mermaid-svg-56l0PShgZgx8G0BF .doneCrit2,#mermaid-svg-56l0PShgZgx8G0BF .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-56l0PShgZgx8G0BF .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-56l0PShgZgx8G0BF .milestoneText{font-style:italic}#mermaid-svg-56l0PShgZgx8G0BF .doneCritText0,#mermaid-svg-56l0PShgZgx8G0BF .doneCritText1,#mermaid-svg-56l0PShgZgx8G0BF .doneCritText2,#mermaid-svg-56l0PShgZgx8G0BF .doneCritText3{fill:#000 !important}#mermaid-svg-56l0PShgZgx8G0BF .activeCritText0,#mermaid-svg-56l0PShgZgx8G0BF .activeCritText1,#mermaid-svg-56l0PShgZgx8G0BF .activeCritText2,#mermaid-svg-56l0PShgZgx8G0BF .activeCritText3{fill:#000 !important}#mermaid-svg-56l0PShgZgx8G0BF .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-56l0PShgZgx8G0BF g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-56l0PShgZgx8G0BF g.classGroup text .title{font-weight:bolder}#mermaid-svg-56l0PShgZgx8G0BF g.clickable{cursor:pointer}#mermaid-svg-56l0PShgZgx8G0BF g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-56l0PShgZgx8G0BF g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-56l0PShgZgx8G0BF .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-56l0PShgZgx8G0BF .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-56l0PShgZgx8G0BF .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-56l0PShgZgx8G0BF .dashed-line{stroke-dasharray:3}#mermaid-svg-56l0PShgZgx8G0BF #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-56l0PShgZgx8G0BF #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-56l0PShgZgx8G0BF #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-56l0PShgZgx8G0BF #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-56l0PShgZgx8G0BF #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-56l0PShgZgx8G0BF #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-56l0PShgZgx8G0BF #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-56l0PShgZgx8G0BF #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-56l0PShgZgx8G0BF .commit-id,#mermaid-svg-56l0PShgZgx8G0BF .commit-msg,#mermaid-svg-56l0PShgZgx8G0BF .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-56l0PShgZgx8G0BF .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-56l0PShgZgx8G0BF .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-56l0PShgZgx8G0BF g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-56l0PShgZgx8G0BF g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-56l0PShgZgx8G0BF g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-56l0PShgZgx8G0BF g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-56l0PShgZgx8G0BF g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-56l0PShgZgx8G0BF g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-56l0PShgZgx8G0BF .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-56l0PShgZgx8G0BF .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-56l0PShgZgx8G0BF .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-56l0PShgZgx8G0BF .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-56l0PShgZgx8G0BF .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-56l0PShgZgx8G0BF .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-56l0PShgZgx8G0BF .edgeLabel text{fill:#333}#mermaid-svg-56l0PShgZgx8G0BF .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-56l0PShgZgx8G0BF .node circle.state-start{fill:black;stroke:black}#mermaid-svg-56l0PShgZgx8G0BF .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-56l0PShgZgx8G0BF #statediagram-barbEnd{fill:#9370db}#mermaid-svg-56l0PShgZgx8G0BF .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-56l0PShgZgx8G0BF .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-56l0PShgZgx8G0BF .statediagram-state .divider{stroke:#9370db}#mermaid-svg-56l0PShgZgx8G0BF .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-56l0PShgZgx8G0BF .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-56l0PShgZgx8G0BF .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-56l0PShgZgx8G0BF .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-56l0PShgZgx8G0BF .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-56l0PShgZgx8G0BF .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-56l0PShgZgx8G0BF .note-edge{stroke-dasharray:5}#mermaid-svg-56l0PShgZgx8G0BF .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-56l0PShgZgx8G0BF .error-icon{fill:#522}#mermaid-svg-56l0PShgZgx8G0BF .error-text{fill:#522;stroke:#522}#mermaid-svg-56l0PShgZgx8G0BF .edge-thickness-normal{stroke-width:2px}#mermaid-svg-56l0PShgZgx8G0BF .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-56l0PShgZgx8G0BF .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-56l0PShgZgx8G0BF .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-56l0PShgZgx8G0BF .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-56l0PShgZgx8G0BF .marker{fill:#333}#mermaid-svg-56l0PShgZgx8G0BF .marker.cross{stroke:#333}
:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}</style>
<style>#mermaid-svg-56l0PShgZgx8G0BF {
color: rgba(0, 0, 0, 0.75);
font: ;
}</style>
木葉1班
木葉2班
木葉0班
木葉10班
男
女
男
男
男
女
統計開始
大分組:班級名字分組
木葉1班組
鳴人
佐助
小櫻
雛田
我愛羅
木葉2班組
佐井
木葉0班組
大蛇丸
卡卡西
鼬
木葉10班組
博人
向日葵
小分組:性別分組
木葉1班組:男
鳴人
佐助
我愛羅
木葉1班組:女
小櫻
雛田
小分組:性別分組
木葉2班組:男
佐井
小分組:性別分組
木葉0班組:男
大蛇丸
卡卡西
鼬
小分組:性別分組
木葉10班組:男
博人
木葉10班組:女
向日葵
性別回溯
木葉1班組:NULL
鳴人
佐助
小櫻
雛田
我愛羅
性別回溯
木葉2班組:NULL
佐井
性別回溯
木葉0班組:NULL
大蛇丸
卡卡西
鼬
性別回溯
木葉10班組:NULL
博人
向日葵
班級名字回溯
NULL:NULL
全部人
回溯統計結束
分組排序 :在分組后統計結果時可以根據分組欄位 進行升序或者降序顯示資料
默認的系統就會自動對分組結果根據分組欄位進行升序排序 可以設定分組結果的排序方式
group by 欄位名 [ASC]:升序排序(默認)group by 欄位名 DESC:降序排序
示例
1、對分組結果女性優先顯示:gender為列舉,男值為1,女值為2
select count ( * ) , class_name, gender, group_concat( name) , any_value( name)
from t_0 group by class_name, gender desc ;
6、having子句
having子句 :類似于where子句,是用來進行條件篩選資料的
having 子句本身是針對分組統計結果進行條件篩選 的,但是本質是針對分組統計,如果沒有分組統計,不要使用having進行資料篩選having子句必須出現在group by子句之后 (如果同時存在) having針對的資料是在記憶體里已經加載的資料 having幾乎能做where能做的所有事,但是where卻不一定
欄位別名 (where針對磁盤資料,那時還沒有)統計結果 (where在group by之前)分組統計函式 (having通常是針對group by存在的) 但是能用where解決問題的地方絕不使用having
where針對磁盤讀取資料,源頭解決問題 where能夠限制無效資料進入記憶體,記憶體利用率較高,而having是針對記憶體資料篩選
示例
1、獲取班級人數小于3的班級
select count ( * ) as count, class_name, group_concat( name) from t_0 group by class_name having count < 3 ;
# 多用了一次函式(效率降低)
select count ( * ) as count, class_name, group_concat( name) from t_0 group by class_name having count ( * ) < 3 ;
# 沒辦法,前面沒統計,只能自己統計
select class_name, group_concat( name) from t_0 group by class_name having count ( * ) < 3 ;
7、order by子句
order by子句 :排序,根據某個指定的欄位進行升序或者降序排序
排序的參照物是校對集 排序是針對前面所得到的結果進行排序 (已經進入到記憶體的資料) order by 子句在having子句字后 (如果同時存在)排序分為升序和降序:默認是升序
order by 欄位 [ASC]:升序order by 欄位 DESC:降序 多欄位排序:是在第一個欄位排好序的情況下,不改變原來排序的基調后,再小范圍排序(類似分組) 實際開發中排序的使用非常常見,尤其是在數值、時間上多見
示例
1、單欄位排序:給所有學生按照年紀大小升序排序
select * from t_0 order by age;
select * from t_0 order by age asc ;
2、多欄位排序:先性別降序排序,然后按年齡升序排序
select * from t_40 order by gender desc , age;
select * from t_40 order by gender desc , age asc ;
8、limit子句
limit子句 :限制資料的獲取數量(記錄數)
示例
1、獲取t_0表中前3條資料
select * from t_0 limit 3 ;
2、獲取t_0表中第3條以后的3條資料
select * from t_0 limit 3 , 3 ; select * from t_0 limit 6 , 3 ;
資料查詢總結:
資料更新
1、限制更新
限制更新 :即更新時對更新的記錄數進行限制
限制更新通過 limit 來實作,來完成批量小范圍操作 限制更新其實是區域更新的一種手段,實際開發當中,極少出現這類操作,一般都愿意精準操作(利用where條件明確更新條件) 更新操作不可逆
示例
1、對會員選3個發送10元紅包(添加到賬戶)
create table t_1(
id int primary key auto_increment ,
username varchar ( 50 ) not null unique ,
password char ( 32 ) not null ,
account decimal ( 10 , 2 ) default 0.00
) charset utf8;
insert into t_1 values ( null , 'username1' , 'password' , default ) ,
( null , 'username2' , 'password' , default ) ,
( null , 'username3' , 'password' , default ) ,
( null , 'username4' , 'password' , default ) ,
( null , 'username5' , 'password' , default ) ;
update t_1 set account = account + 10 limit 3 ;
資料洗掉
1、限制洗掉
限制洗掉 :限制要洗掉的記錄數
使用 limit 限制洗掉數量 限制洗掉本質也是洗掉,操作不可逆 ,謹慎使用 一般很少使用限制洗掉,通常是通過where條件精確洗掉
示例
1、洗掉沒有賬戶余額的一個用戶(當前用戶量少,一般數量會大些)
delete from t_1 where account = 0 limit 1 ;
2、清空資料
清空資料 :將表中的所有資料清除,并且將表的所有狀態回到原始狀態
清空資料的本質是先洗掉表,后創建表 清空資料能夠讓表的一些變化狀態回到原始狀態
清空語法: truncate 表名 清空資料表是一種比delete更徹底的資料洗掉方式,所以使用之前必須要慎重 一般只會在開發階段才會使用這種資料洗掉操作,如表資料發生錯亂,或者業務發生變化
示例
1、清空用戶資料表
truncate t_1;