字节流的博客

MySQL 常用技巧

1. 正则表达式

MySQL中REGEXP在进行匹配时是区分大小写的.
示例代码:

1
2
3
SELECT name, email
FROM usr
WHERE email REGEXP '@163[.,]com$';

2. RAND() 随机行

可以对结果集进行随机排序,对做统计性的东西有帮助,如:随机抽样;
示例代码:

1
2
3
SELECT *
FROM usr
ORDER BY RAND();

3. GROUP BY + WITH ROLLUP

不仅能检索出各组的聚合信息,还可以检索出本组的聚合信息;
示例代码:

1
2
3
SELECT year,country,product,sum(profit)
FROM sales
GROUP BY year,country,product WITH ROOLUP;

【注意】

  • 使用 ROLLUP 时不能使用 ORDER BY 进行排序;
  • LIMITROLLUP 后面;

4. BIT GROUP FUNCTIONS

将int类型数值转化成二进制,用0,1表示有无,方便做统计;
示例代码:

  • 统计顾客在商店都买过什么商品:

    1
    2
    3
    SELECT customer_id, bit_or(kind)
    FROM order_rab
    GROUP BY customer_id;
  • 统计顾客在商店每次都买什么商品:

    1
    2
    3
    SELECT customer_id, bit_and(kind)
    FROM order_rab
    GROUP BY customer_id;

5. 大小写敏感

MySQL 数据库名称、表名和字段名大小写的敏感性取决于宿主系统的大小写敏感性,UNIX 大小写敏感,WINDOWS && MAC 就大小写不敏感。因为在 MySQL,一个数据库就对于一个文件夹,一个表对于至少一个文件;可以在MySQL启动时设置 lower_case_tables_name 系统环境变量来确实是否要大小写敏感;

6. 外键

只有 InnoDB 存储引擎支持外键,在建表时如果引用了外键,并且存储引擎选择的是非 InnoDB,则该外键并不起作用,但并不会报错,只会作为备忘或注释告诉用户新建表中正在引用其他表的某一列。

Thanks! 😊