mysql - 相关内容2

目录

一、函数

二、分组 group by

三、子查询

四、分页查询

 

一、函数 

 
函数:执行特定功能的一段代码块
 
1. 单行函数: 
 
(1) 单行函数:只要有一条数据,执行一次,同时会产生一个对应结果

              注意:单行函数作用在每条数据上,有几条数据,就执行几次

(2) -- 查询每个员工的 名的长度
        
        select employee_id,first_name,length(first_name) from employees
 
        -- 查询当前系统时间
 
        select now() from dual
 
(3) 常见的单行函数:
      
          length('字符串')/length(字段名) 获取字符串长度
 
           now():获取当前系统时间
 
2、组函数:
 
(1) 组函数:作用在提前分好的一组数据上,只要有一个小组数据,则组组函数就执行一次
 
(2) 常见组函数:
 
        sum(列名) :对指定列进行求和
       
         avg(列名): 对指定列进行求平均
        
        min(列名):对指定列求最小值
        
        max(列名):对指定列求最大值  
 
 注意:如果使用组函数时,没有对表中数据进行分组,则整张表默认为一个小组
 
        -- 查询员工表中最高工资
 
        select max(salary) from employees
 
        -- 查询员工表中的平均工资
 
        select avg(salary) from employees
 
注意:这四个组函数在计算时,会忽略null值(null处理为0)
 
(3) 组函数:count(列名)
 
a. 作用:对查询结果中指定字段/列不为空数据进行统计(数据结果不为null)
 
b. 案例:
 
        -- 查询员工表中的员工的人数
 
        select count(employee_id) from employees
 
        -- 查询 员工表中 有提成的员工的人数
 
        select count(commission_pct) from employees
 
c. 统计数据产生条数:count(*)
 
        select count(*) from 表名
 
注意:以上组函数可以应用在 having过滤中,但是不能使用在 where过滤条件中
 

 7dc9bdefd71d4d51a3d92e25494dca36.png

 

二、分组 group by

 
1. 语法:
 
select  字段名1,字段名2  from  表名  where  过滤条件  group by  分组的依据  order by  排序规则
 
--> select ... from ... group by 分组的依据
 
2、案例
 
 
1fd5ba71a1cb453bbea63971ce13defa.png

 

3、having:

(1) 语法:

        select... from... where 对分组之前数据过滤
 
        group by ... having 对分组之后的数据过滤 order by...
 
(2) 作用:having对分组之后的数据进行过滤,作用在 group by的后面
 
(3) 注意:在having 中可以使用组函数
 
(4) 案例:
 
 
1491e64cd68c41ceb0cd307632ff887f.png
 
 
(5) where和having的区别
 
a. where 对分组之前的数据进行过滤   having对分组之后的数据进行过滤
 
b. having中可以使用组函数   where中不能使用组函数
 
c. 如果 进行过滤时,where和having过滤都可以时,建议使用where过滤,提高效率
 
 d. 只有对分组之后的结果进行过滤时,才使用having
 
(6)目前语法
        
        select...from..where.. group by..having..order by
        
 执行顺序:
        
         from:确定数据的来源
 
        where:对原始数据进行过滤,符合条件的留下
 
        group by:根据需求进行分组
        
        having:对分组之后的结果进行过滤
 
        select:确定查询内容
        
        order by:根据指定的字段及规则进行排序
 

三、子查询

 
1. 子查询:在一个查询语句执行过程中,使用了另一个查询语句的结果
 
        (1) 子查询:简单理解为在一个select语句中嵌套另一个select语句
 
        (2) 定义在外面的 select称为主查询 ,定义在里面的 select称为子查询
 
2. 第一种情况:子查询的结果为单个值(一行一列)
 
        (1) 如果子查询的结果为单个数值,可以直接将子查询的结果作为主查询的过滤条件
        
        (2) 案例:
 
 
0bee755acae74d389bb54ca9447a5bf7.png
 
 
3. 第二种情况:子查询的结果为 N行1列
 
        (1) 如果子查询结果为多行1列时,可以将结果直接参与主查询的 in运算(枚举运算)
        
        (2) 案例:
 
 
b39e393a810a458e83e3d838e2ea6804.png
 
 

四、分页查询

 
 
1. 应用场景:将数据库中查询的结果按照 每页显示的条数进行查询(起始条数)
 
2. 语法:
 
        select...from 表名 where...group by..having..order by... limit m,n
 
参数说明:
 
        m:代表查询的起始条数,默认为查询的结果进行编号,编号从0开始
 
        n:代表 查询的条数
 
3.案例:
 
 
6457148508de4d4cba157c36c485aaa2.png
 
 

 

 

 
 
 

 

 
 
        
 

 

 
 

  

 
 
 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值