600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > (8):mysql查询操作及正则表达式小结【MySQL】

(8):mysql查询操作及正则表达式小结【MySQL】

时间:2023-10-31 10:04:22

相关推荐

(8):mysql查询操作及正则表达式小结【MySQL】

数据库|mysql教程

表达式,mysql,博客

数据库-mysql教程

正则表达式

教学系统 源码,ubuntu查看系统源码,tomcat4个端口,python爬虫加密,php网店分销系统,广州seo关键词排名优化软件lzw

微网站投票刷礼物源码,vscode文件关联图标,ubuntu开启pptp,tomcat猫打不开,qt中sqlite打开数据库,爬虫可以用哪些有意思的网站,php smtp类,江西完善seo优化排行,免费带后台企业网站java,微信网站模板lzw

怎么说呢,用markdown编辑好的文本,无法用在博客园中,不知道怎么处理。

v4l2源码,ubuntu锁屏画面,阿里云主机部署tomcat,吐丝的爬虫,php预处理文件,乐云seo索高粱seolzw

A、排序

1、按多个列排序

使用逗号隔开,如果指定方向则紧挨着要排序的列名

对于多个列的排序,先按照前一个排序然后在前一个的基础上按照后面的排序。

如:

SELECT * FROM a2 ORDER BY a_id DESC,t_id desc

数据结果如下:

2、order bylimit

SELECT * FROM a2 ORDER BY a_id DESC,t_id desc LIMIT 1

注意:

order by的位置,from之后,limit之前。

B、数据过滤操作符(and/or/in/not)

注意:优先级

当含有andor时,and的优先级高于or,所以先执行and,解决的办法就是使用()括号的优先级高于and,能够消除歧义。

如:

SELECT * FROM a2 WHERE (a_id = 2 or t_id>4) AND id>3

in操作符的特点

in操作符完成了与or相同的功能,如:

SELECT * FROM a2 WHERE t_id in(1,2,3)SELECT * FROM a2 WHERE t_id =1 OR t_id=2 OR t_id=3

上面两个功能相同。

既然如此,那么为什么还用in呢,下面就说说in的优点:

SELECT * FROM a2 WHERE t_id in( SELECT t_id FROM a2 WHERE id=5);

NOT 取反

NOTINBETWEENexists子句取反。

C、数据过滤通配符

%通配符

%:表示任何字符出现任意次数

LIKE 惠普% :以惠普开头 LIKE \%惠普 :以惠普结尾 LIKE \%惠普%:包含惠普 LIKE s%e:以s开头,e结尾

注意:

_通配符

下划线通配符与%相同,但是它只匹配单个字符而非多个。

SELECT * FROM a WHERE name LIKE \_ood #goodSELECT * FROM a WHERE name LIKE goo_ #goodSELECT * FROM a WHERE name LIKE go_d #good

优化:

通配符在搜索处理上比其他的要慢些,所以要记住以下技巧:

D、使用正则表达式

本小节学习如何在Where子句中使用正则表达式来更好的控制数据过滤。

更多详细知识参考《正则表达式必知必会》

1.基本字符的匹配

SELECT * FROM a1 WHERE name regexp 1000 #匹配名称含有1000的所有行SELECT * FROM a1 WHERE name regexp .000 #匹配以000结尾的所有行,(.正则中表示:匹配任意一个字符)

从中可以看到正则表达式能够模拟LIKE使用通配符,注意:在通配符能完成的时候就不用正则,因为正则可能慢点,当然正则也能简化通配符,完成更大的作用。所以要有所取舍。

LIKEREGEXP的区别:

SELECT * FROM a1 WHERE name LIKE a SELECT * FROM a1 WHERE name regexp a

下面两条语句第一条不返回数据,第二条返回数据。

原因如下:

匹配不区分大小写

Mysql正则大小写都会匹配,为区分大小写可使用binary关键字,如:

SELECT * FROM a1 WHERE name LIKE binary \%J% #使用LIKE+通配符匹配大写JSELECT * FROM a1 WHERE name regexp binary j #使用正则匹配小写j

2.进行OR匹配

|为正则表达式的OR操作符,表示匹配其中之一

SELECT * FROM a1 WHERE name regexp binary a|j|G

3.匹配特定字符

使用[]括起来的字符,将会匹配其中任意单个字符。

SELECT * FROM a1 WHERE name regexp [12]st

以上[12]st’正则表达式,[12]定义一组字符,它的意思是匹配1或2,因此结果如下:

4.匹配范围

5.匹配特殊字符

如上,./-/[]等是正则表达式的特殊字符,如果要匹配含有这些字符的数据,就需要使用转义(escaping),//。如//.表示查找’.’。//也用来引用元字符(具有特殊含义的字符),如:

//f:表示换页

//n:表示换行

//r:表示回车

//t:表示制表

//v:表示纵向制表

Notes:

6.匹配字符串

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。