数据库|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 by
与limit
SELECT * FROM a2 ORDER BY a_id DESC,t_id desc LIMIT 1
注意:
order by
的位置,from
之后,limit
之前。
B、数据过滤操作符(and/or/in/not)
注意:优先级
当含有and
和or
时,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 取反
NOT
对IN
、BETWEEN
、exists
子句取反。
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使用通配符,注意:在通配符能完成的时候就不用正则,因为正则可能慢点,当然正则也能简化通配符,完成更大的作用。所以要有所取舍。
LIKE
与REGEXP
的区别:
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.匹配字符串