Mysql学习笔记八,Mysql优化篇,常用sql技巧和常见问题

  • 正则表达式 REGEXP
          
^
字符串开始处进行匹配
$
字符串末尾处进行匹配
.
匹配任意单一字符,包括换行符
[...]
匹配出括号内的任意字符
[^...]
匹配不出括号内的任意字符
......
......
  
 使用正则表达式 : 
select 'abcdefg' regexp '^a'; --从字符串开始进行匹配,匹配a。成功就返回1。
select 'exf' regexp '[abe]'; --字符串匹配abe中任意一个字符。 成功就返回1。
正则表达式可以使我们SQL写法更加简单易读。

  • 用rand()提取随机行。
select * from t1 order by rand(); --随机获取表t1的数据
select * from t1 order by rand() limit 2; --从表t1中随机获取2行

  • group by 的with rollup子句做统计。
详见mysql开发篇相关笔记, with rollup是用于针对每个分组进行统计
注意: 1 rollup与order by 互斥。
           2 limit用在rollup后

  • bit group functions做统计。
使用bit_and、bit_or和group by完成统计工作。 设计一个数值字段, 该字段不同位表示不同的意思, 用group by+bit_and/bit_or可以用来统计分组后统计信息, 如字段设计为客户每次购物购买的商品(第一位:牛奶,第二位:面包,第三位:土豆 等等) 。 通过bit_and+group by可以得到客户每次购物都会购买的商品。 通过bit_or+group by可以得到客户购买过什么商品。

  • 数据库表名、表名大小写问题。
windows 、mac os x对大小写不敏感, unix对大小写敏感
select * from t1 a where A.a >102; --unix中报错, windows、mac os x可以执行。
mysql如何在硬盘中保存、使用表名和数据库名由lower_case_tables_name这个系统变量来决定。

0
使用 CREATE TABLE 或 CREATE DATABASE 语句指定的大写和小写在硬盘上保存表名和数据库名。名 称对大小写敏感。在 UNIX 系统中的默认设置就是这个值
1
表名在硬盘上以小写保存,名称对大小写敏感。MySQL 将所有表名转换为小写以便存储和查找。 该值为 Windows 和 Mac OS X 系统中的默认值
2
表名和数据库名在硬盘上使用 CREATE TABLE 或 CREATE DATABASE 语句指定的大小写进行保存,但 MySQL 将它们转换为小写以便查找。此值只在对大小写不敏感的文件系统上适用

  • 使用外键的注意问题
innodb 存储引擎支持对外部关键字的约束条件检查。 其他的引擎,可以指定外键,但没有效果,只用于备忘录或注释的作用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值