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

运算符

一、算术运算符

加减乘除余

举例:

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条数据)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值