MySQL:DQL(数据查询)语句(一):基本查询、模糊查询、聚合函数、having子句

目录

1.普通查询:

     注意:order by 后面如果没有添加 asc/desc,默认为asc升序

2.待条件查询、模糊查询:

         3.聚合函数、处理字符、数据函数:

        A.聚合函数(5个)

        B:常用字符处理函数

        C:数值处理函数

          4.分组查询(group by)

          5.having子句


一、select语句:

1.普通查询:

a、查找全部Values
   

 select *  from 表名

b、查找部分列值
   

select  列1,列2,列3…… from 表名

c、别名

    c1.列名+空格+别名
    c2.列名  as  别名

d、排序:分为升序asc、降序desc

     select 列1 as 别名1,列2 as 别名2…
     from 表名
     order by  列1/别名1 asc

     注意:order by 后面如果没有添加 asc/desc,默认为asc升序
     双排序:第一个列相同,按照第二个排序;中间逗号隔开
  
      select 列1 as 别名1,列2 as 别名2…from 表名
      order by  列1/别名1 asc,列2/别名2 asc

2.待条件查询、模糊查询:

a、select 列1 as 别名1,列2 as 别名2 ……from 表名 as 别名
      where  筛选条件
       between  and  
       is(判断是否为空;is null;is not null)
b、in:一个列后面跟多个值;
   
格式: 列名  in(列值1,列值2,列值3……)
            Not in(列值1,列值2,列值3……)  查询同一个列的
                                            不在多个值里面的;
c、关系运算符:>,<,<=,>=,<>,!=,==;

d、模糊查询:select 列1 as 别名1,列2 as 别名2……
              from 表名 as 别名
              where 列名 like %k_

              %:多个任意字符;
              _:一个任意字符;

e、逻辑关系符:
    and     or    not

3.聚合函数、处理字符、数据函数:

A.聚合函数(5个)

a1:count(*/列名)
     解释:“*”统计查询表中数据的总条数
           “列名”统计查询的列名的数据为Not Null的总条数

a2:sum(列名):
   解释:计算该列中值的总和
eg:select sum(sal)from emp;

a3:avg(列名):计算列值的平均值
           Eg:select  avg(sal) from  emp;

a4:max(列名):求最大值
eg:select  max(sal) from emp;

a5:min(列名):求最小值
eg:select min(sal) from emp;

B:常用字符处理函数

b1:distinct:去除重复的列值
用法:
    select  distinct(列1),distinct(列2),列3…
    from 表名

注意:这是Oracle公司专有的;

b2:nvl(列名,默认值):
   用法:使数据类型的列都能进行算术运算;
         1)若:列名中的列值不为空,
            则:nvl(列名,默认值)为正常的列值;
         2)若:列名中的列值为Null,
            则:nvl(列名,默认值)为默认的数据值;

注意:任何为数据用“+”与null连接,返回的值都为Null;

b3:length(列名/字符串):统计当前列值/字符串中字符的个数

b4:upper(列名/字符串):当前列中的列值或者字符串中的字符小写修改为大写;

b5:lower(列名/字符串):将当前列值/字符串中的大小修改为小写;

b6:substr(列名/字符串,数据1,数据2)
   解释:列名/字符串:表示从列值/字符串中截取
         数据1:从哪个字符开始截取(从1开始数,往后截取);
                如果为负数,则表示倒数的位置的字符开始,
                往后截取
         数据2:表示截取的个数;

b7:trim(列名/字符串):删除列值/字符串中,两端的空格;
     Eg:select trim(‘   hello  world   ’)from dual  ;只删除两端的空格,中间的不删除;

b8:串联字符串的方式:

`b8:1、||:数据库中连接字符串的

`b8:2、concat(字符串1,字符串2):同样也是连接字符串

C:数值处理函数

c1:abs(列名/数值):求出绝对值

c2:sqrt(数值):求数据的平方根

c3:power(底数,指数):求乘方

c4:mod(数据1,数据2):求余数/取模

c5:sign(数值):判断数值的正负性;

    Select  sign(-100)from  dual   --  结果:-1
    Select  sign(0)from  dual    --   结果:0
    如果数值是正数,返回值是1,;如果数值是负数;返回值是-1;如果数值是0,返回值是0;

c6:round(数值1,数值2):表示四舍五入;

    解释:数值1表示:要参与四舍五入的数值;
          数值2表示:
                    1)如果是正数,表示要保留几位小数
                    2)如果是0,表示仅留整数
                    3)如果是负数,表示要对小数点之前的几位进行四舍五入

c7:trunc(数值1,数值2):截取数值
     解释:1)数据1:要参与截取的数据
           2)数据2:
                     a、如果是整数,表示截取后,保留几位小数
                     b、如果是0,表示舍弃所有小数
                     c、如果是负数,表示从小数点前几位开始舍弃

c8:ceil(数值);表示向上取整
      eg:ceil(1.99999999)-------结果:2

c9:floor(数值):表示向下取整;
     eg :floor(1.999999999)----结果:1

4.分组查询(group by)

一、分组:根据某一个列将表中的数据分成几组,然后对每一组的数据使用聚合函数(分组函数)。
    1、    格式:
            Select  列名/聚合函数  from  表名
            Where  条件
            Group by  列名
            Order by  列名/别名/聚合函数  asc/desc
    2、    执行的顺序:首先执行where条件,对表中所有的数据进行过滤
                    然后执行group by 根据某一个列进行分组(对分组以后的每一组数据使用聚合函数)
                    最后order by 对查询返回的结果进行排序。

5.having子句

1)    格式:
Select  列名/聚合函数
From 表名
Where 条件:对整张表的数据进行过滤
Group by  列名 :分组
having 子句:对分组以后的数据再次进行过滤
order by 列名/聚合函数/别名  asc /desc

2)    执行的顺序:首先where条件,对表中所有的数据进行过滤,然后group by ,根据某一个列对余下的数据进行分组,
                之后执行having子句对分组后的数据再次进行过滤,而且经常跟聚合函数结合使用,
                最后使用order by 进行排序。【为WHERE过滤指定的是行而不是分组。事实 上,WHERE没有分组的概念;;;。HAVING非常类似于WHERE。事实上,目前为止所 学过的所有类型的WHERE子句都可以用HAVING来替代。唯一的差别是 WHERE过滤行,而HAVING过滤分组】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值