《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学院为您提供专业教程。