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条件中,对某列使用了函数,则此列的索引不发挥作用。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 2025成都.NET开发者Connect圆满结束
· 后端思维之高并发处理方案
· 在 VS Code 中,一键安装 MCP Server!
· 千万级大表的优化技巧
· 用一种新的分类方法梳理设计模式的脉络