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

【0】README
0.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检索数据(过滤+通配符+正则表达式)_第1张图片
Attention)distinct 应用于所有列而不仅仅是前置列;
5)限制结果
5.1)select * from product limit 5: limit 5 指示 mysql 返回不多于5行;
MySQL检索数据(过滤+通配符+正则表达式)_第2张图片
5.2)select * from product limit 5, 5: 从行5开始的连续5行数据;
MySQL检索数据(过滤+通配符+正则表达式)_第3张图片

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检索数据(过滤+通配符+正则表达式)_第4张图片
【2】排序检索数据
1)order by 子句:
MySQL检索数据(过滤+通配符+正则表达式)_第5张图片
2)按照多个列进行排序
MySQL检索数据(过滤+通配符+正则表达式)_第6张图片
3)指定排序方向(默认是升序排序,为了进行降序排序,指定desc关键字(descend,下降))
Attention)
A1)与desc相反的关键字时 asc(ascend,升高);
A2)关键字 desc 只应用到其前面的列名;
MySQL检索数据(过滤+通配符+正则表达式)_第7张图片
4)order by 子句的位置:其 在 from 子句之后,在limit 子句之前;

【3】过滤数据
1)使用where子句:where的位置 在order by 之前;
2)where子句的操作符
MySQL检索数据(过滤+通配符+正则表达式)_第8张图片

3)范围检查:between的测试用例
MySQL检索数据(过滤+通配符+正则表达式)_第9张图片
Attention)不推荐在client端进行过滤,因为如果在客户机上进行过滤数据,服务器不得不通过网络发送多余的数据,这将导致网络带宽的浪费;
4)空值检查:is null 子句
MySQL检索数据(过滤+通配符+正则表达式)_第10张图片

【4】过滤数据补充
1)组合where子句
1.1)and 操作符:
MySQL检索数据(过滤+通配符+正则表达式)_第11张图片
1.2)or 操作符:
MySQL检索数据(过滤+通配符+正则表达式)_第12张图片
1.3)计算次序: 请注意 and 和 or 操作符的优先级,and的优先级高于or,必要时使用括号;
2)in 操作符:in 操作符用来指定条件范围,范围中的每个条件都可以进行匹配;其功能和or 操作符相同;
MySQL检索数据(过滤+通配符+正则表达式)_第13张图片
3)not 操作符
MySQL检索数据(过滤+通配符+正则表达式)_第14张图片

【5】用通配符进行过滤
0)intro to 通配符
0.1)通配符:用来匹配值的一部分的特殊字符;
0.2)搜索模式:由字面值,通配符或两者组合构成的搜索条件;
0.3)必须使用like操作符:为在搜索子句中使用通配符,必须使用like 操作符。like指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较;
1)通配符介绍
1.1)百分号(%)通配符:%表示任何字符出现任意次数;
MySQL检索数据(过滤+通配符+正则表达式)_第15张图片
MySQL检索数据(过滤+通配符+正则表达式)_第16张图片
2)下划线通配符:下划线只匹配单个字符而不是多个字符;
MySQL检索数据(过滤+通配符+正则表达式)_第17张图片
3)使用通配符的技巧(skill)
s1)不要过度使用通配符;
s2)在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的 ;

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

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




你可能感兴趣的:((12)mysql)