MySQL学习(十一)

MySQL的函数
1 数学函数
2 字符串函数
3 日期和时间函数
4 条件判断函数
5 系统信息函数
6 加密解密函数
7 其他函数

2 字符串函数
length计算的是字节长度
char_length计算的是字符数

mysql> select tname,length(tname),char_length(tname) from t;

1327401-20190102155000168-566331720.png

题目:某网站有email字段存邮箱地址,想调查163,126,qq,gmail邮箱的比例

 select *,right(email,length(email)-position('@' in email)) from number;

1327401-20190103083348770-1948196904.png
可以修改表结构
把email拆成@前后2部分,放在两个列

题目:
新建一个表,插入如下数据
1327401-20190103090214616-1632682253.png

统计每个周的加班时间

mysql> select sum(num),week(dt) as wk from overtime group by wk;

1327401-20190103090057026-1752095470.png

md5加密算法
1 不可逆
2 碰撞性低

有没用md5重复的不同字符串哪?
答:有,但是寻找的过程,非常艰苦。

系统调试函数
user()函数返回“用户及所在的主机”,判断自己的身份
database(),返回我当前正在操作的库名
version() 查看当前MySQL的版本号

如果MySQL函数和PHP函数都实现某个功能,优先用哪一个?
1 MySQL的函数肯定是要影响查询速度,应该在建表时,通过合理的表结构减少函数的使用。比如email,按照@前后拆分
2 如果确实要用函数,比如时间的格式化,在MySQL里用date_format,在php里用date可以实现,优先放在业务逻辑层,即php层处理。
3 在查询时使用了函数,最大的一个坏处,以date_fromat(A),则A列的索引将无法使用。
如果你针对某列查询,而此列用上了函数判断,此列将不再使用索引。
举例

select name,email from table where right(position(email))='qq.com';

email列是有索引的,可以加快查询速度,但因为你使用的并不是email列,而是函数处理后的email的返回值。因此,email列的查询就非常缓慢了。
总结:where条件中,对某列使用了函数,则此列的索引不发挥作用。

转载于:https://www.cnblogs.com/Manual-Linux/p/10212263.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值