MySQL快速入门篇---增删改查(下)

发布于:2025-05-02 ⋅ 阅读:(20) ⋅ 点赞:(0)

目录

一、修改(Update)

1.语法

2.示例

二、删除(Delete) 

1.语法

2.示例 

三、聚合函数

1.示例 

1.1、COUNT 

1.2、SUM 

 1.3、AVG

1.4、MAX 

1.5、MIN

 四、分组查询(GROUP BY)

 1.语法

2.示例 

3.Having 


一、修改(Update)

1.语法

UPDATE table_reference SET assignment [, assignment] ... [WHERE where_condition] 
[ORDER BY ...] [LIMIT row_count]

2.示例

我们先定义一个exam表如图所示:

将李星云的语文成绩更改为88分 

update exam set chinese=88 where name='李星云';

其查询结果如下:

将李星云的语文成绩变更为80,数学成绩变更为80 

update exam set chinese=80,math=80 where name='李星云';

 其查询结果如下:

将总成绩倒数前三的3位同学的数学成绩减去10分 

 首先查询总成绩倒数前三的三位同学(有NULL值的成绩不算):

select * from exam where chinese+math+english is not null order by chinese+math+english asc limit 3;

然后更改成绩:

update exam set math=math-10 where chinese+math+english is not null order by chinese+math+english asc limit 3;

然后查询更改后的三位同学的成绩:

select * from exam where name in ('莹勾','上官云阙','旱魃');

 

注意:

• 以原值的基础上做变更时,不能使用math-=10这样的语法

• 不加where条件时,会导致全表数据被更新

二、删除(Delete) 

1.语法

DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]

2.示例 

删除李茂贞的考试成绩

delete from exam where name = '李茂贞';

此时再查询所有同学的信息:

发现已经没有李茂贞的信息,删除成功 

删除整张表的数据 

delete from exam;

三、聚合函数

1.示例 

这里的示例我们依然用exam表 

1.1、COUNT 

 统计exam表中有多少记录

select count(*) from exam;

 其结果如图:

1.2、SUM 

统计所有学生数学成绩总分 

select sum(math) as '数学总分' from exam;

其运行结果如下图:

 1.3、AVG

 统计平均总分

select avg(chinese+math+english) as '平均总分' from exam;

 其查询结果如下:

1.4、MAX 

查询英语最高分 

select max(english) as '英语最高分' from exam;

 其查询结果如下:

1.5、MIN

查询英语成绩最低分 

select min(english) as '英语最低分' from exam;

 其查询结果如下:

 四、分组查询(GROUP BY)

 1.语法

SELECT {col_name | expr} ,... ,aggregate_function (aggregate_expr)
 FROM table_references GROUP BY {col_name | expr}, ... 
 [HAVING where_condition]

 

2.示例 

创建一个示例表 :

create table emp (
 id bigint primary key auto_increment,
 name varchar(20) not null,
 role varchar(20) not null,
 salary decimal(10, 2) not null
);
insert into emp values (1, '张三', '老板', 1500000.00);
insert into emp values (2, '李四', '老板', 1800000.00);
insert into emp values (3, '王五', '会计', 10000.00);
insert into emp values (4, '赵六', '会计', 12000.00);
insert into emp values (5, '钱七', '员工', 9000.00);
insert into emp values (6, '楚八', '员工', 8000.00);
insert into emp values (7, '宋九', '实习', 956.8);
insert into emp values (8, '顾十', '实习', 700.5);
insert into emp values (9, '陈十一', '实习', 333.3);

 统计每个角色的人数

select role,count(*) from emp group by role;

查询结果如下: 

 

3.Having 

使用GROUP BY对结果进行分组处理之后,对分组的结果进行过滤时,不能使用 WHERE 子句,而要使用 HAVING 子句 

显示平均成绩低于1500的角色和它的平均工资

select role,avg(salary) from emp group by role having avg(salary)<1500;

其运行结果如下:

增删改查这一内容到这里就正式结束了,觉得有帮助的各位佬们可以一键三连支持一波,感激不尽!!!


网站公告

今日签到

点亮在社区的每一天
去签到