SQL语句使用02------select语法

这一章继续以案例的形式讲解,主要是一个select基本的语法格式

 select [all | distinct] 字段或表达式列表 
        [from子句] 
        [where子句] 
        [group by子句] 
        [having子句] 
        [order by子句] 
        [limit子句];

3.查询姓“曾”的老师的个数,名字;

//这里就开始有一些sql的函数在里面了
//这里我们可以试着去说明distinct的作用
//distinct表示去除重复元素,例如我们插入一句:

insert teacher(Tid,Tname) values(007,'曾张老师');
select count(distinct(tname)) from teacher where tname like '曾%';
select count(tname) from teacher where tname like '曾%';

这里写图片描述
//我们再详细的看看

select tname from teacher where tname like ‘曾%’;
select distinct(tname) from teacher where tname like ‘曾%’;

这里写图片描述
//很明显,同样的结果被排除了,这里就是distinct的作用
//因为涉及到了函数,所以这里把函数和分组大概讲解一下
//首先,Select的结构

    select [all | distinct] 字段或表达式列表 
           [from子句] 
           [where子句] 
           [group by子句] 
           [having子句] 
           [order by子句] 
           [limit子句];
  • distinct:

    之前讲了,去掉重复
            1,默认是all,表示允许出现重复行——不写就是all;
            2,distinct:表示不允许出现重复行
    
  • -

from:

    表示从哪个数据表中获取数据,也即是:设定数据源!
    形式:
    from  数据源;
    说明:
    通常,数据源就是一个表名;也可以是子查询表
  • -

where:

    1,where子句,其本质含义是:对from子句中给定的“数据源”中的每一行数据,进行“条件”筛选,并依此筛选出那些符合所设定的条件的行的数据,并取出。
    2,where子句类似php编程语言或js语言中的if子句,最终体现为判断的结果是true或者false!!!

    //之前已经说了,详见上一章

group by子句(分组)

     形式:
     group  by  字段名 【asc|desc】,字段名 【asc|desc】,....;
    说明:
    1,group by子句是用于将“前面!!!”取得的数据,按某种标准(依据)——也就是字段——来进行分组的。
        分组,基本上就是,按给定字段的值,相同的值,分在相同的组中,不同的值分在不同的组中。
    2,asc表示分组后,按组的值的大小正序排列,desc是倒序——默认是正序,可以不写。
    3,一个最重要的理解(观念):分组之后的结果,也是一行一行数据,只是每一行代表“一组”;
        例如:
      select * from student group by ssex;
      //按性别分组

这里写图片描述

     select * from student where sage > 100 group by ssex;
            //此处为空,因为这是对前面的结果分组

这里写图片描述

            select * from student group by sage desc;
            select * from student group by sage asc;
            //这个排序的依据是分组的那个组,并不是把每个组里面分组,而是每个组分组
            //为什么这么说呢,因为我们要涉及到另外一个关键字having(后面)

这里写图片描述

    4.  对于分组查询的结果数据(select子句部分),只能出现如下几类数据
        分组依据字段;(但同样会出现其他字段,但是并不会报错,只不过无意义,因为就是第一行)
        原始字段信息中的数字类型的最大值,最小值,平均值,总和值;
        max(字段):获得该字段的在组中的最大值;
        min(字段):获得该字段的在组中的最小值;
        avg(字段):获得该字段的在组中的平均值;
        sum(字段):获得该字段的在组中的总和值;
        每一组中所包含的原始数据行的行数,获得方式为:count(*)

        例如:
        select * ,count(sage),min(sage),max(sage),avg(sage),sum(sage) from student group by ssex;        

这里写图片描述

-

having子句

    形式:
        having  条件判断
    说明:
    1,一句话,having跟where一样,是用于对数据进行“筛选”的,但区别是:

        having只用于对group by分组之后的“组信息”数据进行筛选!!!!
        where只用于对from子句中所设定的“原始数据”进行筛选!!!!!
        推论: 如果需要,having一定是跟在group by子句之后使用;
        如果需要,where一定是跟在from子句之后使用;
    2,因此,having能用的筛选依据,跟此时group by之后,select子句中可出现的“数据/字段”一样!

    例如:
    select * ,count(sage),min(sage),max(sage),avg(sage),sum(sage) from student group by ssex having ssex ='男';
    select * ,count(sage),min(sage),max(sage),avg(sage),sum(sage) from student group by ssex having sid >1010;

这里写图片描述

  • -

order by 子句

    形式:
    order  by  字段名 【asc|desc】,字段名 【asc|desc】,....

    说明:
    1,用于将“前面!!!”取得是数据(可能进行了筛选和分组),按给定的字段的值的大小和顺序进行排序输出;
    2,asc|desc含义同前;
      select * from student where sid>1010 order by sage desc;

这里写图片描述

limit 子句

    形式:
    limit  起始行号n, 要取出的行数m;
    说明:
    1,用于将“前面”取得的数据,按前面设定的顺序(或默认顺序),取出从哪行开始的多少行;
    2,行号,都是以前面取得的“数据行”为基础,从0开始算起,跟实际数据表中字段值无关

这里写图片描述

总结:

这里写图片描述

至此SQL语句查询的常用操作已经结束了,后面主要就是案例与提醒。
如果感觉还行不要忘了点赞啊!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值