MySQL数据库中group by语句与update语句的用法研究
作者:孙曼曼
来源:《传播力研究》2019年第27期
作者:孙曼曼
来源:《传播力研究》2019年第27期
摘要:本论文以MySQL数据库为实验环境,讨论当数据进行查询、修改时会遇到的一些问题,并给出具体的解决方案。本论文中主要讨论的语句有group by语句、update语句。
关键词:MySQL数据库;group by语句;update语句
MySQL遵循SQL查询的基本语法,但在某些细节方面还是与基本语法有所区别。下面讨论在数据查询、修改中遇到的问题,主要涉及到的语句有group by语句、update语句。
一、MySQL数据库中group ;by语句的用法
Group by语句的作用是对数据进行分组。
(一)语法
select ;列名1,列名2,......,聚合函数(列名)
from ;表名
[.]
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
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语句的用法
(一)语法
update ; 表名
set ; ; ; ; 列1=值1,
列2=值2,
.........
[where ;………]
(二)实例
要求将所有教师的年龄增加1岁,同时给所有教师的工资增加10%。
update ;teacher
set ; ; ; ;age=age+1,
sal=sal*1.1
(三)实际应用出现的问题
要求:当男教师的工资低于所有男教师的平均工资时,将该男教师的工资提高5%。
参考答案如下:
update ;teacher
set ;sal=sal*1.05
where ;tsex='男'and ;sal<(select avg(sal)from teacher where tsex='男')
分析:在MySQL中执行这条语句,系统提示错误。出现该错误的原因是:在MySQL中,在同一条查询语句中不能直接从某表中查出数据再更新或删除本表中的数据。
修改方法如下:
update ;teacher
set ;sal=sal*1.05
mysql group by order by where ;tsex='男'
and
sal<(select sal
from(select ;avg(sal)as ;sal
from ;teacher
where tsex='男')t)
三、结论
在MySQL数据中使用group by子句时,select子句中的任意一列要么包含在聚合函数中,要么必须在group by子句中出现过;在使用update语句时,在同一条查询语句中不能直接从某表中查出数据再修改本表中的数据。
参考文献:
[1]王丽娟,靳继红.基于MySQL的查询优化技术研究[J].电脑知识与技术,2017(30).
[2]詹重咏.MySQL数据库中数据导入与导出探析[J].数字技术与应用,2017(12).
[3]刘阳娜.大数据下的MySQL数据库的效率优化[J].信息通信,2017(12).
[4]俞海.ORACLE/MYSQL数据库比较应用教学法综述[J].电脑知识与技术,2017(33).
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论