hincky的主页 hincky的主页
  • 学习笔记

    • Vue笔记
    • Vuepress
    • nginx
  • 语言类

    • java
    • go
    • python
    • 设计模式
  • 框架类

    • Spring
    • Spring Security
    • Mybatis
  • 容器技术

    • docker
    • k8s
    • helm
    • prometheus
    • grafana
    • jenkins
  • 命令集合

    • linux命令
    • docker命令
    • git命令
    • vim命令
    • k8s命令
  • 数据库

    • sql
    • mysql
  • 协议

    • 网络模型
    • http/1.1
    • WebSocket
    • http/2
    • TLS/SSL
    • tcp
    • IP
    • tcpdump抓包命令
    • wireshark抓包工具
  • 通用

    • Git
  • 技术分享

    • git push/pull总是超时怎么办
    • idea debug技巧
    • postman使用
    • 问题总结
    • idea使用技巧
  • Oauth2

    • Oauth2原理
  • 项目列表

    • redis项目
    • 微服务项目
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)

Hincky

当有趣的人,做想做的事
  • 学习笔记

    • Vue笔记
    • Vuepress
    • nginx
  • 语言类

    • java
    • go
    • python
    • 设计模式
  • 框架类

    • Spring
    • Spring Security
    • Mybatis
  • 容器技术

    • docker
    • k8s
    • helm
    • prometheus
    • grafana
    • jenkins
  • 命令集合

    • linux命令
    • docker命令
    • git命令
    • vim命令
    • k8s命令
  • 数据库

    • sql
    • mysql
  • 协议

    • 网络模型
    • http/1.1
    • WebSocket
    • http/2
    • TLS/SSL
    • tcp
    • IP
    • tcpdump抓包命令
    • wireshark抓包工具
  • 通用

    • Git
  • 技术分享

    • git push/pull总是超时怎么办
    • idea debug技巧
    • postman使用
    • 问题总结
    • idea使用技巧
  • Oauth2

    • Oauth2原理
  • 项目列表

    • redis项目
    • 微服务项目
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)
  • 数据库

    • sql

      • SQL快查
        • 语句顺序
        • 执行顺序
        • like用法
        • 最值
        • 特殊
        • 子查询
        • 关键字
      • 数据语言
        • DDL 数据定义语言
          • 对库定义
          • 对表定义
        • DML
        • DCL
        • DQL
      • select查询
        • select语句sql关键字顺序
        • sql语句实际执行顺序
        • 提升查询效率的方法
      • where条件查询
        • 比较运算符
        • 逻辑运算符
        • like + 通配符 (小心索引失效)
        • 分组
      • 函数
        • 聚合函数
        • 算术函数
        • 字符串函数
        • 日期函数
        • 转换函数
      • 分组查询
      • 子查询
        • 关联子查询
        • 非关联子查询
        • 集合比较子查询
          • IN 和 EXISTS 如何选择
          • NOT IN 和 NOT EXISTS 如何选择
        • 子查询作为计算字段
      • 多表查询
        • 交叉连接
        • 等值与自然连接
        • 非等值连接
        • 左连接
        • 右连接
        • 自连接
      • 牛客网题目整合
    • MySQL开发规范

    • mysql

    • MySQL调优

    • kafka

  • 网络协议以及抓包工具

  • Git笔记

  • 技术分享

  • Oauth2

  • 计算机相关技术
  • 数据库
  • sql
hincky
2022-10-29
目录

函数

# 函数

# 聚合函数

where后面不能加聚合函数!!

AVG、MAX、MIN 等聚集函数会自动忽略值为 NULL 的数据行

