对查询到的结果进行列值更新
下面有一个表,接下来的操作都是对该表进行操作。
1.将孙悟空同学的数学成绩变更为 80 分
2.将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
3.将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
首先查看后三名的总成绩。
下面进行加分,再查看最后三名。
1.删除孙悟空的成绩
2.删除整张表的数据
首先创建一张表,插入一些数据。
进行删除。
但是注意计数器里的计数并不会清理。
注意:这个操作慎用
1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事物,所以无法回滚。
3. 会重置 AUTO_INCREMENT 项。
创建表,插入数据。
再删除整张表。
但是它的计数器也同样被删掉了。
首先创建一张表,再插入一些数据。
接下来我想要去重。
思路:先准备一张空表,再使用select duplicate得到去重后的数据,再将其插到空表内。
常见的聚合函数包括但不限于以下几种:
COUNT:计算指定列中的行数。
SUM:对指定列中的数值进行求和。
AVG:计算指定列的平均值。
MAX:返回指定列中的最大值。
MIN:返回指定列中的最小值。
首先查看一下表:
1.统计全班的学生数量
2.统计数学成绩有多少
3.统计数学不同分数的个数
5.统计数学成绩的总分
6.统计数学平均分
7.返回英语最高分
8.返回 > 70 分以上的数学最低分
在select中使用group by 子句可以对指定列进行分组查询。
准备工作,创建一个雇员信息表(来自oracle 9i的经典测试表)
1.如何显示每个部门的平均工资和最高工资
2.显示每个部门的每种岗位的平均工资和最低工资
但是如果我想要加上姓名就会发生报错。
它告诉我名字不在分组之内,一般而言只有deptno,job这些聚合条件和min,max这些聚合类可以进行统计。
3.显示平均工资低于2000的部门和它的平均工资
having和group by配合使用,对group by结果进行过滤。
where和having的区别是,它们的条件筛选阶段不同。
SQL查询中各个关键字的执行先后顺序 from > on> join > where > group by > with > having > select > distinct > order by > limit。