MySQL(3)运算符、排序与分页

embedded/2025/1/23 11:33:34/

运算符

一、算术运算符

加减乘除余

举例:

SELECT 100+'1'

FROM DUAL;

结果为101,与java中的连接字符串不同。

SELECT 100+'A'

FROM DUAL;

结果为100。

也可以理解为,遇到非数值类型时,先转换为数值类型(如'2'可以转换为数值类型进行计算),若转换失败则作0计算(如'a')

SELECT 100+NULL

FROM DUAL;

结果为null;

如果运算中进行了除法运算,自动提高精度,显示小数部分。

除0时结果为null。

取余:  被模数%取模数

取余运算的结果与被模数一致,与取模数无关。

二、比较运算符

真则返回1,假则返回0;

1、等号运算符

如果等号两边的值、字符串或者表达式都为字符串,则MySQL会按照字符串进行比较,比较的是每个字符串中字符的ANSI编码是否相等。

若等号两边有一边是null则比较结果为null(如果两边都存在NULL,仍然返回NULL)

2、安全等于  <=>

没有null参与运算时,与等号运算符等同。

可以用于对NULL进行判断,两个操作数均为NULL时返回1,一个操作数为NULL时返回0而不返回NULL

3、<>与!=

表不等。大多数时候可以交替使用,存在有一边为NULL的时候返回NULL(如果两边都存在NULL,仍然返回NULL)

 

三、非符号类型的运算符

1、ISNULL、IS NOTNULL、IS NULL

ISNULL的用法(类似函数):

SELECT id,salary

FROM emp

WHERE ISNULL(id);

IS NULL的用法(IS NOT NULL)同理:

SELECT id,salary

FROM emp

WHERE id IS NULL;

2、LEAST、GREATEST(在多个值中返回最小值/最大值)

举例:

SELECT LEAST('Q','U','M'),GREATEST('D','I','T')

FROM DUAL;

3、BETWEEN … AND …

BETWEEN之后的数应该比AND后的数值小。

BETWEEN … AND …取区间值,包括边界值,

4、IN、NOT IN

查询emp表中age=10或者age=20或者age=30的信息并提取对应的列。

SELECT id,salary,age

FROM emp

WHERE age IN (10,20,30);

5、LIKE(常用)

模糊查询。

%代表不确定个数的字符(0、1……)

例如,查询name中含有字符a的员工信息:

SELECT name

FROM emp

WHERE name LIKE '%a%';

延伸:

_代表一个不确定的字符。

查询name中第二个字符为a的员工信息:

SELECT name

FROM emp

WHERE name LIKE '_a%';

转义字符:

当需要查找的内容包含下划线时,则使用转义字符,\_表示下划线的符号而不是不确定的字符。

或者用$_表转义。

6、正则表达式REGEXP、RLIKE

^xx 以xx为开头

$xx  以xx结尾

例如:

SELECT 'Qum' REGEXP '^Q','Dit' REGEXP '$t'

FROM DUAL;

' . '匹配任意一个单字符

例如:

SELECT 'Qum' REGEXP Q.m'

FROM DUAL;

[abc]包含a或b或c

SELECT 'Qum' REGEXP [u]

FROM DUAL;

补充:不管是OR还是AND,左右条件必须写全(可以实现前后交换不影响),才算正确的书写。

逻辑运算符  OR  ||  AND  &&  NOT  !  XOR

XOR:异或,两个条件一真一假

SELECT age,name,salary

FROM emp

WHERE age=18 XOR salary>9000;

四、位运算符

&  转换二进制之后上下进行&运算

|  转换二进制之后上下进行|运算

^  转换二进制之后上下的1、0不同时取真

SELECT 12&5,12|5,12^5

from DUAL;

对应结果为4、13、5

~  转换二进制之后逐位取反

>>  x 右移  一定范围内除2的x次方

<< x  左移  一定范围内乘2

的x次方

二、排序

1、排序的规则

默认的排序是按照添加的先后顺序进行排序的。

2、排序的操作

使用ORDER BY,可以从低到高(升序)对表的数据进行排序。

ORDER BY可以使用列的别名。WHERE中不能使用列的别名。

原因:sql中不是自上而下地执行的。

升序ASC(默认)

降序DESC

举例:

对age进行降序的排序。

SELECT name,age,salary

FROM emp

