【数据库——MySQL】(5)运算符、表达式和系统函数

目录

  • 1. 常量
    • 1.1 数值常量
    • 1.2 字符串常量
    • 1.3 日期时间常量
    • 1.4布尔值
    • 1.5 NULL值
  • 2. 变量
    • 2.1 系统变量
    • 2.2 用户变量
  • 3. 运算符与表达式
    • 3.1 赋值运算符
    • 3.2 算术运算符
    • 3.3 比较运算符
    • 3.4 判断运算符
    • 3.5 字符串匹配
    • 3.6 逻辑运算符和位运算符
    • 3.7 表达式和运算符的优先级
  • 4. 系统函数
  • 参考书籍

1. 常量

1.1 数值常量

  1. 十进制数常量
    十进制数常量分为整数常量和浮点数常量,整数常量即不带小数点的十进制数,浮点数常量是使用小数点的数值常量。

  2. 非十进制数常量
    非十进制数常量包括b(B)二进制表示和x(X)十六进制表示,它们只能表示整数。

    有两种表示方式:

    1. 以0打头,在进制表示符后跟进制数;
    2. 以进制表示符打头后跟进制数字符串,但十六进制数字需要双数。

1.2 字符串常量

字符串常量可以用引号括起来,也可以通过十六进制表达。

  1. 一般字符串常量
    一般字符串常量用单引号括起来,例如:‘你好,How are you!’。其中,ASCII字符用一个字节存储,中文用2个字节存储。

  2. Unicode字符串常量
    Unicode字符串常量前面有一个N标志符,代表SQL-92标准的国际语言(National Language),用单引号括起字符串。例如:N’你好,How are you!'。其中,每个字符(中文或者英文)用两个字节存储。

  3. 字符串中特殊的字符表示
    在字符串中不仅可以使用普通的字符,也可使用几个转义序列来表示特殊的字符,见下表。每个转义序列以一个反斜杠(“\”)开始。

    序列含意
    \0一个ASCII零值字节(NUL)字符
    \n一个回车符
    \r一个换行符(Windows中使用\r\n作为新行标志)
    \t一个定位符
    \b一个退格符
    \Z一个ASCII 为26字符(Ctrl+Z)
    \’一个单引号(“'”)
    \"一个双引号(“"”)
    \\一个反斜线(“\”)
    \%一个“%”符,用于在正文中搜索包含“%”字符,否则 “%”将解释为一个通配符。
    \_一个“_”符,用于在正文中搜索包含“”字符,否则 “”将解释为一个通配符。
  4. 字符串中包含引号字符
    字符串内包含单引号(‘),字符串需要用双引号("),否则需要用转义字符(’)表示单引号;字符串内包含双引号(“),字符串需要用单引号('),否则需要用转义字符(”)表示双引号。

  5. 十六进制、二进制表示字符串
    每对(即2个)十六进制数字被转换为一个字符,不区分大小写。

    每8位(1个字节)二进制数字被转换为一个字符。

    在输出显示时,十六进制和二进制表示被默认为表达字符,而在参与算术运算时则被认为是表达数值。

1.3 日期时间常量

满足日期时间要求的字符串它当然本身就是字符串,但当用于日期时间位置、符合日期时间格式要求并且有效时,就会被看成是日期时间常量。
日期型常量包括年、月、日,如“2023-09-20”格式。

时间型常量包括小时数、分钟数、秒数及微秒数,如“10:38:33.00025”格式。

日期时间型常量是日期时间组合,如“2023-09-20 10:38:33”。

注意,MySQL是按“年-月-日”的顺序表示日期的,中间的间隔符“-”也可以使用如“\”、“@”或“%”等特殊符号。此外,日期时间常量必须有效,如’2023-02-31’的字符串就是错误的日期时间常量。

1.4布尔值

布尔值只包含两个可能的值:TRUEFALSETRUE 的数字值为 1FALSE 的数字值为 0

1.5 NULL值

NULL 值可适用于各种列类型,它通常用来表示“没有值”、“无数据”等含义,并且不同于数字类型(0),或字符串类型的空字符串(‘’)。

2. 变量

2.1 系统变量

MySQL有一些特定的设置,例如,有些定义数据如何被存储,有些影响到处理速度,还有些与日期有关,这些设置就是系统变量。

  1. 系统变量获取和设置
    系统变量在MySQL服务器启动时就被引入并初始化为默认值。例如:@@VERSION可获得当前使用的MySQL版本,像这样的系统变量的值是不可以改变的。

    大多数的系统变量应用于SQL语句中必须在名称前加两个@符号,而为了与其他SQL产品保持一致,某些特定的系统变量是要省略这@@符号的。如CURRENT_DATE(系统日期)、CURRENT_TIME(系统时间)、CURRENT_TIMESTAMP(系统时间戳)和CURRENT_USER(SQL用户名)。

    有些系统变量是可以通过SET语句来修改的:

    SET [GLOBAL| SESSION] 系统变量名 = 表达式
    

    或者

    SET	@@GLOBAL.| @@SESSION.系统变量名 = 表达式
    
  2. 全局系统变量和会话系统变量

    1. 全局系统变量(指定GLOBAL):当MySQL启动的时候,全局系统变量就被初始化了,并且应用于此后每一个启动的会话。如果设置GLOBAL来系统变量(需要超级用户权限),则该值被记住,并被用于新的连接,直到服务器重新启动为止。

    2. 会话系统变量只适用于当前的会话。大多数会话系统变量的名字和全局系统变量的名字相同。当启动会话的时候,默认情况下每个会话系统变量都和同名的全局系统变量的值相同。一个会话系统变量的值是可以改变的,但是这个新的值仅适用于当前正在运行的会话。

    3. 若改变了全局系统变量的值,同名的会话系统变量的值也保持不变。

  3. 系统变量清单

    SHOW VARIABLES [LIKE 条件]					#显示系统变量清单。
    SHOW GLOBAL VARIABLES [LIKE 条件]			#显示所有全局系统变量
    SHOW SESSION VARIABLES [LIKE 条件]			#显示所有会话系统变量
    

2.2 用户变量

用户自己定义的变量叫用户变量,可在其中保存值,以后再引用它,这样在一个会话中可以将值从一个语句传递到另一个语句。

用户变量可用下列语句定义和赋值:

SET	@变量名 = 表达式, ...

说明:

  1. 变量名由当前字符集的文字和数字字符、“.”、“_”和“$”组成。当变量名中需要包含一些特殊符号(如空格、#等)时,可以使用双引号或单引号将整个变量括起来。@必须放在一个用户变量的前面,以便将它和列名区分开。

  2. 用户变量的数据类型取决于赋予它的表达式值。表达式可以是常量、已经赋值的用户变量或它们通过运算符组成的式子,也可以是NULL值。

  3. 没有初始化的用户变量的值为NULL。

  4. 只有当一个用户变量已经被创建并初始化后,它才可以用于其他SQL语句中,变量名前必须加上@符号。

  5. 用其他语句代替SET语句来为用户变量分配一个值,分配符必须为“:=”,而不能用“=”,因为在非SET语句中“=”被视为比较操作符。

  6. 用户变量可以用于存放数据库的查询结果。

3. 运算符与表达式

3.1 赋值运算符

因“=”只有在SET语句中才被作为赋值运算符使用,其他上下文情形下都被视作等于比较运算符,而“:=”则在任何合法的SQL语句中都是赋值运算符,故实际应用中要进行赋值运算,建议优先采用“:=”形式。

3.2 算术运算符

算术运算符是用于数值型数据运算的,常用的算术运算符见下表。

运算符作用实例
DIV整数除法5 DIV 2 = 2
/除法5 / 2 = 2.5
%,MOD取模运算5 % 2 = 1
*乘法5 * 2 = 10
-减法或负号-5-2 = -7
+加法-5 + 2 = -3

3.3 比较运算符

运算符作用
=等于
<=>安全等于
<>.!=不等于
<=小于等于
<小于
>=大于等于
>大于

等于(=)时的一些注意事项:

  1. 若两个参数均为数值或者数值表达式,则按照数值进行比较。
  2. 若用数值字符串和数字进行比较,则自动将字符串转换为数字后用数值进行比较。
  3. 用非数值字符串和数字进行比较,字符串转换为0,然后进行比较。
  4. 若两个都是(单引号或双引号括起)字符串,则按照字符串进行比较。只有字符串顺序和个数完全相同,字符串才相等。注意,空格也是字符。
  5. ASCII码字符在不同的字符集中存储的代码是相同的,中文在不同的中文字符集中存储的代码是相同的,但在中文字符集和其他非中文字符集代码是不同的。
  6. 大小写字符是否相等取决于当前字符排序规则。
  7. 元组比较两项对应列的数据项是否相等。
  8. 若有一个或两个参数为NULL,则比较运算的结果为NULL。
  9. 半角字符和全角字符是不相等的。

3.4 判断运算符

  1. IS NULL(ISNULL)IS NOT NULL
  2. 值是否在范围内:BETWEEN...AND...
  3. 值是否在其中:IN、NOT IN

3.5 字符串匹配

  1. 字符串通配符匹配:LIKE

    表达式 LIKE 匹配条件
    

    如果表达式满足匹配条件,返回值为1;如果不匹配,则返回0。表达式或匹配条件中任何一个为空,则结果为NULL。

    可以使用下面两种通配符

    1. ‘%’:匹配任何数目的字符,甚至包括’'字符。
    2. ‘_’:只能匹配一个字符。
  2. 字符串是否匹配正则表达式规范:REGEXP

    通过正则表达式可实现更复杂的字符串匹配。

    表达式 REGEXP 匹配条件
    

    如果表达式满足匹配条件,返回1;如果不满足,则返回0。若表达式或匹配条件任意一个为空,则结果为 NULL

    REGEXP运算符在进行匹配时,常用的有下面几种通配符:

    1. ‘^’:匹配以该字符后面的字符开头的字符串;
    2. ‘$’:匹配以该字符后面的字符结尾的字符串;
    3. ‘.’:匹配任何一个单字符;
    4. ‘[…]’:匹配在方括号内的任何字符。
    5. ‘*’:匹配零个或多个在它前面的字符,例如,'x*‘匹配任何数量的’x’字符,’[0-9]*‘匹配任何数量的数字,而’*'匹配任何数量的任何字符。

3.6 逻辑运算符和位运算符

  1. 逻辑运算符

    运算符作用
    NOT,!逻辑非
    AND,&&逻辑与
    OR,||逻辑或
    XOR逻辑异或
  2. 位逻辑运算符和位移动运算符

    运算符作用
    ~按位取反
    &按位与
    |按位或
    ^按位异或
    <<左移
    >>右移

3.7 表达式和运算符的优先级

  1. 表达式
    所谓“表达式”就是操作数(包括常量和变量)、列名函数通过运算符进行有机组合的式子。

  2. 运算符的优先级
    当一个复杂的表达式有多个运算符时,运算符优先级决定执行运算的先后次序,会影响所得到的运算结果。

    MySQL运算符的优先级如下表所示,级别数字越小表示优先级越高。

    运算符级别
    !0
    -,~1
    ^2
    *,/,DIV,%,MOD3
    +,-4
    <<, >>5
    &6
    |7
    =,<=>,<>,!=,<=,<,>=,>,IS NULL,IN,LIKE,REGEXP8
    BETWEEN AND9
    NOT10
    AND,&&11
    XOR12
    OR,||13
    =,:=14

4. 系统函数

见 菜鸟教程。

参考书籍

《MySQL实用教程(第4版)》

上一篇文章:【数据库——MySQL】(4)表记录操作——增、删、改
下一篇文章:【数据库——MySQL】(6)查询(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/89505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2785. 将字符串中的元音字母排序

2785. 将字符串中的元音字母排序 给你一个下标从 0 开始的字符串 s &#xff0c;将 s 中的元素重新 排列 得到新的字符串 t &#xff0c;它满足&#xff1a; 所有辅音字母都在原来的位置上。更正式的&#xff0c;如果满足 0 < i < s.length 的下标 i 处的 s[i] 是个辅音…

python+vue电子资源管理系统

能实现不出家门就可以通过网络进行系统管理&#xff0c;交易等&#xff0c;而且过程简单、快捷。同样的&#xff0c;在人们的工作生活中&#xff0c;也就需要互联网技术来方便人们的日常工作生活&#xff0c;实现工作办公的自动化处理&#xff0c;实现信息化&#xff0c;无纸化…

【图论C++】树的直径(DFS 与 DP动态规划)

》》》算法竞赛 /*** file * author jUicE_g2R(qq:3406291309)————彬(bin-必应)* 一个某双流一大学通信与信息专业大二在读 * * brief 一直在竞赛算法学习的路上* * copyright 2023.9* COPYRIGHT 原创技术笔记&#xff1a;转载…

点云从入门到精通技术详解100篇-基于激光点云语义的环境感知

目录 前言 环境感知传感器研究现状 单一激光雷达应用 激光雷达与相机融合的应用

社区团购新零售搭伙拼团小程序源码(前后端)

社区团购新零售搭伙拼团小程序源码是一款非常实用的电商小程序&#xff0c;它包含了前后端文件&#xff0c; 可以快速地进行部署和使用。该小程序是基于微信小程序开发的&#xff0c;支持社区团购、新零售、搭伙拼团等多种功能。 该小程序具有良好的用户体验&#xff0c;包括…

数据湖在爱奇艺数据中台的应用

01 我们眼中的数据湖 作为爱奇艺的数据中台团队&#xff0c;我们的核心任务是管理和服务公司内的大量数据资产。在实施数据治理的过程中&#xff0c;我们不断吸收新的理念&#xff0c;引入尖端的工具&#xff0c;以精细化我们的数据体系管理。“数据湖”作为近年来数据领域广泛…

链表入门(单链表讲)

链表 1.链表1.1 链表概念及其结构1.2 链表的分类 2.单链表代码实现2.1 单链表的定义2.2 单链表的初始化2.3 单链表的新增结点2.4 单链表的打印2.4 单链表的插入2.4.1 头插2.4.2 尾插2.4.3 任意位置插入 2.5 单链表的删除2.5.1 头删2.5.2 尾删2.5.3 任意位置删除 2.6 单链表的查…

【PickerView案例10-国旗选择界面02 Objective-C预言】

一、好了,我们继续来实现这个国旗选择界面: 1.它的界面里面,是不是很简单,就一个UIPickerView,就完事儿了 然后,显示的每一行内容呢, 1)一个文字Label 2)一个图片 那大家应该有意识,它返回的应该是一个View,对吧, 代理方法里面,有一个返回View的,viewForRow…

Django:五、登录界面实现动态图片验证码

一、下载包 pip install pillow 二、代码 这是一个函数&#xff0c;无输入&#xff0c;返回两个值。一个值是图片&#xff0c;一个值是图片中的数字及字母。 需要注意&#xff1a;font_fileMonaco.ttf 是一个验证码字体文件&#xff0c;如有需要&#xff0c;可三连私信。 …

【逆向】在程序空白区添加Shellcode

目录 硬编码 内存对齐和文件对齐 节表 实战 滴水逆向03-17 #include <windows.h>LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) …

Pycharm 搭建 Django 项目,看完这一篇就够了

1. 安装需求 在使用 python 框架 Django 需要注意下面事项 Pycharm 版本是专业版而不是社区版本Pycharm 配置好了 python 解释器 &#xff08;一般我们现在用的都是python3&#xff09;我自己使用的是 Pycharm 版本是2020.1.2 2. 准备工作 2.1 新建项目 首先我们打开 Pycharm …

Linux离线安装elasticsearch|header|kibna插件最详细

1.准备软件安装包 [hadoophost152 elasticsearch]$ ll -rw-r--r--. 1 hadoop hadoop 515807354 9月 23 23:40 elasticsearch-8.1.1-linux-x86_64.tar.gz -rw-r--r--. 1 hadoop hadoop 1295593 9月 23 23:48 elasticsearch-head-master.tar.gz -rw-r--r--. 1 hadoop hadoop…

记录一个 GUI 库的对比测试结果

1&#xff0c;Java 的 JavaFX 2&#xff0c;golang 的 Fyne 1, Java 测试的是一个俄罗斯方块的 GUI 程序。一切正常。 2&#xff0c;Golang github 的原仓库网络问题&#xff0c;没能测试上&#xff0c;使用以下库 https://gitee.com/mirrors/Fyne 下载代码后提示“编译失…

Tomcat 与 JDK 对应版本关系

对应关系 Tomcat版本 jdk版本11.0.x JDK 21及以后10.1.x JDK11及以后10.0.xJDK1.8及以后9.0.x JDK1.8及以后8.5.xJDK1.7及以后8.0.x JDK1.7及以后 查看对应关系方法&#xff1a; 登陆Tomcat官网&#xff1a;Apache Tomcat - Welcome! 结果&#xff1a;

Picgo

title: “Picgo” createTime: 2021-07-01T12:05:5808:00 updateTime: 2021-07-01T12:05:5808:00 draft: false author: “name” tags: [“未标签”] categories: [“未分类”] description: “测试的” picgo 地址 : /home/zhu/software/node/node-v14.15.0-linux-x64/bin文…

河北吉力宝以步力宝健康鞋引发的全新生活生态商

在当今瞬息万变的商业世界中&#xff0c;成功企业通常都是那些不拘泥于传统、勇于创新的先锋之选。河北吉力宝正是这样一家企业&#xff0c;通过打造一双步力宝健康鞋&#xff0c;他们以功能性智能科技穿戴品为核心&#xff0c;成功创造了一种结合智能康养与时尚潮流的独特产品…

C#读取CAD文件(dwg/dxf)并处理

文章目录 一、前言二、调研过程2.1 CAD相关2.2 DWG2.3 DXF2.4 小结三、解析CAD的库3.1 netDxf3.2 Teigha3.2.1 官网获取3.2.2 网上获取四、图形计算一、前言 需求: 项目要求识别CAD图纸(图纸内容与现实事物比例是1:1)中的内容,并提取出一些关键信息。 这里的CAD图纸是指C…

unity 实用框架

单例模式基类 类不继承mono的单例基类 /// <summary> /// 单例基类 /// </summary> //泛型解决&#xff0c;给他一个约束要么是这个类本身要么是它的子类 public class SingleBase<T>where T : SingleBase<T> {protected SingleBase() { }//线程锁。…

C++ 类和对象(4)构造函数

C的目标之一是让使用类对象就像使用标准类型一样&#xff0c;但是常规的初始化语法不适用于类似类型Stock&#xff1a; int year 2001&#xff1b; struct thing {char * pn;int m; }; thing amabob {"wodget",-23}; //有效初始化 Stock hot {"Sukies Autos…

Leetcode 992. K 个不同整数的子数组

文章目录 题目代码&#xff08;9.27 首刷看解析&#xff09; 题目 Leetcode 992. K 个不同整数的子数组 代码&#xff08;9.27 首刷看解析&#xff09; 滑动窗口&#xff0c;恰好转换为&#xff1a;最多K个不同的数 - 最多K-1个不同的数 class Solution { public:int subarr…