• MySQL学习(十一)


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

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

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

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

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


    可以修改表结构
    把email拆成@前后2部分,放在两个列

    题目:
    新建一个表,插入如下数据

    统计每个周的加班时间

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

    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条件中,对某列使用了函数,则此列的索引不发挥作用。

  • 相关阅读:
    Ruby系列:玩转闭包(Block,Proc,lambda)
    C# 中where关键字【MSDN】
    web应用程序中慎用static变量
    面向对象的javascript(一)
    原型模式 对象深浅复制
    存储过程:异地备份数据库文件
    正则表达式 [笔记]
    连接Oracle数据库代码
    在Eclipse下搭建Android开发环境教程,HelloWord
    Android开发之旅:环境搭建及HelloWorld
  • 原文地址:https://www.cnblogs.com/Manual-Linux/p/10212263.html
Copyright © 2020-2023  润新知