-- mysql基础 最后一课
-- 老师表
-- timestamp 时间戳
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,sex) values
("张老师",46,0),
("李老师",76,0),
("王老师",32,1),
("赵老师",72,0),
("钱老师",53,1),
("孙老师",62,1),
("汤老师",38,0),
("朱老师",47,0);


-- 聚合函数

-- 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_num from teachers;

SELECT * FROM teachers;

-- 一句话查询出 张老师 王老师 汤老师三位老师
-- OR 或者
select * from teachers 
where uname = "张老师"
OR uname = "王老师"
or uname = "汤老师";
-- IN 包含了已下任意一个值
-- NOT IN 不包含以下值的
select * from teachers
where uname in ("张老师","王老师","汤老师");


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

-- 查询 男老师和女老师年龄最大分别是多少岁。
select max(age) as max_age,sex from teachers group by sex;

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

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

#----------------  Mysql基础课程 完结 撒花  ----------------------

 

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