数据检索、排序、过滤
# 数据检索
# 检索不同行数据
select可以返回所有匹配的行,但有的情况下,我们想让每个值只出现一次,我们可以使用DISTINCT关键字
使用DISTINCT关键字后,可以看到返回的值没有重复情况
# 限制数据大小
我们可以使用limit来限制数据的大小,比如我们只需要一条数据
SELECT DISTINCT shareID FROM `comment` LIMIT 1
1
limit支持两个参数,第一个是开始的行数,第二个是显示多少行,比如我们只需要从第二行开始,检索两条数据(注意第一条是0)
SELECT DISTINCT shareID FROM `comment` LIMIT 1,2
1
# 排序检索数据
# 数据排序
使用 order by
来对数据进行排序。
默认是升序,如果想降序,那么使用desc:
SELECT DISTINCT shareID FROM `comment` ORDER BY shareID DESC
1
# 多列排序
有这样一种情况,比如成绩排名的时候,如果总成绩相等,那么数学更高的排在最前面该怎么实现?我们可以使用多列排序
多列排序后,效果如下
直到不同列的顺序可以使用下面这个语句(这里为了方便对比,给第一列加上ASC,实际上不需要)
SELECT shareID,userID FROM `comment` WHERE shareID = 2 ORDER BY shareID ASC,userID DESC
1
# 数据过滤
使用where字句来进行数据过滤,where字句的操作符如下
SELECT shareID,userID FROM `comment` WHERE shareID BETWEEN 2 AND 4
1
我们这里查询shareID在2-4范围之间的数据
# AND和OR
AND在计算次序中优先级更高。可能会错误组合,所以为了避免这个问题,我们需要加上括号
# IN操作符
检索id为2,4,5的所有结果
SELECT * FROM `comment` WHERE shareID IN (2,4,5)
1
# NOT操作符
SELECT * FROM `comment` WHERE shareID NOT IN (2,4,5)
1
这个符号只有一个功能:就是否定后面所有的条件
# 使用通配符来过滤
# LIKE操作符
SELECT * FROM `comment` WHERE content LIKE '%一%'
1
%
表示出现任意次数,_
只匹配单个字符
# 使用正则表达式来搜索
# 基本字符匹配
SELECT * FROM `comment` WHERE content REGEXP '[0-9]+'
1
like和正则的区别
like是匹配整个列值,只有当开头和结尾都满足时才返回,而REGEXP只要匹配就会返回值,就像上面这个一样,如果需要匹配特殊字符比如 .
我们可以使用 \\
来进行匹配
SELECT * FROM `comment` WHERE content REGEXP '\\.'
1
一些特殊的元字符
其他部分主要是正则的运用,这里就不说了