ORDER BY age DESC;

3、二级排序

可以直接缀在一级排序ORDER BY 之后进行排序

SELECT name,age,salary

FROM emp

ORDER BY age DESCsalary;

先根据年龄从大到小降序排序,再根据薪水升序排序。

三、分页

1、MySQL使用LIMIT实现分页的操作

举例:

取二十条数据为第一页:

SELECT name.id,salary

FROM emp

LIMIT 0,20;

从第二十一条数据开始截取第二页

SELECT name.id,salary

FROM emp

LIMIT 20,20;

LIMIT后第一个数是偏移量,第二个数是本页的数据量。

需求:每页显示pageSize条数据,显示当前第pageNo页。

公式:LIMIT (pageNo-1)*pageSize,pageSize;

2、LIMIT写在ORDER BY 之后。

3.MySQL8.0新特性

SELECT name.id,salary

FROM emp

LIMIT 2,OFFSET 30;

从第30条数据开始偏移,取两条数据分页显示。(显示第31、32条数据)


http://www.ppmy.cn/embedded/156292.html

相关文章

二十三种设计模式-装饰器模式

一、定义与核心思想 装饰器模式是一种结构型设计模式&#xff0c;其核心思想是动态地给一个对象添加一些额外的职责。通过这种方式&#xff0c;可以在不改变原有对象结构的基础上&#xff0c;灵活地增加新的功能&#xff0c;使得对象的行为可以得到扩展&#xff0c;同时又保持…

日历热力图,月度数据可视化图表(日活跃图、格子图)vue组件

日历热力图&#xff0c;月度数据可视化图表&#xff0c;vue组件 先看效果&#x1f447; 在线体验https://www.guetzjb.cn/calanderViewGraph/ 日历图简单划分为近一年时间&#xff0c;开始时间是 上一年的今天&#xff0c;例如2024/01/01 —— 2025/01/01&#xff0c;跨度刚…

LeetCode 931. 下降路径最小和

题目描述 解题思路 这个问题可以通过动态规划来解决。我们定义一个二维数组 dp&#xff0c;其中 dp[i][j] 表示从第一行到第 i 行&#xff0c;且第 i 行选择第 j 列元素的最小路径和。我们可以从第一行开始&#xff0c;逐行计算 dp 数组的值。 算法步骤 初始化 dp 数组的第一…

Java设计模式 十 装饰模式 (Decorator Pattern)

装饰模式 (Decorator Pattern) 装饰模式是一种结构型设计模式&#xff0c;它的作用是动态地为对象添加额外的职责&#xff0c;而不修改其代码结构。装饰模式通过创建装饰类&#xff0c;将核心功能与附加功能分离&#xff0c;使得代码更灵活&#xff0c;更具扩展性。 1. 装饰模…

博客之星2024年度总评选——我的年度创作回顾与总结

2024年&#xff0c;是我在CSDN博客上持续耕耘、不断成长的一年。在此&#xff0c;与大家分享一下我的年度创作回顾与总结。 一、创作成长与突破 在人工智能领域&#xff0c;技术迭代迅速&#xff0c;知识更新频繁。为了保持自己的竞争力&#xff0c;在今年&#xff0c;我始终…

让旅游更智能:基于AR的旅游导览应用解析

友友们好! 我的新专栏《Python进阶》正式启动啦!这是一个专为那些渴望提升Python技能的朋友们量身打造的专栏,无论你是已经有一定基础的开发者,还是希望深入挖掘Python潜力的爱好者,这里都将是你不可错过的宝藏。 在这个专栏中,你将会找到: ● 深入解析:每一篇文章都将…

循环队列(C语言)

从今天开始我会开启一个专栏leetcode每日一题&#xff0c;大家互相交流代码经验&#xff0c;也当作我每天练习的自我回顾。第一天的内容是leetcode622.设计循环队列。 一、题目详细 设计你的循环队列实现。 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#…

GS论文阅读--Hard Gaussian Splatting

前言 本文也是对高斯点云的分布进行优化的&#xff0c;看&#xff01; 文章目录 前言1.背景介绍2.关键内容2.1 位置梯度驱动HGS2.2 渲染误差引导HGS 3.文章贡献 1.背景介绍 在训练过程中&#xff0c;它严重依赖于视图空间位置梯度的平均幅度来增长高斯以减少渲染损失。然而&…