今天继续给大家介绍MySQL相关知识,本文主要内容是介绍一些MySQL数据库在运维、管理和使用中一些不被人注意的点,特别是一些刚入门MySQL数据库的新手,建议观看。

一、NULL和空字符串问题

我们都知道,MySQL数据库中,对于一些没有限制NOT NULL的字段,可以插入一个NULL,表示“空值”。但是,除了NULL之外,MySQL还允许插入一个特殊的数值’’。即两个引号,中间没有任何字符,也没有任何空格,这就表示这是一个空字符串,我们把这个空字符串称为MySQL中另一种“空值”,如下所示:

从上图中,不难看出,MySQL支持对任何数据类型插入这个特殊的“空值”,不管是字符类型、整数类型,甚至enum类型也可以插入这个特殊的“空值”(事实上,date和time类型也可以插入)。
那么,NULL和空字符串之前有什么区别呢?
1、空字符串不占用存储空间,NULL占用存储空间。
这是因为,在MySQL数据库中,’'是真的没有数据,但是对于NULL,MySQL要采用特殊的编码对该处的NULL进行表示。
2、空字符串比NULL效率高。
除了存储上的原因之外,还有一个原因在于NULL对于索引的影响非常大,索引的效率也会向相应下降很多。MySQL难以优化引用可空列查询,它会使索引、索引统计和值更加复杂。可空列需要更多的存储空间,还需要MySQL内部进行特殊处理。当可空列被处理后,每条记录都需要一个额外的字节,还可能导致MyISAM数据表中固定大小的索引编程可变大小的索引。

二、大小写问题

MySQL数据库是不区分大小写的,这一点有时可以帮助我们忽略大小写,在写SQL语句时更加方面。但是,有时却会使得我们在查询数据时出现问题,如下所示:

从上图中我们可以看出,本来我们想查询bob同学的相关信息,但是由于数据表中还存在一个Bob的同学,因此在MySQL忽略大小写的机制下,我们连同Bob的信息也查询了出来,那么,我们应该如何只查询bob,不查询Bob,达到我们想要的结果呢?
方法非常简单,可以在要匹配的条件前面,加一个binary关键字就可以了,加上了该关键字后,表示该字段的在匹配时,要严格按照二进制进行匹配,这样就解决了MySQL数据库大小写查询问题了,如下所示:

三、\G问题

我们在使用MySQL数据库时,大多数情况下都是以分号标识一个SQL语句的结束,这在大多数情况下是没有问题的,但是有时由于我们要查询的数据太长,使用分号结尾可能会出现格式换乱的现象,如下所示:

从上图中,我们可以看出,本来是一个很正常的select查询数据的语句,但是,由于该数据表中数据过长,无法在一行之内写下,因此出现了格式混乱的问题。
此时,我们可以使用\G来代替分号,如下所示:

\G代表按行显示,这样,我们在显示时就不会出现乱码问题了。

四、修改表字段问题

在数据库设计和规划时,我们就必须要考虑好整个业务的需求,以及日后的发展,这样好的对数据库库表结构进行更好的设计。在创建好数据库并且插入数据后,再来更改数据库的库表结构显示不是一个很好的解决方案,这会带来一系列的问题。
最简单、最直接的问题,就是因为数据表中已经存在的数据对修改的字段造成影响,MySQL数据库会拒绝我们的修改,如下所示:

从图中可以看出,当我们尝试向存在重复值得字段添加主键索引时,MySQL会拒绝该操作。
但是,问题在于,MySQL数据库的机制对于我们更改数据表过于“宽容”,导致一些本来该拒绝的操作,MySQL进行了“变通执行”,这就会导致我们的原本数据遭到破坏,如下所示:

在上图中,对数据库的字段类型进行修改,导致一些数据丢失了。

在上图中,对该数据表的name字段进行修改,使得修改后的长度无法存储下原有的数据,数据表修改成功,但是数据丢失了。
因此,我们在对已经插入数据的数据库字段进行修改表结构时,一定要慎重修改,审慎决策,必须要进行修改时,也必须提前做好备份,选择合适的时间,防止出现问题影响业务。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

