MYSQL知识点(二)


#
selectfrom之间的字段信息可以表示整个组的信息

#count(*) 表示计数,就是统计每一组的记录条数

#as示为字段重命名

#max()表示这一组中某个字段的最大值,适用于数值型

#min()示这一组中某个字段的最小值,适用于数值型

#avg()表示这一组中某个字段的平均值,适用于数值型

#sum()表示这一组中某个字段的和,适用于数值型

#group by表示根据哪一个字段来分组

select sex as 性别, count(*) as 人数, max(age) as 最大年龄, min(id) as 最小id, avg(id) as 平均id, sum(age) as 年龄和

from stu 

group by sex;

 

#先通过where过滤满足条件的记录,然后再根据group by来分组

select  sex, count(*) as 人数 

from stu 

where id>2 and id<10 

group by sex;

 

1where根据条件过滤记录

2group by分组

3having在分组后再过滤

 

select sex, count(*) as 人数 

from stu 

where age>20 

group by sex 

having count(*)>1;

 

 

1、根据where过滤满足条件的记录

2、根据group by对过滤后的记录进行分组

3、根据having对分组后的数据再过滤

4、根据order by进行排序(根据组的信息来排序)ASC表示升序(默认)DESC表示降序

select addr, count(*) as 人数 

from stu 

where id not in(10) 

group by addr

having count(*)>0 

order by count(*) desc;

 

 

#查询id不等于10的所有记录的所有字段值,并且对age进行排序显示

select * 

from stu 

where id not in(10) 

order by age;

 

#笛卡尔积:两张表中所有的记录都两两组合

select * from tstu, tclass;

 

#过滤笛卡尔积中满足条件的记录(条件是stu表中的外键值等于class表中的主键值)

select * from tstu, tclass 

where tstu.f_tclass_id=tclass.id;

 

 

#指定显示两张表中的某些字段信息,

#from tstu s表示为tsu表定义一个对象

select s.id, s.name, s.sex, s.age, s.money, c.className 

from tstu s, tclass c     //此处是将表取别名

where s.f_tclass_id=c.id;

 

 

 

 

#1、查询班级名称、学生姓名、性别、缴费、

#2、相同班级的要放在一起,

#3、姓名根据字典顺序排列(默认升序)

#desc表示降序

select c.className, s.name, s.sex, s.money

from tstu s, tclass c 

where s.f_tclass_id=c.id 

order by c.id desc, s.name desc;

 

 

 

#查询各班级的名称和人数

#where过滤笛卡尔积

#group by分组查询

#order by对分组的信息进行排序

select c.className, count(*) as 人数 

from tstu s, tclass c

where s.f_tclass_id=c.id 

group by c.id 

order by count(*);

 

1、查询各班名称和人数-->group by

2、但人数必须不少于2-->having

3、人数多的放在前面-->order by

select c.className as 班级, count(*) as 人数

from tstu s, tclass c 

where s.f_tclass_id=c.id 

group by c.id 

having count(*)>=2

order by count(*) desc;

 

#查询没有人员的班级

#等价于select c.id, c.className from tclass c where id not in(1,2);

select c.id, c.className

from tclass c 

where id  in(

select distinct s.f_tclass_id 

from tstu s

);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值