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

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

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

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

    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‘;            //查不到信息,内容要区分大小写

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

    虽说模糊匹配有点正则的意思,但是你并不能像正则一样自由地在数据库里进行匹配,做到尽量简化匹配就好!(附名词:全文检索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%‘;        //not like取不包含的信息

  3. 怎样猜测一个功能

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

  4. replace into 语法

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

  5. insert into on dumplicate key update 语法

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

  6. explain 语法

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

  7. 索引长度

    myisam的索引长度最大为1000字节,innodb的索引长度最大为767字节!注意使用哦,超出范围,则超出预料!

  8. 库的复制

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

  9. 分区

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

  10. 慢查询

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

  11. binlog

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

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

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

  13. 可使用的工具       

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

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


获取【下载地址】   QQ: 313596790   【免费支持更新】
支持三大数据库 mysql  oracle  sqlsever   更专业、更强悍、适合不同用户群体
新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统
A 代码生成器(开发利器);   
   增删改查的处理类,service层,mybatis的xml,SQL( mysql   和oracle)脚本,   jsp页面 都生成
   就不用写搬砖的代码了,生成的放到项目里,可以直接运行
B 阿里巴巴数据库连接池druid;
  数据库连接池  阿里巴巴的 druid。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势
C 安全权限框架shiro ;
  Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠
D ehcache 分布式缓存;
  是一个纯Java的进程内缓存框架,具有快速、精干等特点,广泛使用的开源Java分布式缓存。
E 微信接口开发(后续会加入Activiti5 工作流 )赠送一个jbpm工作流大型ERP系统(含OA、财务、分销)参考学习
F WebSocket 通信技术 (即时聊天、及时站内信并声音提醒、实时在线管理)

时间: 2024-11-05 14:38:01

盘点mysql中容易被我们误会的地方的相关文章

盘点MySQL中比较实用的函数

之前小编在工作中遇到一些处理数据的问题,例如完成日期格式化,获取几天后的时间,生成指定格式的编码等问题,这时候小编经常会写一大堆逻辑代码来进行处理,还自己感觉自己很流弊的样子,后来却发现同事遇到相同的问题并没有写一大堆逻辑代码,好奇心下促使我偷偷的看了下同事的代码,才明白他们很喜欢使用sql中的函数直接处理了,大大减少了代码量,于是小编决定加强这方面的知识,多积累多看,把比较实用的一些sql函数列举出来,望指点一下. NO1: datediff函数 datediff函数返回两个日期之间的天数 语

003 mysql中exists的使用

mysql中exists可以使用在两个地方,一个是在创建库或者表的时候,配合if 使用,一个是在子查询中. # 和if一起使用,对库或表都可以使用 create database if not exists yaco charset utf8; drop database if exists yaco; # 在子查询中使用,返回True或者False,条件满足时执行前面的代码 select * from tb1 where exists(select id from tb2 where name

【个人笔记】《知了堂》MySQL中的数据类型

MySQL中的数据类型 1.整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) 3个字节  范围(-8388608~8388607) int(m) 4个字节  范围(-2147483648~2147483647) bigint(m) 8个字节  范围(+-9.22*10的18次方) 取值范围如果加了unsigned,则最大值翻倍,如tinyint un

mysql中int、bigint、smallint和tinyint的区别与长度

对比发现 int bigint smallint 和 tinyint 类型,如果创建新表时没有指定 int(M) 中的M时,默认分别是 : int             -------     int(11) bigint       -------     bigint(20) smallint   -------     smallint(6) tinyint     -------     tinyint(4) 下面是这几种类型的取值范围 参考:http://www.2cto.com/d

mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法

mysql中计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2) 说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差.其结果的单位由interval 参数给出.interval 的法定值同TIMESTAMPADD()函数说明中所列出的相同. mysql> SELECT TIMESTAMPDIFF(MONTH,'200

SQL-GROUP BY语句在MySQL中的一个错误使用被兼容的情况

首先创建数据库hncu,建立stud表格. 添加数据: create table stud( sno varchar(30) not null primary key, sname varchar(30) not null, age int, saddress varchar(30) ); INSERT INTO stud VALUES('1001','Tom',22,'湖南益阳'); INSERT INTO stud VALUES('1002','Jack',23,'益阳'); INSERT

MYSQL中存储过程的创建,调用及语法

MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句.特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗.现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高. 第一部分:创建一个简单的无参的存储过程 1 用mysql客户端登入

在Mysql中如何显示所有用户?

在Mysql中如何显示所有用户? 这是一个mysql初学者经常问到的一个问题,今天我们就带大家看看是如何在Mysql中显示所有用户的.通常我们在mysql中使用SHOW DATABASES可以显示所有的数据库,SHOW TABLES将会显示所有的数据表,那么你是不是会猜测显示所有用户的命令是SHOW USERS呢?不不不,并不是的,现在让我们一起来看看如何显示所有用户吧. 在Mysql中显示所有用户 1.登录数据库 首先,你需要使用如下命令登录到数据库,注意,必须是root用户哦~ ## mys

mysql中bigint、int、mediumint、smallint 和 tinyint的取值范

mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigint.int.mediumint.smallint 和 tinyint的语法介绍,如下:1.bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到 18446744073709551615.一位为 8 个字节. 2.int 一个正常大小整数.有符号