实战经验:Mysql的5个技巧(正则、随机抽取、分组、大小写,引擎)
1. 善用正则表达式:
应用技巧:常规查询语句不易查询出满足条件的结果时,此时可以借助正则表达式来查询
(1)Mysql常用的正则表达式模式简介
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 ;
得到的结果是:
合利用之后的语句是:
select age ,SUM(age) from person GROUP BY age with ROLLUP;
得到的结果是:
结果解释:最后的结果可以发现多了一行,这一行就是这个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,只要你不做特殊更改,以上注意事项可以不关注。但是在以下版本或者修改了引擎类型后,要注意以上问题。