17 MySQL的小技巧
1.正则表达式的使用
^ | 在字符串开始处进行匹配 |
$ | 在字符串末尾处进行匹配 |
. | 匹配任意单个字符,包括换行符 |
[...] | 匹配出括号内的任意字符 |
[^...] | 匹配不出括号内的任意字符 |
a* | 匹配零个或多个a(包括空串) |
a+ | 匹配1个或多个a(不包括空串) |
a? | 匹配1个或0个a |
a1|a2 | 匹配a1或a2 |
a(m) | 匹配m个a |
a(m,) | 匹配m个或更多个a |
a(m,n) | 匹配m~n个a |
a(,n) | 匹配0~n个a |
(...) | 将模式元素组成单一元素 |
2.巧用RAND()提取随机样本
例如:SELECT * FROM sales ORDER BY RAND() LIMIT 5 ;
3.利用GROUP BY 的 WITH ROLLUP 子句做统计
例如SELECT year , country , product , sum(profit) FROM sales GROUP BY year , country , product WITH ROLLUP .
4.用BIT GROUP FUNCTIONS 做统计
主要介绍 GROUP BY 语句 和 BIT_AND , BIT_OR 函数完成统计工作.
BIT_* 这个函数一般是做数值之间的逻辑位运算, 但是当把它们与GROUP BY子句联合使用的时候,就可以做一些其他的任务.
统计每个用户 买了哪些商品的详细清单.
每个商品按顺序, 00000 , 买了的置为1 , 这样bit_or 就可以做逻辑或操作
同理可以使用BIT_AND() 来查询 每个顾客每次来本超市都会购买的商品.
5.数据库名, 表明大小写问题
数据库对应服务器系统的目录, 库中的数据表对应目录中的文件.因此所用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性.
列,索引,存储子程序,触发器米国在任何平台对大小写不敏感
UNIX中,表别名区分大小写 ; 其他 Windows Mac OS X中对大小写不敏感.
6.使用外键需要注意的问题
InnoDB 外键起作用,其他引擎如MyISAM中,使用 REFERENCES tbl_name(col_name) 定义列时可以使用外部关键字 , 但是没有效果,只是用来 作为备忘录/注释 来提醒用户,这个列正指向另一个表中的某个列.
SHOW CREATE TABLE 命令查看建表语句时, MyISAM存储引擎并不显示外键语句,而InnoDB存储引擎则显示.