实战经验:Mysql的5个技巧(正则、随机抽取、分组、大小写,引擎)

1. 善用正则表达式:

应用技巧:常规查询语句不易查询出满足条件的结果时,此时可以借助正则表达式来查询

(1)Mysql常用的正则表达式模式简介

实战经验:Mysql的5个技巧(正则、随机抽取、分组、大小写,引擎)

2)利用正则表达式查询的举例

1)“$”在字符串的末尾处进行匹配。以下例子是返回person表中的personname字段以1结尾的所有记录

select personname from person where personname REGEXP '1$' ;

2)“[…]”匹配出括号内的任意字符。以下例子是返回person表中的personname字段匹配“nab”中的任意一个字符所有记录。

select personname from person where personname REGEXP '[nab]' ;

2. 随机抽取数据获取的方法:综合利用rand()和order by

具体使用方法是:

select * from person order by rand() limit 3;

解释:利用以上语句即可实现每次从person表中随机获取3条数据。因此,以上语句每次执行得到的结果是不一样的。

3. 分组统计的增强方式:综合利用group by和with rollup

没有联合利用之前的语句是:

select age ,SUM(age) from person GROUP BY age ;

得到的结果是:

实战经验:Mysql的5个技巧(正则、随机抽取、分组、大小写,引擎)

合利用之后的语句是:

select age ,SUM(age) from person GROUP BY age with ROLLUP;

得到的结果是:

实战经验:Mysql的5个技巧(正则、随机抽取、分组、大小写,引擎)

结果解释:最后的结果可以发现多了一行,这一行就是这个age组的所有数据总和,加上with rollup就能得到这个结果。

4. Mysql的数据库名字和表名大小写问题

Mysql数据库在unix环境下,由于操作系统对大小写的敏感性,导致了对mysql数据库的大小写是敏感的。

而在windows和mac下大小写不敏感。

例如:以下语句 select age from person pp where PP.id = 2;

这样在unix下是会报错的,因为引用pp时,同时用了小写和大写。

因此建议:用mysql创建数据库名和表名时,统一用小写。

5. mysql的外键使用问题:

MySQL有两种常用的引擎类型:MyISAM和InnoDB。目前只有InnoDB引擎类型支持外键约束。

因此,在创建外键时,要注意以下事项:

1. 两张表必须都是InnoDB表,并且它们没有临时表。

2. 建立外键关系的对应列必须具有相似的InnoDB内部数据类型。

3. 建立外键关系的对应列必须建立了索引。

但是,mysql从5.5版本以上默认的引擎类型是InnoDB,只要你不做特殊更改,以上注意事项可以不关注。但是在以下版本或者修改了引擎类型后,要注意以上问题。


实战经验:Mysql的5个技巧(正则、随机抽取、分组、大小写,引擎)

相关推荐