站长学院
CMS建站教程 SEO优化攻略
来源:齐鲁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人