MySQL使用注意事项(一)相关推荐

  1. mysql子查询sysdate_Oracle向MySQL 迁移相关事项

    Oracle向MySQL 迁移相关事项 从Oracle移植到MySQL主要有六个方面的内容需要移植,一是表Table,包括表结构和数据,二是触发器Trigger,三是存储过程Procedure,函数f ...

  2. mysql 触发器 注意事项_MySQL触发器的利弊-使用MySQL触发器时应该注意的事项

    在MySQL中,触发器可以在你执行INSERT.UPDATE或DELETE的时候,执行一些特定的操作.在创建触发器时,可以指定是在执行SQL语句之前或是之后执行这些操作.通过触发器,你可以实现一些业务 ...

  3. NodeJs实战-待办列表(5)-使用MySQL存储待办事项

    NodeJs实战-待办列表5-使用MySQL存储待办事项 项目结构 需要了解的基础知识 创建数据库,数据表 NodeJS 如何连接 MySQL,执行SQL 修改服务端代码 server.js 验证 添 ...

  4. 【转】 MySQL索引类型一览 让MySQL高效运行起来 mysql索引注意事项

    索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...

  5. mysql sql注意事项_mysql sql优化及注意事项

    sql优化分析 通过slow_log等方式可以捕获慢查询sql,然后就是减少其对io和cpu的使用(不合理的索引.不必要的数据访问和排序) 当我们面对具体的sql时,首先查看其执行计划 A.看其是否使 ...

  6. MySQL-WorkBench修改MySQL配置注意事项

    MySQL WorkBench提供 DBA 和开发人员的综合的工具的环境︰ 数据库设计与建模 SQL 开发 数据库管理 数据库迁移 最近测试了workbench,发现非常好用,尤其支持Mysql配置文 ...

  7. freebsd ports安装mysql_FreeBSD Ports 方式安装MySQL及注意事项

    FreeBSD 版本是 7.3,MySQL 版本是 5.0.90,Apache 版本是 2.2.14 ( 1.3.42 ) ,PHP 版本是 5.2.12. 我的安装顺序是先 MySQL, 然后安装 ...

  8. 【MySQL】MySQL开发注意事项与SQL性能优化步骤

    MySQL简介 地表最流行数据库 名副其实 什么是MySQL? 世界上应用最广泛且灵活的开源关系数据库 MySQL 是应用最广泛的开源关系数据库,是许多常见网站,应用程序和商业产品使用的主要关系数据存 ...

  9. mysql新手注意事项_学习mysql的注意事项!

    增删改查 先学增! 1:数字不用加双引号 2;字符串必须加双引号 3: 更新 所有行的单词:update 指点行:update 你想更新 谁的 就是 你想改哪一行! 需要记住的 有几个关键的问题!改 ...

  10. mysql主从注意事项_mysql主从复制亲测,以及注意事项

    本人亲测,windows作为mysql主服务器,linux作为从服务器,使用两个linux配置步骤都一样,测一遍而已:区别配置文件在于windwos是my.ini.linux在/etc/my.cof ...

最新文章

  1. MATLAB应用实战系列( 七十五) -图像处理应用 MATLAB实现基于分水岭算法的图像分割 (附matlab代码)
  2. 考系统架构设计师必看--《软件工程》网页教程
  3. android 图片识别白色区域进行裁剪_【研途技能贴】| 4款好用的图片处理软件推荐...
  4. 2016蓝桥杯省赛---java---B---8(四平方和)
  5. 利用索引数组排序 不改变原数组值的位置
  6. 互联网java面试_互联网java面试宝典
  7. 智慧城市数据采集的四大难点分析及解决措施
  8. 项目中碰到的ExceptionInInitializerError异常
  9. 未能正确加载“ProviderPackage”包。
  10. 面试硬核干货:纯CSS实现垂直居中,快来收藏吧
  11. nginx的安装及配置文件详解
  12. idea2020 个性化设置
  13. 单尺度retinex算法 matlab,单尺度retinex算法
  14. 手动调整 HP ML350 Gen9 服务器风扇转速
  15. 电脑未安装任何音频设备解决办法
  16. 串灯控制盒去掉怎么接_彩灯控制器原理图大全
  17. vue移动端复杂表格表头,固定表头与固定第一列
  18. 【Web安全从入门到放弃】06_文件包含漏洞
  19. 节后安全生产会议记要
  20. 全球及中国游戏耳机行业销售模式与动态盈利分析报告2022版

热门文章

  1. 每日算法系列【LeetCode 128】最长连续序列
  2. Pytorch损失函数BCELoss,BCEWithLogitsLoss
  3. 不会真有人觉得聊天机器人难吧——开篇
  4. 吴恩达深度学习——提高算法运行效率
  5. 3.2 softmax多分类、tensorflow2实现——python实战
  6. 【论文阅读】Automated quantification of white matter lesion in magnetic resonance imaging
  7. unity 源码_Unity-DataFlowGraph 读源码例子Tour笔记 14
  8. 数据库一对多做链接去重_数据库中一对多关系的数据,放到es中如何设计
  9. 中位数±四分位数表达_Python数据分析:强大字符串处理工具,正则表达式
  10. 7-6 计算符号函数的值 (10 分)