MySQL检索数据(过滤+通配符+正则表达式)

时间:2022-09-16 11:26:09
【0】README0.1)本文部分文字描述转自“MySQL 必知必会”,旨在review “MySQL的基础知识”;
【1】检索数据 1)检索单个列:select a_name from table_name; 2)检索多个列:select a_name,b_name from table_name;
3)检索所有列:select * from table_name;
attention)一般不推荐使用 select *,除非你确实需要表中的每个列,因为检索不需要的列通常会降低检索和应用程序的性能; 4)检索不同行: select distince column_name from table_name; MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) Attention)distinct 应用于所有列而不仅仅是前置列; 5)限制结果 5.1)select * from product limit 5: limit 5 指示 mysql 返回不多于5行; MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 5.2)select * from product limit 5, 5: 从行5开始的连续5行数据; MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式)
Attention)
A1)行0:检索出来的第一行是行0而不是行1,所以 limit 1,1 将检索出第二行而不是第一行; A2)MySQL5的limit语法:limit 3,4 表示 从行3开始的4行; A3)上面的limit 3,4 容易吧人搞糊涂,一种替代语法:limit 4 offset 3;从行3开始取4行; MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 【2】排序检索数据 1)order by 子句: MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 2)按照多个列进行排序 MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 3)指定排序方向(默认是升序排序,为了进行降序排序,指定desc关键字(descend,下降)) Attention)
A1)与desc相反的关键字时 asc(ascend,升高); A2)关键字 desc 只应用到其前面的列名; MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 4)order by 子句的位置:其 在 from 子句之后,在limit 子句之前;
【3】过滤数据 1)使用where子句:where的位置 在order by 之前; 2)where子句的操作符 MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式)
3)范围检查:between的测试用例 MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) Attention)不推荐在client端进行过滤,因为如果在客户机上进行过滤数据,服务器不得不通过网络发送多余的数据,这将导致网络带宽的浪费; 4)空值检查:is null 子句 MySQL检索数据(过滤+通配符+正则表达式)MySQL检索数据(过滤+通配符+正则表达式)
【4】过滤数据补充 1)组合where子句
1.1)and 操作符: MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) MySQL检索数据(过滤+通配符+正则表达式) 1.2)or 操作符: MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) MySQL检索数据(过滤+通配符+正则表达式) 1.3)计算次序:请注意 and 和 or 操作符的优先级,and的优先级高于or,必要时使用括号;
2)in 操作符:in 操作符用来指定条件范围,范围中的每个条件都可以进行匹配;其功能和or 操作符相同; MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 3)not 操作符 MySQL检索数据(过滤+通配符+正则表达式)MySQL检索数据(过滤+通配符+正则表达式)
【5】用通配符进行过滤 0)intro to 通配符
0.1)通配符:用来匹配值的一部分的特殊字符; 0.2)搜索模式:由字面值,通配符或两者组合构成的搜索条件; 0.3)必须使用like操作符:为在搜索子句中使用通配符,必须使用like 操作符。like指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较;
1)通配符介绍
1.1)百分号(%)通配符:%表示任何字符出现任意次数; MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) MySQL检索数据(过滤+通配符+正则表达式) 2)下划线通配符:下划线只匹配单个字符而不是多个字符; MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 3)使用通配符的技巧(skill)
s1)不要过度使用通配符; s2)在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的 ;

【6】用正则表达式进行搜索 1)intro to 正则表达式:正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较; 2)基本字符匹配: MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 3)点(.)匹配任意一个字符 MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 4)进行or 匹配 MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 5)匹配几个字符之一 MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) Attention)
A1)正则表达式[12]000 是 [1|2]000的缩写; A2)字符集合也可以被否定:即,他们将匹配除指定字符外的任何东西。为否定一个字符集,在集合的开始处放置一个 ‘^’即可。 MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 6)匹配范围
6.1)匹配数字0到9:[0-9]; 6.2)匹配字母a到z:[a-z]; MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 7)返回特殊字符
problem)如果我们要匹配点(.)这个字符,应该怎么写正则表达式呢? solution)通过写 '\\.' 进行匹配;(这是所谓的转义字符) MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 8)匹配字符类 MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) 9)匹配多个实例(匹配多次出现的模式) MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) MySQL检索数据(过滤+通配符+正则表达式) 10)定位符
10.1)为匹配特定位置的文本,需要定位符,如下所示: MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) MySQL检索数据(过滤+通配符+正则表达式) 10.2)匹配以数字或点(.)为开头的行 MySQL检索数据(过滤+通配符+正则表达式)

MySQL检索数据(过滤+通配符+正则表达式)
MySQL检索数据(过滤+通配符+正则表达式) MySQL检索数据(过滤+通配符+正则表达式) Attention)
A1)‘^’ 字符的双重作用:在集合中(用[]定义 ),用它来否定该集合;否则(在[]前面),用来指定串的开始处; A2)regexp 和 like 的区别:like 匹配整个串而 regexp 匹配子串; A3)利用定位符,通过^ 开始每个表达式,$ 结束每个表达式;