Day8 MySQL 对表的增删改查2

对表的增删改查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;

3、对表的数据增加 -2

3.1增加多个条件

insert: 创建一条新记录

insert into student (name,id,sex,classname,score,subject)
values ('小紫','1','女','Java10','44','英语');
3.2 复制
-- 一次把语文的记录复制到数学
insert into student (name,id,sex,classname,score,subject) select name,id,sex,classname,score ,
'数学' from  student where subject='语文';

4、排序

order by : 使用order by 列名 -----表示结果根据这个列的值排序 (默认是从小到大,升序
格式: select * from 表名 where 条件 order by 根据的条件;

-- 对班级为Java8的学生的语文成绩进行排序
select * from student where classname='Java8' and subject='语文' order by score;

order by 列名 desc: 从大到小,降序

select * from student where classname='Java8' and subject='语文' order by score desc;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值