PHP低级编程的兄弟是这样来看这个问题的,我作下笔录如下,期望能客观的理解这个enum字段的优点及缺点:

膘哥观点:

enum有优点。但个人觉得。。。缺点更多,客观的讲:优点主要是在建数据 库的时候就可以把一些值给规范好。缺点是。。enum不适合PHP。主要是PHP是弱类型,如:你insert into ..... set a= 1,你没法知道你是想 a= '1' 还是 a= 1(a='1'是插入值1,a=1是插入enum的第一个值,尤其php弱类型的,如果int的,很少有人在sql里加双引号。),这是PHP和 mysql 在使用enum 最大的问题。所以。。安心点啦。干脆点直接tinyint。

单曲观点:

我觉得没什么优点,对数字型的enum,简直就是梦魇,boolean  tinyint(1) 0,1 status  tinyint(1)  1,2,3,4,5,6..tinyint欢淫你~~。如:audit_result enum(1,2,3),set audit_result = 1;...容易出现膘哥所说的混淆。

简单观点:

少用,一般都是用tinyint替代。

天枫观点:

我觉得除了状态直观  没什么优点,我一般直接int,tinyint([1or2or3]) 到底有啥区别?(后面会简单探讨下,这里面的1or2or3区别。)

中庸观点:

a=1是插入enum的第一个值,尤其php弱类型的,如果int的,很少有人在sql里加双引号,基本上是不加引号的。

竖琴螺观点:

六种情况就:tinyint(1)  -1,-2,1,2,3,4

上面各种观点重点集中在PHP这种弱类型语言对引号不重视,程序员不写容易引起插入的语句不是自己想要的结果的问题,容易出现int时没有用引号导致插入了新值而不是定的那个值:

表结构如下:

正常带引号插入enum:

PHP的弱类型问题,特别是对int类型的情况,实践如下:

如果没有带引号插入enum字段后如下(是第一个值none):

如果没有带引号插入enum字段后如下(是第2个值success):

结论:要插入enum的值,字段必须加引号,不加引号当然是数字,数字就是key,不是value。

规劝:

1)enum是整型这样的错误很容易发生,尤其是php弱类型的,一般新来一个人,没注意enum类型,就会犯错。

2)数据库说明清楚的话,或者可选择的全是字符串的话,还没什么,但是里面有数字,难免有新手犯错,养成加引号的习惯很重要。

最终结论:

历史原因,要把enum改成tinyint程序改动太大了,用了的没必要改·~,以后新建的时候,尽量使用tinyint就好。

这种字段的重复内容过多的,索引建不建,关系不大,这种在mysql叫索引的势太低,其查询效果不太好

https://www.cnblogs.com/-mrl/p/5096447.html

mysql数据库enum部分乱码_要慎用mysql的enum字段的原因相关推荐

  1. mysql数据库怎么插入时间_给mysql数据库插入当前时间

    mysql相关的三个函数有: NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中. CURDATE()以'YYYY-MM-DD'的格式返 ...

  2. mysql 数据库还原 不齐_请教mysql数据库还原问题。

    你的位置: 问答吧 -> 数据库 -> 问题详情 请教mysql数据库还原问题. 50多m,能不能拆分?上传到服务器上总是超时.怎么办? [ 本帖最后由 geniux 于 2007-9-2 ...

  3. MySQL数据库实用教程考核_《MySQL数据库实用教程》郑明秋,蒙连超,赵海侠【pdf】...

    内容简介 郑明秋.蒙连超.赵海侠主编的<MySQL数据库实用教程>是作者在多年的数据库开发实践与教学经验的基础上,根据计算机相关专业的职业岗位能力需求及学生的认知规律倾心组织编写的.本教材 ...

  4. MySQL数据库test连接语句_【MySQL数据库开发之二】MySQL 基础语句的书写与操作!...

    本篇Himi简单介绍一些MySQL数据库的基础操作: 注:mysql 语句对大小写不敏感,语句以分号";"标识语句结束: 1.   首先使用两个简单的查询语句: 查询当前版本:se ...

  5. mysql数据库密码为空_注意MySQL数据库用户root密码为空

    注意MySQL数据库用户root密码为空 文章作者:网友投稿 发布时间:2008-08-14 19:11:51 来源:网络 看到这大家肯定知道了,就是利用mysql输出一个可执行的文件而已.为什么不用 ...

  6. mysql数据库开启远程连接_安装MySQL数据库并开启远程访问

    一.安装MySQL数据库 MySQL安装在系统盘下(C:\Program Files),方便系统备份. 1.双击安装程序,勾选"I accept the license terms" ...

  7. mysql数据库更改文档_更改MySQL数据库目录位置

    更改MySQL数据库目录位置 MySQL默认的数据文档存储目录为/var/lib/mysql.假如要把MySQL目录移到/home/data下需要进行下面几步: 1.home目录下建立data目录 c ...

  8. mysql数据库后台命令备份_使用MySQL命令行备份及恢复数据库

    使用MySQL命令行备份及恢复数据库 下文对使用MySQL命令行备份及恢复数据库的方法及步骤进行了详细的介绍,如果您对MySQL命令行方面感兴趣的话,不妨一看. AD: 使用MySQL命令行,可以实现 ...

  9. mysql数据库约束详解_基于MySQL数据库的数据约束实例及五种完整性约束介绍

    为了防止不符合规范的数据进入数据库,在用户对数据进行插入.修改.删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确.有效.相容. ...

最新文章

  1. I - Arbitrage POJ - 2240
  2. 2021人工神经网络第二次作业要求
  3. UIButton 的 imageEdgeInsets 和 titleEdgeInsets
  4. 安装Linux双系统取消快速启动,为什么在双启动时禁用Windows 8上的快速启动?
  5. java http 接口制定_java調用http接口
  6. MFC略缩图控件实现
  7. jQuery安装和语法
  8. WPF 左侧菜单样式
  9. DCB(串口的DCB结构)
  10. 2749元!华为nova 5开启预售:7nm工艺麒麟810处理器加持
  11. vue.js简单登录界面访问mysql_Vuejs实战项目:登陆页面
  12. php制作国旗头像图片,不要再@微信官方了,自己动手一秒制作国旗头像
  13. Dropping Balls
  14. cadence如何导入gds_如何利用Allegro SiP Layout 5步实现复杂引线框架封装设计?
  15. Linux添加硬盘并挂载(超细致)
  16. 【数学分析】伯努利不等式
  17. xcode4版本在哪里下载
  18. 网件r6300安装mysql数据库_网件(NETGEAR)R6300 V1/V2路由器设置教程【图文】
  19. laya 怎么生成签名_手写签名在线生成器一笔签-手写签名在线生成器微信
  20. 现代RnB流行音源 – StudioLinkedVST Pure Modern RnB Kontakt

热门文章

  1. linux7空闲内存,centos7 内存占用率高处理问题
  2. 鸿蒙硬件HI3861-MQTT
  3. python展开list嵌套,并解决from compiler.ast import flatten报错ModuleNotFoundError: No module named ‘compiler‘
  4. pandas Dataframe删除缺失值
  5. 呆萌的图模型学习——基本概念(一)
  6. jsp基础代码片段(含sql与js和jsp的交互)与简易贴吧网站项目
  7. windows 新建mysql权限设置_Windows下设置MySQL安全权限_mysql
  8. this指向 - 总结
  9. thinkphp5.0自定义验证器
  10. 模仿Bootstrap插件的放大镜插件