聚集函数 sql例句 备注
总行数COUNT() SELECT COUNT(*) FROM heros WHERE hp_max > 6000,SELECT COUNT(role_assist) FROM heros WHERE hp_max > 6000,SELECT COUNT(DISTINCT hp_max) FROM heros COUNT(role_assist)会忽略值为 NULL 的数据行,而 COUNT(*) 只是统计数据行数,不管某个字段是否为 NULL。
最大值MAX() SELECT MAX(hp_max) FROM heros WHERE role_main = '射手' or role_assist = '射手
最小值MIN() SELECT COUNT(*), AVG(hp_max), MAX(mp_max), MIN(attack_max), SUM(defense_max) FROM heros WHERE role_main = '射手' or role_assist = '射手'
求和SUM() SELECT COUNT(*), AVG(hp_max), MAX(mp_max), MIN(attack_max), SUM(defense_max) FROM heros WHERE role_main = '射手' or role_assist = '射手'
平均值AVG() SELECT COUNT(*), AVG(hp_max), MAX(mp_max), MIN(attack_max), SUM(defense_max) FROM heros WHERE role_main = '射手' or role_assist = '射手'
查询需求 语句 结果
查询射手(主要定位或者次要定位是射手)的最大生命值的最大值是多少 SELECT MAX(hp_max) FROM heros WHERE role_main = '射手' or role_assist = '射手' 6014
求平均值、最大值、最小值,以及总的防御最大值 SELECT COUNT(*), AVG(hp_max), MAX(mp_max), MIN(attack_max), SUM(defense_max) FROM heros WHERE role_main = '射手' or role_assist = '射手'
汉字则按照全拼拼音进行排列 SELECT MIN(CONVERT(name USING gbk)), MAX(CONVERT(name USING gbk)) FROM heros
查询不同的生命最大值的英雄数量是多少。 SELECT COUNT(DISTINCT hp_max) FROM heros

注意:

  • 先把 name 字段统一转化为 gbk 类型,使用CONVERT(name USING gbk),然后再使用 MIN 和 MAX 取最小值和最大值 eg SELECT MIN(CONVERT(name USING gbk)), MAX(CONVERT(name USING gbk)) FROM heros
  • 先用 DISTINCT 函数取不同的数据,然后再使用聚集函数 eg SELECT COUNT(DISTINCT hp_max) FROM heros

# 算术函数

算术函数 sql例句
绝对值ABS() SELECT ABS(-2),运行结果为 2。
取余 MOD() SELECT MOD(101,3),运行结果 2。
四舍五入,小数位数 ROUND() SELECT ROUND(37.25,1),运行结果 37.3。

# 字符串函数

算术函数 定义 sql例句
CONCAT() 多个字符串拼接 SELECT CONCAT('abc', 123),运行结果为 abc123。
LENGTH() 计算字段长度,汉字=3个字符 SELECT LENGTH('你好'),运行结果为 6。
CHAR_LENGTH() 计算字段长度,都记为一个 SELECT CHAR_LENGTH('你好'),运行结果为 2。
LOWER() 小写 SELECT LOWER('ABC'),运行结果为 abc。
UPPER() 大写 SELECT UPPER('abc'),运行结果 ABC。
REPLACE() 替换函数 SELECT REPLACE('fabcd', 'abc', 123),运行结果为 f123d。
SUBSTRING() 截取字符串:源字符串,开始位置,截取长度 SELECT SUBSTRING('fabcd', 1,3),运行结果为 fab。

# 日期函数

日期函数 定义 sql例句
CURRENT_DATE() 系统当前日期 SELECT CURRENT_DATE(),运行结果为 2019-04-03
CURRENT_TIME() 系统当前时间,没有具体日期 SELECT CURRENT_TIME(),运行结果为 21:26:34。
CURRENT_TIMESTAMP() 系统当前时间,日期+时间 SELECT CURRENT_TIMESTAMP(),运行结果为 2019-04-03 21:26:34。
EXTRACT() 抽取具体的年月日 SELECT EXTRACT(YEAR FROM '2019-04-03'),运行结果为 2019。
DATE() 返回时间的日期部分 SELECT DATE('2019-04-01 12:00:05'),运行结果为 2019-04-01。

日期函数的比较,使用DATE(xxx)来进行比较是更安全的

DATE 日期格式必须是 yyyy-mm-dd 的形式。如果要进行日期比较,就要使用 DATE 函数,不要直接使用日期与字符串进行比较

# 转换函数

转换函数 定义 sql例句
CAST() 数据类型转换,参数是一个表达式,通过AS分割原始数据和目标数据 SELECT CAST(123.123 AS INT),运行结果会报错
CAST() 数据类型转换,参数是一个表达式,通过AS分割原始数据和目标数据 SELECT CAST(123.123 AS DECIMAL(8,2)),运行结果为 123.12
COALESCE() 返回一个非空数值 SELECT COALESCE(null,1,2),运行结果为 1

DECIMAL(a,b)来指定小数类型,其中 a 代表整数部分和小数部分加起来最大的位数,b 代表小数位数

编辑 (opens new window)
#SQL
where条件查询
分组查询

← where条件查询 分组查询→

最近更新
01
人生前期重要的能力
05-17
02
防火墙命令
04-11
03
docker-compose部署mysql主从集群
03-22
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Hincky | MIT License | 粤ICP备2022120427号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式