MySQL作为数据库的一大主力军,到处存在于我们各种系统中,相信大家都不陌生!但是,你知道你能用不代表你知道细节,那我们就来盘点盘点其中一些我们平时不太注意的地方,一来为了有趣,二来为了不让自己踩坑。
声明:要想知道细节,那就去阅读源码,我实在没那本事,只能从片面上来说一些事!
不区分大小写(字段名)
MySQL的查询字段名不区分大小写,但是查询的内容是要区分大小写的,所以能用下划线命名的就不要用大小写来区分命名了,如:
SELECT uid,v_state FROM all_user WHERE username = 'sunyue';
SELECT uid,v_state FROM all_user WHERE USERNAME = 'sunyue';            //与上一个语句结果一样,字段不区分大小写
SELECT uid,v_state FROM all_user WHERE USERname = 'SUNYUE';            //查不到信息,内容要区分大小写
模糊匹配([_]匹配任意字符)
虽说模糊匹配有点正则的意思,但是你并不能像正则一样自由地在数据库里进行匹配,做到尽量简化匹配就好!(附名词:全文检索sphinx)
SELECT uid,v_state FROM all_user WHERE USERNAME LIKE 'su_yue';    //下划线[_]匹配任意单个字符
SELECT uid,v_state FROM all_user WHERE USERNAME LIKE 'su%yue';    //%匹配任意多个字符
SELECT uid,v_state FROM all_user WHERE USERNAME NOT LIKE 'su%';        /t like取不包含的信息
怎样猜测一个功能
mysql作为一个关系型数据库,面向的是普通的开发者,所以一切尽可能做到人性化。所以,如果你不知道某个功能是什么,那么,也许你可以猜得出来,因为,如果一个功能让别人无法猜出个大概,那么也许,他就是失败的设计。对于mysql,只要你英语水平稍微好一点点,就能很轻松的想到关系查询应该怎么写。所以,猜测的能力,在于你英语的水平,哈哈哈!!!
replace into 语法
replace into 是一个很粗暴的插入方式,不过在适当的场景使用也是很有必要的,比如一些需要随时覆盖式写入的数据,就应该使用replace, 但是对于一些自增型的表,则应尽量避免使用,因为这样会是对ID的一种浪费,也许没必要使用replace.
insert into on dumplicate key update 语法
这个写法相对来说就温柔多了,但是速度肯定是慢一点的,据说只有mysql才有这个特性哦,如果你不想在插入前去判断一下是否已存在该数据,也许这是一个不错的选择!
explain 语法
这是一个检查查询效果的有效方式,其实我本人很少使用这功能,但是,如果一个开发者经常使用这功能,那么,我相信,他本人肯定是个牛掰的人。通过这个命令,可以判断出你写的语句是否是优化的,如果不是,方向是什么。应该说,你用得多了,自己自然就知道结果了,还是多用用吧!
索引长度
myisam的索引长度最大为1000字节,innodb的索引长度最大为767字节!注意使用哦,超出范围,则超出预料!
库的复制
1)直接数据mysql自带的数据库备份恢复命令;
2)直接拷贝文件到目的服务器(注意进程占用问题);
3)使用工具进行同步;个人感觉第二种方式最简单!
分区
对于一些可能会很大的表,需要进行分区操作,如果有这方面的需求,需要在最开始就添加至少一个分区,否则后期将无法操作分区。(至少我是这么认为的)
慢查询
慢查询,这是一个对性能的监控问题,如果服务器表现太差,排查问题时,有这种慢查询的记录,排查起来将事半功倍!
binlog
binlog,一般都会用到这功能,对于数据恢复,数据操作记录等等有很必要功用!
其他应该要知道的视图、存储过程、事件...
视图、事件等,这些都是一些高级应用,我发现很多项目根本不存在这种应用,到少我遇到的项目都几乎不涉及或者涉及了也是别人随便做做!但是高级功能还是要了解的,不管有没有用!
可使用的工具
phpMyAdmin, 作为远程安全操作数据库的方式,还是很不错的,但是作为本地操作的话,实在有点笨拙;sqlyog, 界面虽古板,但是还是比较方便的;navicat, 比较专业化,不过你得适应他的各种表现形式;命令行,我想应该不会有人直接使用命令行进行操作吧,不过,命令行才是根本呢!
需要加深的东西很多,如果有时间能力,应该深入源码!

