赞助商

盘点mysql中容易被我们误会的地方

发布时间:2019-03-02 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了盘点mysql中容易被我们误会的地方脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

  引语:mysql作为数据库的一大主力军,到处存在于我们各种系统中,相信大家都不陌生!但是,你知道你能用不代表你知道细节,那我们就来盘点盘点其中一些我们平时不太注意的地方,一来为了有趣,二来为了不让自己踩坑。

  声明:要想知道细节,那就去阅读源码,我实在没那本事,只能从片面上来说一些事!

  1. 不区分大小写(字段名)

    mysql的查询字段名不区分大小写,但是查询的内容是要区分大小写的,,如:

uid,v_state all_user username uid,v_state all_user USERNAME ; <span style="color: #0000ff;">SELECT uid,v_state <span style="color: #0000ff;">FROM all_user <span style="color: #0000ff;">WHERE USERname <span style="color: #808080;">= <span style="color: #ff0000;">'<span style="color: #ff0000;">SUNYUE<span style="color: #ff0000;">'; <span style="color: #808080;">//查不到信息,内容要区分大小写

  2. 模糊匹配([_]匹配任意字符)

    虽说模糊匹配有点正则的意思,但是你并不能像正则一样自由地在数据库里进行匹配,!(附名词:全文检索sphinx)

uid,v_state all_user USERNAME ; uid,v_state all_user USERNAME ; <span style="color: #0000ff;">SELECT uid,v_state <span style="color: #0000ff;">FROM all_user <span style="color: #0000ff;">WHERE USERNAME <span style="color: #808080;">NOT <span style="color: #808080;">LIKE <span style="color: #ff0000;">'<span style="color: #ff0000;">su%<span style="color: #ff0000;">'; <span style="color: #808080;">//not like取不包含的信息

  3. 怎样猜测一个功能

    mysql作为一个关系型数据库,面向的是普通的开发者,所以一切尽可能做到人性化。所以,如果你不知道某个功能是什么,那么,也许你可以猜得出来,因为,如果一个功能让别人无法猜出个大概,那么也许,他就是失败的设计。对于mysql,只要你英语水平稍微好一点点,就能很轻松的想到关系查询应该怎么写。所以,,哈哈哈!!!

  4. replace into 语法

    replace into 是一个很粗暴的插入方式,不过在适当的场景使用也是很有必要的,比如一些需要随时,就应该使用replace,但是对于一些自增型的表,则应尽量避免使用,因为这样会是对ID的一种浪费,也许没必要使用replace.

  5. insert into on dumplicate key update 语法

    这个写法相对来说就温柔多了,但是肯定是慢一点的,据说只有mysql才有这个特性哦,如果你不想在插入前去判断一下是否已存在该数据,也许这是一个不错的选择!

  6. explain 语法

    这是一个检查查询效果的有效方式,其实我本人很少使用这功能,但是,如果一个开发者经常使用这功能,那么,我相信,他本人肯定是个牛掰的人。通过这个命令,可以判断出你写的语句是否是优化的,如果不是,方向是什么。应该说,你用得多了,自己自然就知道结果了,还是多用用吧!

  7. 索引长度

    注意使用哦,超出范围,则超出预料!

  8. 库的复制

    1. 直接数据mysql自带的数据库备份恢复命令;2. 直接拷贝文件到目的服务器(注意进程占用问题);3. 使用工具进行同步;个人感觉第二种方式最简单!

  9. 分区

    对于一些可能会很大的表,需要进行分区操作,如果有这方面的需求,需要在最开始就添加至少一个分区,否则后期将无法操作分区。(至少我是这么认为的)

  10. 慢查询

    慢查询,这是一个对性能的监控问题,如果服务器表现太差,排查问题时,有这种慢查询的记录,排查起来将事半功倍!

  11. binlog

    binlog,一般都会用到这功能,对于数据恢复,数据操作记录等等有很必要功用!

  12. 其他应该要知道的视图、存储过程、事件...

    视图、事件等,这些都是一些高级应用,我发现很多项目根本不存在这种应用,到少我遇到的项目都几乎不涉及或者涉及了也是别人随便做做!但是高级功能还是要了解的,不管有没有用!

  13. 可使用的工具         

     ,作为远程安全操作数据库的方式,还是很不错的,但是作为本地操作的话,实在有点笨拙;,界面虽古板,但是还是比较方便的;,比较专业化,不过你得适应他的各种表现形式;,我想应该不会有人直接使用命令行进行操作吧,不过,命令行才是根本呢!

  需要加深的东西很多,如果有时间能力,应该深入源码!!!

  附加@2016-04-08:

  1. order by 和 group by 的一些小技巧

  group by 比order by先执行,order by不会对group by 内部进行排序,如果group by后只有一条记录,那么order by 将无效。要查出group by中最大的或最小的某一字段使用 max或min函数,但并没有做到将一整行筛选出来的效果。如:

  select a.id,a.add_time,max(b.id) as b_id,sort from t_main a left join t_main_sub b on a.id=b.main_id group by b.main_id order by b.id desc;

  

总结

以上是脚本之家为你收集整理的盘点mysql中容易被我们误会的地方全部内容,希望文章能够帮你解决盘点mysql中容易被我们误会的地方所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。
标签: