2019-08-23

按照某一个属性降数据进行分组,通过关键字:group by;通常分组会与聚合函数联合使用。

聚合函数常用的有:min,max,sum,avg,count。

比如统计男女生人数

  1. --性别表
  2. create table gendertable(
  3. id int auto_increment primary key,
  4. gender char(10)
  5. )engine=innodb default charset=utf8;
  6. insert into gendertable(gender) values("男"),("女");
  7. --人员表
  8. create table personnel(
  9. id int auto_increment primary key,
  10. name char(10),
  11. gender int not null,
  12. constraint fk_per_gend foreign key gender references gendertable(id)
  13. )engine=innodb default charset=utf8;
  14. select count(gender),max(id),gender from personnel group by gender;

这里注意,对聚合函数的结果进行二次筛选的时候不能用where,而是使用having.

如下是显示统计后,某个gender统计数量大于2的数据

  1. select count(gender),gender from personnel group by gender having count(gender)>2;

查询一个表中总共有多少数据可以用下面方法:

  1. select count(1) from 表名;

将两个或者多个表放在一起查询;

表之间必须有关系映射;

语法格式:关键词on后面加上表之间的映射关系

  1. select 要显示的列或内容 from 1 left join 2 on 1,2之间的关系;

left join会将其左边的表全显示。

也可以实现多张表的连表,只要其中至少两张表之间有关联

  1. select 需显示内容 from 1
  2. left join 2 on 表之间关系
  3. left join 3 on 表之间关系
  4. ···

实例:

  1. --状态表
  2. create table status(
  3. id int not null auto_increment primary key,
  4. sta char(10) not null
  5. )engine=innodb default charset=utf8;
  6. insert into status(sta) values("兴奋"),("高兴"),("平静"),("低落");

  1. create table userinfo(
  2. id int not null auto_increment primary key,
  3. name char(10) not null,
  4. sta_id int not null,
  5. constraint fk_usr_sta foreign key (sta_id) references status(id)
  6. )engine=innodb default charset=utf8;
  7. insert into userinfo(name,sta_id) values("mok",3),("cag",1),("sohh",2),("kaly",4),("doom",3),("jugg",1),("tiger",4),("lion",4);

  1. #连表查询
  2. select name,sta from userinfo
  3. left join status on userinfo.sta_id=status.id;

 

版权声明:本文为sienbo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sienbo/p/11398017.html