• MySQL6


    流程控制函数

    流程处理函数可以根据不同的条件,执行不同的处理流程,可以在SQL语句中实现不同的条件选择。
    MySQL中的流程处理函数主要包括IF()、IFNULL()和CASE()函数。
    在这里插入图片描述

    SELECT IF(1 > 0,'正确','错误')
    
    • 1

    在这里插入图片描述

    SELECT employee_id,commission_pct,12 * salary * (1 + IFNULL(commission_pct,0)) 'details'
    FROM employees;
    
    • 1
    • 2

    在这里插入图片描述

    SELECT CASE WHEN 1 > 0 THEN '1 > 0' WHEN 2 > 0 THEN '2 > 0' ELSE '3 > 0' END
    
    • 1

    在这里插入图片描述

    SELECT employee_id,salary, CASE WHEN salary>=15000 THEN '高薪' 
    WHEN salary>=10000 THEN '潜力股' 
    WHEN salary>=8000 THEN '屌丝' 
    ELSE '草根' END "描述" 
    FROM employees;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    练习:查询部门号为 10,20, 30 的员工信息, 若部门号为 10, 则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍, 30 号部门打印其工资的 1.3 倍数。

    SELECT last_name,department_id,salary,
    CASE  department_id 
    WHEN 10 THEN salary *1.1
    WHEN 20 THEN salary *1.2
    WHEN 30 THEN salary *1.3
    ELSE salary *1.4
    END 'details'
    FROM employees
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    加密与解密函数

    加密与解密函数主要用于对数据库中的数据进行加密和解密处理,以防止数据被他人窃取。这些函数在保证数据库安全时非常有用。
    在这里插入图片描述

    SELECT md5('123')#202cb962ac59075b964b07152d234b70
    SELECT SHA('Tom123')#c7c506980abc31cc390a2438c90861d0f1216d50
    
    • 1
    • 2

    聚合函数

    聚合(或聚集、分组)函数,是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。

    AVG和SUM函数、 MIN和MAX函数

    可以对数值型数据使用AVG 和 SUM 函数、可以对任意数据类型的数据使用 MIN 和 MAX 函数。

    
    SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary) 
    FROM employees 
    WHERE job_id LIKE '%REP%';
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    COUNT函数

    COUNT(*)返回表中记录总数,适用于任意数据类型。

    SELECT COUNT(*) FROM employees WHERE department_id = 50;
    
    • 1

    在这里插入图片描述

    GROUP BY

    SELECT department_id, AVG(salary) 
    FROM employees 
    GROUP BY department_id;
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    HAVING

    在这里插入图片描述
    过滤分组:HAVING子句

    1. 行已经被分组。
    2. 使用了聚合函数。
    3. 满足HAVING 子句中条件的分组将被显示。
    4. HAVING 不能单独使用,必须要跟 GROUP BY 一起使用。
    SELECT department_id, MAX(salary) FROM employees GROUP BY department_id HAVING MAX(salary)>10000 ;
    
    • 1

    在这里插入图片描述

    WHERE和HAVING的对比

    区别1:WHERE 可以直接使用表中的字段作为筛选条件,但不能使用分组中的计算函数作为筛选条件;HAVING 必须要与 GROUP BY 配合使用,可以把分组计算的函数和分组字段作为筛选条件。
    区别2:如果需要通过连接从关联表中获取需要的数据,WHERE 是先筛选后连接,而 HAVING 是先连接后筛选。
    在这里插入图片描述

    SELECT的执行过程

    查询的结构

    #方式1: 
    SELECT ...,....,... 
    FROM ...,...,.... 
    WHERE 多表的连接条件 
    AND 不包含组函数的过滤条件 
    GROUP BY ...,... 
    HAVING 包含组函数的过滤条件 
    ORDER BY ... ASC/DESC LIMIT ...,... 
    #方式2: 
    SELECT ...,....,... 
    FROM ... JOIN ... 
    ON 多表的连接条件 J
    OIN ... ON ... 
    WHERE 不包含组函数的过滤条件 
    AND/OR 不包含组函数的过滤条件 
    GROUP BY ...,... HAVING 包含组函数的过滤条件 
    ORDER BY ... ASC/DESC LIMIT ...,... 
    #其中: 
    #(1)from:从哪些表中筛选 
    #(2)on:关联多表查询时,去除笛卡尔积 
    #(3)where:从表中筛选的条件 
    #(4)group by:分组依据 
    #(5)having:在统计结果中再次筛选 
    #(6)order by:排序 
    #(7)limit:分页
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    SELECT执行顺序

    1. 关键字的顺序是不能颠倒的:
    SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... LIMIT...
    
    • 1

    2.SELECT 语句的执行顺序

    FROM -> WHERE -> GROUP BY -> HAVING -> SELECT 的字段 -> DISTINCT -> ORDER BY -> LIMIT
    
    • 1
  • 相关阅读:
    分治算法详解
    《Python+Kivy(App开发)从入门到实践》自学笔记:简单UX部件——CheckBox复选框
    JavaScript-Object.defineProperty函数
    两道ospf 网络优化题目解析
    基础设施SIG月度动态:「龙蜥大讲堂」基础设施系列专题分享完美收官,容器镜像构建 2.0 版本上线
    tcp inflight 守恒算法(tcp_ccr)
    【C语言】你还不会指针吗?不妨来一起攻克指针这个难点
    OSG编程指南<一>:OpenSceneGraph 概述
    嵌入式UI框架 LVGL 学习笔记 01 基础概念
    【微信小程序】前端+后端 :第一篇(基于javaweb 案例)
  • 原文地址:https://blog.csdn.net/m0_62497122/article/details/126307536