《Mysql學習詳解MySQL中的分組查詢與連接查詢語句》要點:
本文介紹了Mysql學習詳解MySQL中的分組查詢與連接查詢語句,希望對您有用。如果有疑問,可以聯系我們。
MYSQL應用分組查詢 group by
group by 屬性名 [having 條件表達式][ with rollup]
“屬性名 ”指依照該字段值進行分組;“having 條件表達式 ”用來限制分組后的顯示,滿足條件的結果將被顯示;with rollup 將會在所有記錄的最后加上一條記錄,該記錄是上面所有記錄的總和.
MYSQL應用1)單獨使用
group by 單獨使用,查詢成果只顯示一個分組的一條記錄.
實例:
MYSQL應用
select * from employee group by sex;
MYSQL應用將只顯示男女兩條記錄.
MYSQL應用2)與group_concat()函數一起使用
每個分組中指定字段值都顯示出來
實例:
MYSQL應用
select sex,group_concat(name) from employee group by sex;
MYSQL應用顯示成果中“女”會顯示所有sex為“女”的名字name
MYSQL應用
sex | group_concat(name)
女 | 小紅,小蘭
男 | 張三,王五,王六
MYSQL應用3)與集合函數一起使用
實例:
MYSQL應用
select sex,count(sex) from employee group by sex;
MYSQL應用成果:
MYSQL應用
sex | count(num)
女 | 1
男 | 3
MYSQL應用count()為計算個數的辦法.
MYSQL應用4)與having一起使用
“having條件表達式”,可以限制輸出成果.只有滿足條件表達式的成果才顯示.
實例:
MYSQL應用
select sex,count(sex) from employee group by sex having count(sex) >= 3;
MYSQL應用成果:
MYSQL應用
sex | count(sex)
男 | 3
MYSQL應用“having條件表達式”作用于分組后的記錄.
MYSQL應用5)按多字段進行分組
MYSQL應用
select * from employee group by d_id,sex;
MYSQL應用查詢成果先按d_id分組,再按sex進行分組
MYSQL應用6) 與with rollup一起使用
使用with rollup將會在所有記錄的最后加上一條記錄,這條記錄是上面所有記錄的總和
實例:
MYSQL應用
select sex,count(sex) from employee group by sex with rollup;
MYSQL應用成果:
MYSQL應用
sex | count(sex)
女 | 1
男 | 5
null | 6
MYSQL應用如果是字符串的話,好比姓名就會生成“張三,李四,王五”這種類型的結果,即name總和.
MYSQL應用連接查詢
將兩個及兩個以上的表連接起來選取所需數據.
MYSQL應用1)內連接查詢:
當兩個表中具有相同意義的字段值相等時,就查詢出該條記錄.
實例:
MYSQL應用2)外連接查詢
select 屬性名列表 from 表名1 left|right join 表名2 on 表名1.屬性名1=表名2.屬性名2;
左連接查詢:
進行左連接查詢時,可以查出表名1中所指的表中所有記錄.而表名2所指表中,只能查詢出匹配的記錄.
實例:
MYSQL應用右連接查詢:
與左連接相反,可以查詢出表名2中的的所有記錄,而表名1中所指的表中,只查詢出匹配的記錄.
MYSQL應用
PS:使用集合函數查詢
集合函數包含count(),sum(),avg(),max()和min().
1)count()函數
統計記錄條數
實例:
MYSQL應用
select count(*) from employee;
MYSQL應用與group by一起使用
MYSQL應用
select d_id,count(*) from employee group by d_id;
MYSQL應用上述語句會先分組后統計.
MYSQL應用2) sum()函數
sum()函數是求和函數
實例:
MYSQL應用
select num,sum(score) from grade where num= 1001;
select num,sum(score) from grade group by num;
MYSQL應用sum()只能計算數值類型字段.
3)avg()函數
avg()函數是求平均值函數.
實例:
MYSQL應用
select avg(age) from employee;
select course,avg(score) from group by course;
MYSQL應用4)max(),min()函數
求最年夜值和最小值.
實例:
select max(age) from employee;
select num,course,max(score) from grade group by course;
對于字符串的最年夜值問題,max()函數是使用字符對應的ascii碼進行計算的.
歡迎參與《Mysql學習詳解MySQL中的分組查詢與連接查詢語句》討論,分享您的想法,維易PHP學院為您提供專業教程。