SQL基础3.查询

  1. 分组查询 group by,group_concat : 将多个字符串连接成一个字符串.分组目的:聚合统计。select的非聚合字段 必须在group by 中
    1. select 分组 from stu group by 分组;          
    2.  select gen ,count(*) from stu group by gen;  查询每种gen的总数。先执行分组,然后执行聚合函数在每个分组数据上
    3. select gen ,group_concat(gen) as info from stu group by gen;  图1
    4. select gen,avg(age) from stu group by gen; 查询每个性别的平均身高  图2
    5. select gen ,group_concat(name),avg(age) from stu group by gen having avg(age)>10; 图3

                

 

  1. 对分组之后的数据进行进一步筛选,使用having  不能使用where
    1. select gen,count(*) from stu group by gen having gen =1;
    2. having 和 where的区别
      1. having  是对分组之后的数据进行进一步筛选,有having必然有group by 反之不一定
      2. where 是对元数据进行筛选和操作
  2. 分页查询
    1. 显示从m到n条数据(m<n),跳过m条数据向后找n条 :select * from stu limit m,n; 
    2. limit 要写在后面,select * from stu order by age limit 1,4;
  3. 多表查询
    1. 交叉连接(笛卡尔积查询) select * from table1 , table 2;
    2. 内连接,根据某个条件在两个表中的值都相同时保留下来,进行合并。on和where都可以
      1. select s.*,c.* from stu as s join cla as c on c.cid = s.cid; 默认join是内连接
      2. select s.*,c.* from stu as s inner join cla as c on c.cid = s.cid;
      3. select s.*,c.* from stu as s inner cross cla as c on c.cid = s.cid;
  4. 外连接:左外连接和右外连接,
    1. 左外连接:左表为主表,保留左边全部。不满足条件的部分以null填充
    2. select s.*,c.* from stu as s left {outer} join cla as c on c.cid = s.cid;   outer可以省略
    3. 右外连接:右表为主表,保留右边全部。不满足条件的部分以null填充
    4. select s.*,c.* from stu as s right {outer} join cla as c on c.cid = s.cid;   outer可以省略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值