MySQL数据库中group by语句与update语句的用法研究
2019-09-27孙曼曼河北师范大学附属民族学院
孙曼曼 河北师范大学附属民族学院
MySQL遵循SQL查询的基本语法,但在某些细节方面还是与基本语法有所区别。下面讨论在数据查询、修改中遇到的问题,主要涉及到的语句有group by语句、update语句。
一、MySQL数据库中group by语句的用法
Group by语句的作用是对数据进行分组。
(一)语法
select 列名1,列名2,......,聚合函数(列名)
from 表名
[where.........]
group by 列名1,列名2,......
(二)语法说明
1. group by 子句指定按照哪些列进行分组。
2.可以按照一列进行分组,也可以按照多列进行分组。按多列分组时,各列名之间用逗号分隔。
3.在使用group by子句时,select子句中的任意一列要么包含在聚合函数中,要么必须在group by子句中出现过。
(三)实例
要求从teacher表中,查询各个系男、女教师的人数,其中teacher表的关系模式如下所示:teacher(tno, tname, cno, sal, dname, tsex, tage)
select dname, tsex, count (*) as人数
from teacher
2.2 干预前后两组患者HAMA和HAMD评分比较 干预前两组患者HAMA和HAMD评分比较,差异无统计学意义(P>0.05);干预后,观察组患者HAMA和HAMD评分均较对照组降低,差异有统计学意义(P<0.05),见表2。
group by dname, tsex
order by dname
(四)实际应用用遇到的问题
MySQL中的group by在应用过程中并没有严格的遵守:使用group by 子句时,select子句中的任意一列要么包含在聚合函数中,要么必须在group by中出现过。
例如:我们将上例做如下修改:
select tage, dname, tsex, count (*) as 人数
from teacher
group by dname, tsex
order by dname
分析:Select子句中的tage并没有出现在group by子句中,也没有包含在聚合函数内,但是该查询语句仍能执行并查出结果,系统并没有提示语法错误。虽然语句正常执行了,但是所查出的数据tage并没有实际的意义。
在实际应用中建议遵循:使用group by时,select子句中的任意一列要么包含在聚合函数中,要么必须在group by中出现过。
二、MySQL数据库中update语句的用法
(一)语法
(二)实例
要求将所有教师的年龄增加1岁,同时给所有教师的工资增加10%。
(三)实际应用出现的问题
要求:当男教师的工资低于所有男教师的平均工资时,将该男教师的工资提高5%。
参考答案如下:
update teacher
set sal=sal*1.05
where tsex='男'and sal〈(select avg(sal)from teacher where tsex='男')
分析:在MySQL中执行这条语句,系统提示错误。出现该错误的原因是:在MySQL中,在同一条查询语句中不能直接从某表中查出数据再更新或删除本表中的数据。
修改方法如下:
三、结论
在MySQL数据中使用group by子句时,select子句中的任意一列要么包含在聚合函数中,要么必须在group by子句中出现过;在使用update语句时,在同一条查询语句中不能直接从某表中查出数据再修改本表中的数据。