-- 老师表
CREATE TABLE teachers(
	id    INT(11) PRIMARY KEY AUTO_INCREMENT, 
	uname VARCHAR(40) NOT NULL COMMENT '老师名',
	age   int(3) NOT NULL COMMENT '年龄',
	sex   INT(1) NOT NULL DEFAULT 0 COMMENT '性别',
	create_time timestamp NOT NULL DEFAULT current_timestamp comment '创建时间'
);

insert into teachers(uname,age) values
("张三老师",62),
("李四老师",32),
("王五老师",39),
("赵六老师",30),
("翠花老师",63),
("小芳老师",36);



-- Mysql 聚合函数

-- AVG函数 老师们的平均年龄
-- AS不仅可以给表起别名 也可以给字段起别名
select AVG(age) as avg_age from teachers;

-- MAX函数 年龄最大的老师
select MAX(age) as max_age from teachers;

-- MIN函数 年龄最小的老师
select MIN(age) as min_age from teachers;

-- SUM函数 老师们的年龄总和
select SUm(age) as sum_age from teachers;

-- COUNT函数 学校有多少位老师
select count(*) as count_age from teachers;




-- 分组查询
-- 语法
-- SELECT 字段列表 FROM 表名 (WHERE 条件) GROUP BY 分组字段 (HAVING 分组过后的条件);
/*
where与having区别
执行时机不同:where是分组前进行过滤,不满足where条件不参加分组。而having是分组之后的结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。
*/

SELECT * FROM teachers;
-- 把李四,赵六,小芳老师的性别改为1;
-- IN 包含了这些值的
-- NOT IN 不包含这些的
update teachers set sex = 1 where id in (2,4,6);

-- 查询 男女老师的年龄最大分别是多少岁 一句话
select max(age),sex from teachers group by sex;

-- 查询 男女老师的人数 且年龄大于31岁
select count(*),sex from teachers where age > 31 group by sex;


-- 查询 男女老师分别的最大年龄 且最大年龄不能为63岁
select max(age),sex from teachers group by sex having max(age) != 63;
select max(age),sex from teachers where age != 63 group by sex;

 

最后修改于 2022-12-20 18:55:23
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