MySQL数据库学习笔记(6)- DQL之IN、LIKE、查询结果排序与分页

1. IN

运算符 IN 允许我们在 WHERE 子句中过滤某个字段的多个值。

它的基本形式如下:

SELECT [列名1, 列名2, ...] FROM 表名 WHERE 字段名 IN(值1, 值2, ...)

下面是一个简单的示例,找到ID为2,3,4,9的记录

SELECT * FROM employee WHERE id IN (2, 3, 4, 9);

结果如下:


2. LIKE

当我们需要查询 包含 xxxx 的所有记录时,就需要使用 LIKE 子句。

说明:

  • LIKE 子句中的 % 类似于正则表达式中的 * ,匹配 0个或多个字符 。
  • LIKE 子句中的 _ 匹配任意单个字符。
  • LIKE 子句中如果没有 % 和 _ ,相当于运算符 = 的效果。

下面是简单的示例:

SELECT * FROM employee WHERE name LIKE '%小%';  # 匹配名字中带小的记录
SELECT * FROM employee WHERE name LIKE '张_';   # 匹配姓张且名字为两个字的记录

3. 排序

使用关键字 ORDER BY 可以对查询结果按照一个或者多个字段进行排序。
ASC (正序), DESC (倒序) 默认为 ASC

对于表 employee 按照工资排序, 可以使用如下sql语句:

SELECT * FROM employee ORDER BY salary;

结果如下:

注意: 如果指定多列作为排序的条件,则表示如果第一个列的值相同,则按照后面的列的顺序进行排序。

默认为正序(从小到大)的顺序排序,想要实现倒序的效果,可以使用关键字 DESC

SELECT * FROM employee ORDER BY salary DESC;

4. 分页

如果数据比较多,想分为多页的方式显示数据,则可以使用 LIMIT 关键字。它的基本形式如下:

  • offset : 表示偏移的位置
  • row_count :表示最多显示的行数

如果显示第N页的内容,每页显示M条记录,则可以使用公式
offset = (N - 1) * M

这里值得注意的是,如果想要从第一个数据开始,需要指定的索引(offset) 为0。
下面简单的示例:

SELECT * FROM employee ORDER BY salary DESC LIMIT 0, 4; # 获取第1页的数据
SELECT * FROM employee ORDER BY salary DESC LIMIT 4, 4; # 获取第2页的数据
SELECT * FROM employee ORDER BY salary DESC LIMIT 8, 4; # 获取第3页的数据

示例中,从表employee中按照的工资(salary)的高低(由高到低)显示前3页的数据,每页4条记录。

不会飞的纸飞机
扫一扫二维码,了解我的更多动态。

下一篇文章:MySQL数据库学习笔记(7)- DQL之内置函数