15621857753

mysql数据库查询方法:Where 与 Group By

来源:齐鲁CMS 栏目:Mysql 阅读: 日期:2024-09-28

mysql数据库查询方法:Where 与 Group By

24.修改变量

-- >set character_set_client=gbk;

25.主键操作

-- >alter table my_teacher add primary key(username); //增加主键

-- >desc my_teacher; // 查看主键 key 

-- >alter table my_teacher drop primary key; //删除主键

26.主键冲突更新(两种方法)

-- >insert into my_student values('stu0004','小婷') on duplicate key update name = '小婷';

-- >replace into my_student values('stu0001','夏洛'); //替换

27.查询数据

-- >select all * from 表名; //查询所有数据(包括重复的)

-- >select distinct * from 表名; //查询所有数据(去掉重复的)

-- >select * from 表1,表2……; //查询多张表,不建议这种方式(记录数相乘,字段数拼接,笛卡尔积)

-- >select * from (select 字段1,字段2…… from 表名) as 别名表; // from后面一定要用as别名

28.where子名

从数据表获取数据的时候,进行条件筛选

-- >

29.Group by 子句

根据指定的字段,将数据进行分组:分组的目标是为了统计

1)分组统计,语法:group by 字段名;(只保留每组第一条记录)

-- >select * from my_student group by class_id; //根据班级ID分组

2)聚合函数分组:按照班级统计每班人数,最大年龄,最矮的身高,平均年龄

-- >select class_id,count(*),max(stu_age),min(stu_height),avg(stu_age) from my_student;

count():统计数量

avg():求平均值

sum():求和

max():求最大值

min():求最小值

3)使用 group_concat 改造上面的语句:

-- >select class_id,group_concat(stu_name),count(*),max(stu_age),min(stu_height),avg(stu_age) from my_student;

Group_concat():字符串拼接

4)多分组:将数据按照某个字段进行分组之后,对已经分组的数据进行再次分组

基本语法:group by 字段1,字段2;// 先按照字段1进行排序,之后将结果再按照字段2进行排序,以此类推

案例:以班级class_id为单位查询性别gender,并且计算男女数量count(*),然后将姓名stu_name放一个表里

-- >select class_id,gender,count(*),group_concat(stu_name) from my_student group by class_id,gender;

改进上述案例:班级升序,性别降序

-- >select class_id,gender,count(*),group_concat(stu_name) from my_student group by class_id asc,gender desc;

5)回溯统计:多分组后,层层上报,这个过程叫回溯统计

基本语法:group by 字段 [asc|desc] with rollup;

案例:统计每个班级class_id的人数count(*)

-- >select class_id,count(*) from my_student group by class_id; //比如 1班3人,2班3人

改进上述案例: 增加 回溯统计

-- >select class_id,count(*) from my_student group by class_id with rollup; //出现新class_id为 6人