上一篇mysql数据库的博客主要显示了一些简单的排序,检索(查找)所有的记录.
这里对查找出来的记录进行简单的筛选.
筛选的关键词是where.和where搭配的子句操作符主要有:=,!=,>,<,BETWEEN,AND,OR,IN,NOT,NULL等等.
Sample1:就是上面的这个表t1,我要检索出分数大于75的记录.只需要在where子句中加上 score
> 75. ‘`’字符位于键盘左上角ESC的下面,用来标识区分数据表的字段名.
Samle2:仍然是这张表,我要获得分数为67-76的记录.这里通过BETWEEN操作符即可完成.
Sample3:继续这张表,我要获得分数为66或76的记录.当然你也可以用OR关键字去一个个的写.但是显然太傻了,在这里我们可以使用关键词IN,IN可以用来指定条件范围,且用’,’分离.当然使用正则表达式也是一种好方法.
之前一直在对int类型的字段进行数据过滤,现在对name
字段进行过滤.
Sample4:我想要获取名字中带’z’的记录.可以使用LIKE关键词用来条件匹配,’%’可以匹配0-n个字符,’_’则可以匹配1个字符.
当然除了使用LIKE之外,我还是喜欢使用正则表达式,且正则表达式在很多地方基本都支持的.正则表达式的关键字是REGEXP.后面”的内容则是匹配的条件.
在这里只需要匹配名字中有字符’z’的记录即可.
正则表达式的用法很多,这里介绍演示一些简单的.
Sample5:我要查找名字首字母为’z’或’k’的记录.[zk]和[z|k]是一样的意思,表示通配字符’z’和’k’.而’^’符号则表示为文本开头的意思.
当然’^’除了作为占位符表示文本开始的用法之外,还有另外一个常用的用法.通过下面的例子,就可以很清楚的理解这个用法.
Sample6:我要查找名字首字母不为’z’和’k’的记录.刚好相反的话,我们可以使用NOT关键词.’^[^zk]’的意思是匹配首字母不为’z’或’k’的字段.
Sample7:在这里我要获得名字中带有三个小写字母的记录.用{3}规定了通配3次.
Sample8:在这里我要获得名字中有连续三个小写字母+1-2个数字的记录.
发现只有一条是符合的.
总结:对于数字型数据的过滤一般使用>,<等操作符,对于字符串数据的过滤可以使用LIKE关键词,当然使用REGEXP正则表达式对于字符串匹配是非常的方便的.通过’^’,’$’等定位符进行位置匹配,通过[]进行条件匹配,使用{}进行数量匹配,也非常的好理解.