表达式和函数
表达式:
将数字和运算符连接起来的组合称为表达式。我们可以将数字称为操作数,单个操作数也可以被看作是一个表达式。
操作数:常数,列名,函数调用,其他表达式
运算符:算数运算符,比较运算符,逻辑运算符
介绍几个比较哦特殊的:
a DIV b:除法, 取商的整数部分
a XOR b:a和b有且只有一个为真时,表达式为真。
在上一章我们学到比较表达式。又比较运算符连接而成的表达式也称为布尔表达式,除非表达式中包含NULL,否则布尔表达式的结果只能是1或者0
表达式的使用:
把这些操作数和运算符相互结合起来就可以组成表达式
1.作为计算字段放在select子句中
查询列表处的每个表达式都会被当作结果集中的一个列。
2.作为搜索条件放在where子句中
其实在where子句中可以放置任意的表达式,在读取某条记录时,只要where子句中表达式的结果不为0或者NULL,那么该纪录就会被加入到结果集。
表达式中的NULL:
NULL作为算数运算符的操作时,表达式的结果都为NULL。
除<=>,is NULL,is not NULL 外,NULL作为其余比较运算符的操作数时,表达式的结果都为NULL。
函数:
字符串处理函数:
left('abc123', 3): 给定字符串从左边取指定长度的子串。
right(.....................给定.....从右边...............
length('abc') 给定字符串占用的字节数量
lower(’ABC') 给定字符串转换成小写
upper('abc') 给定字符串转换成大写
ltrim(' abc') 给定字符串左边空格去除后的格式
rtrim('abc ') 给定字符串后边空格去除后的格式
substring('abc123', 2, 3)给定字符串从指定位置截取指定长度的子串
concat(‘abc', '123', 'xyz')将给定的各个字符串拼接成一个新的字符串
char_length(’狗哥') 给定字符串的字符数量。
日期和时间处理函数:
now()返回当前日期和时间
curdate()返回当前日期
curtime()返回当前时间
date()将给定的日期和时间值的日期提取出来
date_add()将给定的日期和时间值添加指定的时间间隔;
date_sub(‘.....' interval * 单位)将给定的日期和时间值减去指定的时间间隔
datediff()返回两个日期之间的天数(负数表示前一个参数代表的日期比后一个参数代表的日期小)
data_format(now(), '%m-%d-%y')用给定的格式显示日期和时间
year()提取年份
month()提取月份
day()提取日
hour()提取小时
minute()提取分钟
second()提取秒
在使用date_add和sub的时候注意我们的单位有这些:
microsecond 毫秒
second 秒
minute 分钟
hour 小时
day 天
week 周
month 月
quarter 季度
year 年
在使用date_format是我们可以通过一些所谓的格式符来自定义显示格式:
%b, 简写的月份名称(jan,feb....)
%D, 带有英文后缀的月份中的日期(0st, 1st, 2st....)
%d, 数字格式的月份中的日期(00,01.....)
%f 微秒
%H 24小时制的小时(00~24)
%h 12小时制的小时(00~12)
%i 数值格式的分钟(00~59)
%M 月份名(january,February.....)
%m 数值形式的月份(00~12)
%p 上午或下午
%s 秒(00~59)
%S 秒(00~59)
%W 星期名(sunday,monday....)
%w 周内第几天(0=星期日,1=星期1, .....)
%Y 四位数数字形式的年(例如2023)
%y 两位数数字形式的年(例如23)
数值处理函数:
abs()取绝对值
pi()返回圆周率
cos ()返回一个角度的余弦
sin()返回一个角度的正弦
tan()返回一个角度的正切
pow()返回某个数的指定次幂
sqrt()返回一个数的平方根
mod() 返回除法的余数
rand() 返回一个随机数
ceil()返回不小于给定值的最小整数
floor()返回不大于给定值的最大整数
流程控制表达式和函数:
语法:
case when 表达式1 then 结果1[when 表达式2 then 结果2.....] else 默认结果 end
当表达式1为true时就返回结果1
一定要记得写末尾的end!!
mysql> select *,
-> case when score<60 then 'bujige'
-> when score<90 then 'hege'
-> else 'youxiu' end as level
-> from student_score;
+-----------+--------------------+-------+-------+
| number | subject | score | level |
+-----------+--------------------+-------+-------+
| 220101101 | 计算机是怎样运行的 | 78 | hege |
| 220101102 | 计算机是怎样运行的 | 79 | hege |
| 220101103 | 计算机是怎样运行的 | 78 | hege |
| 220101104 | 计算机是怎样运行的 | 77 | hege |
| 220101105 | 计算机是怎样运行的 | 77 | hege |
+-----------+--------------------+-------+-------+
5 rows in set (0.01 sec)
if语句:
语法:if(表达式1, 表达式2, 表达式3)
含义是当表达式1为true时,返回值就为表达式2, 否则为表达式3
ifnull语句:
语法:ifnull(表达式1, 表达式2)
含义是当表达式1为NULL时,返回值就为表达式2,否则返回表达式1.
nullif语句:
语法:nullif(表达式1, 表达式2)
含义是当表达式1的值和表达式2的值相同时,函数返回值为NULL,否则返回表达式1.
汇总函数:
max(表达式)
从匹配的结果中返回表达式对应列的最大值;
mysql> select max(score) from student_score;
+------------+
| max(score) |
+------------+
| 79 |
+------------+
1 row in set (0.01 sec)
min(表达式)
从匹配结果中返回表达式对应列的最大值
sum(表达式)
求和的意思
avg(表达式)
取平均数
count(操作数)
对列中的某个值进行计数
mysql> select count(1) from student_score;
+----------+
| count(1) |
+----------+
| 5 |
+----------+
1 row in set (0.00 sec)
隐式类型转换:
只要某个表达式的类型与上下文要求的类型不符合,MySQL就会根据上下文环境中需要的类型对该表达式进行类型转换。由于这些类型转换是MySQL自动完成的,所以也称为隐式类型转换。
1.将操作数类型转换为运算符需要的类型
比如把字符串’1‘和1进行相加,MySQL就会自动把字符串’1‘ 自动转换为1的整形进行相加
如果字符串中包含其他字符或者字母的话就会从第一个字符进行判断最长的数字是多少就是多少你,比如’123asd‘,这个就会转换成123.其实,当字符串类型的表达式与其他类型的表达式进行算数运算,比较大小,已经进行逻辑判断时,都会被转换成double类型。
2.将函数参数转换成该函数期望的类型
3.在where子句中,单独的字符串类型的表达式会被转换为double类型的数值
mysql> select 5 where '2a';
+---+
| 5 |
+---+
| 5 |
+---+
1 row in set, 1 warning (0.01 sec)
这里的2a就转换成了2,所以查询结果不为空集
4存储数据时,把某个值转换成某个列所需要的类型
相关文章:
表达式和函数
表达式: 将数字和运算符连接起来的组合称为表达式。我们可以将数字称为操作数,单个操作数也可以被看作是一个表达式。 操作数:常数,列名,函数调用,其他表达式 运算符:算数运算符,…...
C#基础复习
目录 格式字符串 多重标记和值 预定义类型 用户定义类型 值类型和引用类型 存储引用类型对象的成员 C#类型的分类 静态类型和dynamic关键字 类的基本概念 类成员的类型 为数据分配内存 访问修饰符 格式字符串 多重标记和值 C#程序就是一组类型声明,学习C#就是学习…...
Windows服务器使用代码SSH免密登录并执行脚本
服务器操作系统 Window Server 2016 1、Windows服务器安装OpenSSH 有多种方式,本文介绍一种方式 下载页: https://github.com/PowerShell/Win32-OpenSSH/releases 在下载页下载文件OpenSSH-Win64.zip 本次实验解压至 D:\OpenSSH-Win64\OpenSSH-Win6…...
(Deep Learning)交叉验证(Cross Validation)
交叉验证(Cross Validation) 交叉验证(Cross Validation)是一种评估模型泛化性能的统计学方法,它比单次划分训练集和测试集的方法更加稳定、全面。 交叉验证不但可以解决数据集中数据量不够大的问题,也可以…...
通俗举例讲解动态链接】静态链接
参考动态链接 - 知乎 加上我自己的理解,比较好懂,但可能在细节方面有偏差,但总体是一致的 静态链接的背景 静态链接使得不同的程序开发者和部门能够相对独立的开发和测试自己的程序模块,从某种意义上来讲大大促进了程序开发的效率…...
K8S部署常见问题归纳
目录一. 常用错误发现手段二、错误问题1. token 过期2. 时间同步问题3. docker Cgroup Driver 不是systemd4. Failed to create cgroup(未验证)子节点误执行kubeadm reset一. 常用错误发现手段 我们在部署经常看到的提示是: [kubelet-check] It seems …...
Redis高可用
最近离职后还没开始找工作,在找工作前去学习一下Redis高可用方案。 目录Redis高可用高可用的概念实现方式持久化主从复制简单结构优化结构优缺点哨兵模式(Sentinel)哨兵进程的作用自动故障迁移(Automatic failover)优缺点集群优缺点Redis高可…...
Hyperledger Fabric 2.2版本环境搭建
前言 部署环境: CentOS7.9 提前安装好以下工具 git客户端golangdockerdocker-composecurl工具 以下是个人使用的版本 git: 2.39.2golang: 1.18.6docker: 23.0.3dockkekr-compose: v2.17.2curl: 7.29.0 官方文档参考链接:跳转链接,不同的版本对应的官…...
macOS Monterey 12.6.5 (21G531) Boot ISO 原版可引导镜像
本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持在 Windows 和 Linux 中创建可引导介质。 2023 年 4 月 10 日(北京…...
【软件设计师13】数据库设计
数据库设计 1. 数据库设计过程 2. E-R模型 3. E-R图向关系模型的转换 例如一对一联系,可以将联系单独做为关系模式,也可以存放到任意一个实体中 而一对多要合并只能合并到多这边,不能存放到1 多对多则联系必须单独转成一个关系模式 4. 案…...
SpringMVC的全注解开发
文章目录一、spring-mvc.xml 中组件转化为注解形式二、DispatcherServlet加载核心配置类三、消除web.xml一、spring-mvc.xml 中组件转化为注解形式 跟之前全注解开发思路一致, xml配置文件使用核心配置类替代,xml中的标签使用对应的注解替代 <!-- 组件…...
C# | 导出DataGridView中的数据到Excel、CSV、TXT
C# | 导出DataGridView中的数据到Excel、CSV、TXT 文章目录C# | 导出DataGridView中的数据到Excel、CSV、TXT前言DataGridView数据转存DataTableDataTable转Excel方法一、使用Microsoft.Office.Interop.Excel方法二、使用EPPlus库方法三、使用NPOI库DataTable转CSVDataTable转T…...
新规拉开中国生成式AI“百团大战”序幕?
AI将走向何方? ChatGPT在全球范围掀起的AI热潮正在引发越来越多的讨论,AI该如何管理?AI该如何发展?一系列问题都成为人们热议的焦点。此前,马斯克等海外名人就在网络上呼吁OpenAI暂停ChatGPT的模型训练和迭代…...
日撸 Java 三百行day31
文章目录day31 整数矩阵及其运算面向对象思想java异常处理java中的getter和setter方法代码day31 整数矩阵及其运算 面向对象思想 结合之前day7和day8面向过程开发,只关注了矩阵加法和矩阵乘法的功能。而day31是面向对象开发,一个矩阵类,在这…...
在线绘制思维导图
思维导图是一种可视化的思维工具,它可以将放射性思考具体化为可视的图像和图表。 思维导图利用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级图表现出来,把主题关键词与图像、颜色等建立记忆链接。 它运用图像和颜色等多种元素&…...
月薪20k的性能测试必备技能:发现性能瓶颈掌握性能调优
背景 当下云计算、大数据盛行的背景下,大并发和大吞吐量的需求已经是摆在企业面前的问题了,其中网络的性能要求尤为关键,除了软件本身需要考虑到性能方面的要求,一些硬件上面的优化也是必不可少的。 作为一名测试工作者…...
3、Web前端学习规划:CSS - 学习规划系列文章
CSS作为Web前端开发的第2种重要的语言,笔者建议在学了HTML之后进行。CSS主要是对于HTML做一个渲染,其也带了一些语言语法函数,功能也非常强大。 1、 简介; CSS(层叠样式表)是一种用于描述网页样式的语言。它可以控制网页中的字体、…...
城市轨道交通列车时刻表优化问题【最优题解】
文章目录城市轨道交通列车时刻表优化问题思路文章底部城市轨道交通列车时刻表优化问题 最新进度在文章最下方卡片,加入获取思路数据代码论文:2023十三届MathorCup交流 (第一时间在CSDN分享,文章底部) 题目为数据分析类题目。列车时刻表优化…...
常年不卷,按时下班,工作能力强,同事求助知无不言,不扯皮,不拉帮结派,这样的职场清流竟然被裁掉了!...
在职场上,你永远想不到什么样的员工会被优化,比如下面这位:常年不卷,按时下班,工作很专业,同事问什么都回答,不扯皮,不拉帮结派,简直是职场清流。在上个月竟然被优化了&a…...
基于改进多目标灰狼优化算法的考虑V2G技术的风、光、荷、储微网多目标日前优化调度研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
从‘能工作’到‘优秀’:手把手教你为你的Buck/Boost电路挑选和优化MOSFET驱动
从‘能工作’到‘优秀’:手把手教你为Buck/Boost电路挑选和优化MOSFET驱动 在开关电源设计中,MOSFET的选择和驱动优化往往是决定整体效率的关键因素。许多工程师能够设计出"能工作"的电路,但要达到"优秀"的性能指标&…...
51单片机驱动DS1302:从时序解析到精准电子钟实战
1. 初识DS1302:你的第一个实时时钟芯片 第一次接触DS1302时,我盯着这个只有8个引脚的小芯片看了半天——这么小的东西真的能准确记录时间吗?事实证明它不仅做得到,而且做得很好。DS1302是Dallas公司推出的一款经典实时时钟芯片&am…...
DriverStore Explorer:释放磁盘空间的开源驱动管理工具
DriverStore Explorer:释放磁盘空间的开源驱动管理工具 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 1. 诊断驱动膨胀:3个隐藏原因解析 你的C盘空间是…...
AgentCPM深度研报助手C语言文件操作实战:批量处理本地研报文本文件
AgentCPM深度研报助手C语言文件操作实战:批量处理本地研报文本文件 你是不是也遇到过这样的场景?手头有一堆下载好的行业研报,有PDF,有TXT,堆在文件夹里。想快速了解每份报告的核心观点,但一份份打开看&am…...
AnotherRedisDesktopManager:让Redis管理变得简单高效的5个理由
AnotherRedisDesktopManager:让Redis管理变得简单高效的5个理由 【免费下载链接】AnotherRedisDesktopManager qishibo/AnotherRedisDesktopManager: Another Redis Desktop Manager 是一款跨平台的Redis桌面管理工具,提供图形用户界面,支持连…...
从‘瓦特’到‘分贝瓦’:一个公式讲透无线通信中的功率与信噪比换算
从‘瓦特’到‘分贝瓦’:无线通信中的功率与信噪比实战指南 在无线通信系统设计中,功率与信噪比的换算如同工程师的"货币兑换"——你需要熟练掌握瓦特(W)、分贝瓦(dBW)、分贝毫瓦(dB…...
避坑指南:Xdocreport模板制作中的5个常见错误及解决方案
Xdocreport实战避坑指南:模板制作中的5个高频错误与深度解决方案 在Java生态中处理动态Word文档生成时,Xdocreport凭借其与MS Office的无缝兼容性和模板灵活性,已成为企业级文档自动化的重要工具。但许多开发者在从Freemarker迁移到Xdocrepor…...
项目分享|VibeVoice:微软开源的前沿语音AI
引言 在语音合成(TTS)技术领域,长篇幅、多说话者、低延迟的自然语音生成一直是行业痛点。传统TTS模型往往受限于生成时长、说话者数量或实时响应速度,难以满足播客制作、智能对话等复杂场景需求。微软开源的VibeVoice框架彻底打破…...
Redis 的核心机制
Redis 作为高性能内存数据库,在现代架构中早已超越了单纯的“缓存”角色,成为了支撑高并发、分布式系统的基石。深入理解其核心场景、持久化机制、内存管理及集群原理,是构建稳定、高效系统的关键。 以下结合具体业务场景,深度解析…...
WechatFerry实战指南:5步构建高效微信机器人自动化系统
WechatFerry实战指南:5步构建高效微信机器人自动化系统 【免费下载链接】wechatferry 基于 WechatFerry 的微信机器人底层框架 项目地址: https://gitcode.com/gh_mirrors/wec/wechatferry WechatFerry是一个基于Node.js生态的微信机器人底层框架,…...
