• 多表字段尽量唯一

    比如group表,那么所有字段前面都加上一个g(group的第一个字母),比如name字段就变成gname

    • **datetime** 类型 与 **timestamp** 类型
    1. DATETIME 的默认值为 null; TIMESTAMP 的字段默认不为空(not null)默认值为 CURRENT_TIMESTAMP
      如果不做特殊处理,并且update语句中没有指定该列的更新值,则默认更新为当前时间( CURRENT_TIMESTAMP
      这个区别就解释了为什么平时我们都不用可以管这个字段就能自动更新了,因为多数时候用的是timestamp;而此处用的是datetime,不会有自动更新当前时间的机制,所以需要在上层手动更新该字段
    2. DATETIME 使用 8 字节的存储空间,TIMESTAMP 的存储空间为 4 字节。因此,TIMESTAMPDATETIME 的空间利用率更高。
    3. 两者的存储方式不一样 ,对于 TIMESTAMP ,它把客户端插入的时间从当前时区转化为 UTC(世界标准时间) 进行存储。
      查询时,将其又转化为客户端当前时区进行返回。而对于 DATETIME ,不做任何改变,基本上是原样输入和输出。
    1. 两者所能存储的时间范围不一样
      timestamp 所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’;
      datetime 所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。
    2. 在mysql 5.6 之前的版本,CURRENT_TIMESTAMP 只能用于 timestamp 类型
    • 先说结论:

    数字类型的 「长度」 ,是显示长度,不需要设置。
    长度为3的 int 类型,填充一条值为1的数据,不会有任何变化,也就是没有任何用处。只有在设置了「填充零」 才会显示 001


    windwos 下
    mysql
    lower_case_table_names=1 默认开启此项,忽略大小写导出导入,都将忽略为小写
    且在phpstudy 集成环境安装下的Mysql 此项修改成0,服务将无法启动
    linux下此项默认开启