5.MySQL基本查询(二)+https://developer.aliyun.com/article/1393868
删除整张表数据
注意:删除整表操作要慎用!
准备一个测试表
这里我们需要注意:如果这个表中有主键,并且自增长,那么使用delete清空这个表中的所有数据时,自增长的值没有被清空,延续上一个最大值。
截断表
语法:
TRUNCATE [TABLE] table_name
试着截断它。
再插入数据时id就会从1开始了。
注意:这个操作慎用
只能对整表操作,不能像 DELETE 一样针对部分数据操作
Delete
删除的知识点在update了,忘记写在这个下面了,哈哈。
插入查询结果
语法:
INSERT INTO table_name [(column [, column ...])] SELECT ...
案例:删除表中的的重复复记录,重复的数据只能有一份
老规矩,先建个新的测试表。
插入几个数据。
还记得我们如何去重的吗?
select distinct * from table_name;
也就是一个拼接。
将旧的t1改名,t2改名为t1,不就相当于给t1表去重了吗。
也可以这么改名。
查看去重结果。
聚合函数
查看一下我们去重后表剩下有多少数据。
测试剩下的数据我们先来建一个新表。
测试sum聚合函数
所有人的总分
每个人的总分
测试avg聚合函数
测试max和min函数
group by子句的使用
在select中使用group by 子句可以对指定列进行分组查询
select column1, column2, .. from table group by column;
准备工作,创建一个雇员信息表(来自oracle 9i的经典测试表)
EMP员工表
DEPT部门表
SALGRADE工资等级表
之后我们向里面插入了部分数据,我们可以开始展示group by的用法了
显示每个部门的平均工资和最高工资
显示每个部门的每种岗位的平均工资和最低工资
显示平均工资低于2000的部门和它的平均工资
- 先从emp中寻找数据
- 再分组
- 按列查询,计算函数
- having条件
having和group by配合使用,对group by结果进行过滤
--having经常和group by搭配使用,作用是对分组进行筛选,作用有些像where。
实战OJ
批量插入数据_牛客题霸_牛客网 (nowcoder.com)
找出所有员工当前薪水salary情况_牛客题霸_牛客网 (nowcoder.com)
查找最晚入职员工的所有信息_牛客题霸_牛客网 (nowcoder.com)
查找入职员工时间排名倒数第三的员工所有信息_牛客题霸_牛客网 (nowcoder.com)
查找薪水记录超过15条的员工号emp_no以及其对应的记录次_牛客题霸_牛客网 (nowcoder.com)
从titles表获取按照title进行分组_牛客题霸_牛客网 (nowcoder.com)
获取所有部门当前manager的当前薪水情况,给出dept__牛客题霸_牛客网 (nowcoder.com)
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台