mysql 易错误理解的更多相关文章

  1. MySQL数据库错误server_errno=2013的解决

    MySQL数据库错误server_errno=2013的解决 一组MySQL复制环境中的Master意外掉电,重启后Master运行正常,但该复制环境中的其它slave端,Error Log中却抛出的 ...

  2. 在本地计算机无法启动MYSQL服务错误1067进程意外终止

    在本地计算机无法启动MYSQL服务错误1067进程意外终止 这种情况一般是my.ini文件配置出错了, 你可以删除系统目录下的my.ini文件, 把下面的内容重新写入my.ini文件试试, 要适当地改 ...

  3. MySQL启动错误排查

    一般情况下mysql的启动错误还是很容易排查的,但是今天我们就来说一下不一般的情况.拿到一台服务器,安装完mysql后进行启动,启动错误如下: 有同学会说,哥们儿你是不是buffer pool设置太大 ...

  4. mysql 启动错误1026

    进入“事件查看器”“应用程序”果然发现很多MySql的错误Default storage engine (InnoDB) is not available 于是进入MySql的安装目录找到my.ini ...

  5. mysql启动错误与修复

    昨天想着备份数据库,但是没有成功,错误原因是#Got errno 28 on write 查到是因为磁盘空间不足或者mysql设置中max_allowed_packet变量设置过小 在mysql命令行 ...

  6. 查看MySQL的错误日志的方法

    我们经常在运行MySQL时会出一些错误,也经常被这些错误搞得晕头转向.当然解决这些问题的首要任务是找到日志信息. MySQL的错误信息是在data目录下的,且文件名为<hostname>. ...

  7. replicate-do-db参数引起的MySQL复制错误及处理办法

    replicate-do-db配置在MySQL从库的my.cnf文件中,可以指定只复制哪个库的数据.但是这个参数有个问题就是主库如果在其他的schema环境下操作,其binlog不会被从库应用,从而出 ...

  8. MySQL常见错误类型

    MySQL常见错误类型:1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010: ...

  9. MySql 1045错误

    配置时以管理员身份运行MySQL Instance Configuration Wizard 当你登录MySQL数据库出现:Error 1045错误时(如下图),就表明你输入的用户名或密码错误被拒绝访 ...

随机推荐

  1. 倒排索引PForDelta压缩算法——基本假设和霍夫曼压缩同

    PForDelta算法 PForDelta算法最早由Heman在2005年提出,它允许同时对整个chunk数据(例128个数)进行压缩处理.基础思想是对于一个chunk的数列(例128个),认为其中占 ...

  2. hdoj--1418--抱歉(水题)

     抱歉 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  3. python 端口扫描程序

    #! /usr/bin/env python3 #-*- coding:utf-8 -*- import socket import threading OPEN_COUNT = 0 lock = t ...

  4. 5.14web相关概念

    1.软件架构 1.C/S:客户端/服务器端 2.B/S:浏览器/服务器端 2.资源分类 1.静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析如:html,cs ...

  5. 5.12redis

    Window配置Redis环境和简单使用 一.关于Redis Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字符串.哈希表.列表.集合.有序 ...

  6. create-react-app 引入ant design 及 使用 less

    全局引入: 第一步:全局安装 create-react-app npm install create-react-app -g 第二步:安装 yarn npm install -g yarn 第三步: ...

  7. Android 存储路径选择

    Android能用来存储的地方有两个,一个是手机内置的存储空间,一个是外置的SD卡,内置的存储空间一般比较小,所以应用的缓存建议存储在外置的SD卡中. 在Android系统中如何获得存储的路径呢? p ...

  8. 【Oracle】DBMS_STATS.GATHER_TABLE_STATS

    月初一直在忙保监会报送的事情,苦逼的保险行业的ETL大家都懂的.今天闲来无事查看了一下前阵子的报送存储过程,发现系统隔一段时间就会调用一次DBMS_STATS.GATHER_TABLE_STATS,所 ...

  9. C/C++关键字

    1. static关键字 作用 在函数体内静态变量具有记忆功能.在函数体内定义的静态变量离开时不会被清除,在下次函数调用的时候其值保持不变. 限制变量或函数的使用范围.static修饰的全局变量或者函 ...

  10. 测试 Zoundry Raven

    安装很方便,看看发布的内容是否好用 但发现从博客上取下来的内容是有问题的,不能正常打开