对表的增删改查2
1、对列的增改
1.1新建列
ALTER:
修改现存数据库对象,比如一张表
-- 对已存在的表,再添加一个新列
ALTER TABLE `user` ADD sex varchar(1) NULL;
alter table student add subject varchar(10) null;
格式:
- ALTER TABLE 表名 ADD 列名<字段> 列名数据类型 值;
1.2同时修改多个列的值
UPDATE: 修改记录
update user set age=18,sex='男' where name='小明';
update user set age=16,sex='女' where name='小红';
格式:
- update 表名 set 列名=‘值’,列名=‘值’ where 列名=‘值’;
- 注意: int类型不需要 ’ ’ 用逗号","连接两个列
2、对表的查询-2
SELECT: 从一张或者多张表中检索特定的数据
2.1对多个条件进行查询
用and连接
-- 查询大于18岁的男生
select * from user where sex='男' and age>18;
-- 查询结果只需要名字
select name from user where sex='女' and age>18;
用or连接 :或者
-- 查询班级是Java10或者Java9的学生
select * from student where classname='Java10' or classname='Java9';
注意: * 表示所有列
select name,pwd from user where name='小李' and pwd='123';//显示name pwd
select * from user where name='小李' and pwd='993';//显示所有列
2.2统计
count(): count是MySQL自带函数 :表示统计记录条数
格式: select count(*) from 表名 where 列名 group by 列名 having 条件
-- 统计男生人数
select count(*) from user where sex='男';
分组调查,分别统计: 使用 ------group by 根据什么来分组
group by 语句用于结合聚合函数,根据一个或多个列对结果集进行分组
-- 根据性别分组,分别有多少人
select count(*),sex from user group by sex;
select count(*) as '总人数',sex '性别' from user group by sex;
注意: 取别名,用as, 当然as 也可以不写,用空格代替
-- 每个班有多少人语文成绩大于80
select count(*),classname,subject from student where subject='语文' and score>80
group by classname;
-- 查询,优秀人数大于2的班级
select count(*),classname,subject from student where subject='语文' and score>80
group by classname having count(*)>2;
注意: where 和 having 的区别 :1、分组以后再过滤只能用用having 2、group by 后面只能用having 3、where用于表名的后面,用来过滤查询结果
2.3 计算平均值
avg()
格式: select avg(条件列名) from 表名 where 列名;
-- 计算男生的平均年龄
select avg(age) from user where sex='男';
-- 统计Java10 的平均成绩
select avg(score) from student where classname='Java10';
-- 统计Java10 的每一科的平均成绩
select avg(score),subject from student where classname='Java10' group by subject;
2.4 最大值 最小值
max() min()
格式: select max()\min() from 表名;
-- 找出整个用户表的 最大年龄
select max(age) from user;
-- 最小年龄
select min(age) from user;