-- 老师表
-- timestamp 时间戳
-- 这个默认值为 CURRENT_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
("张老师",62,0),
("李老师",52,0),
("王老师",23,0),
("赵老师",37,0),
("孙老师",39,0),
("吴老师",43,0),
("何老师",51,0),
("黄老师",72,0),
("石老师",39,0),
("刘老师",58,0);

select * from teachers;


-- 聚合函数

-- 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;


-- 一句话 修改赵老师 吴老师 刘老师 孙老师的性别为1
update teachers set sex = 1 
where uname = "赵老师"
or uname = "吴老师"
or uname = "刘老师"
or uname = "孙老师";

-- in 包含了什么值
update teachers set sex = 1 where uname in ("赵老师","吴老师","刘老师","孙老师");

select * from teachers;

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


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

-- 查询男女老师的人数 且年龄不能为72岁
select count(*) as count_num,sex from teachers where age != 72 group by sex;

-- 查询男女老师的最大年龄 年龄不能大于70岁
select max(age) as max_age,sex from teachers where age < 70 group by sex;
select max(age) as max_age,sex from teachers group by sex having max(age) < 70;


# ------------- mysql 基础 到此位置  完结了 撒花  ---------------



 

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