首页 > 社交 > 科普中国

面渣逆袭:MySQL六十六问,两万字+五十图详解!有点六

常驻编辑 科普中国 2022-06-22 字段   路由   详解   索引   事务   版本   操作   数据库   引擎   数据   日志
UTC 到 ``2038-01-09 03:14:07.999999 UTC
  • 存储空间:DATETIME 的存储空间为 8 字节;TIMESTAMP 的存储空间为 4 字节
  • 时区相关:DATETIME 存储时间与时区无关;TIMESTAMP 存储时间与时区有关,显示的值也依赖于时区
  • 默认值:DATETIME 的默认值为 null;TIMESTAMP 的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP)
  • 7.MySQL中 in 和 exists 的区别?

    MySQL中的in语句是把外表和内表作hash 连接,而exists语句是对外表作loop循环,每次loop循环再对内表进行查询。我们可能认为exists比in语句的效率要高,这种说法其实是不准确的,要区分情景:70s拜客生活常识网

    1. 如果查询的两个表大小相当,那么用in和exists差别不大。
    2. 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。
    3. not in 和not exists:如果查询语句使用了not in,那么内外表都进行全表扫描,没有用到索引;而not extsts的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。

    8.MySQL里记录货币用什么字段类型比较好?

    货币在数据库中MySQL常用Decimal和Numric类型表示,这两种类型被MySQL实现为同样的类型。他们被用于保存与货币有关的数据。70s拜客生活常识网

    例如salary DECIMAL(9,2),9(precision)代表将被用于存储值的总的小数位数,而2(scale)代表将被用于存储小数点后的位数。存储在salary列中的值的范围是从-9999999.99到9999999.99。70s拜客生活常识网

    DECIMAL和NUMERIC值作为字符串存储,而不是作为二进制浮点数,以便保存那些值的小数精度。70s拜客生活常识网

    之所以不使用float或者double的原因:因为float和double是以二进制存储的,所以有一定的误差。70s拜客生活常识网

    9.MySQL怎么存储emoji?

    MySQL可以直接使用字符串存储emoji。70s拜客生活常识网

    但是需要注意的,utf8 编码是不行的,MySQL中的utf8是阉割版的 utf8,它最多只用 3 个字节存储字符,所以存储不了表情。那该怎么办?70s拜客生活常识网

    需要使用utf8mb4编码。70s拜客生活常识网

    alter table blogs modify content text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci not null;
    

    10.drop、delete与truncate的区别?

    三者都表示删除,但是三者有一些差别:70s拜客生活常识网


    deletetruncatedrop
    类型属于DML属于DDL属于DDL回滚可回滚不可回滚不可回滚删除内容表结构还在,删除表的全部或者一部分数据行表结构还在,删除表中的所有数据从数据库中删除表,所有数据行,索引和权限也会被删除

    相关阅读:

  • 字段类型有哪些(字段长度怎么设置)
  • 技术人必备的接口测试神器:apifox、apipost、yapi,实用
  • 我做开发测试犯的错
  • 基于SpringBoot微服务开发中的异常处理最佳实践
  • MySQL专题1:
  • 你今天玩游戏了吗?游戏道具了解下
  • 什么是CSRF
  • 最全SQL
  • 云原生(十四)
  • MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。