一、类型属性

比如两个属性相减,

ZEROFILL: 自动填充0符号位,比如1填充成0001;

建议设置严格模式;如下:

则终端当前操作不影响非事务表(myisam).

  2)ALLOW_INVILID_DATES:该模式不完全对日期合法性检验,只检查范围;

  3)ANSI_QUOTES:启用后不能用双引号引用字符串

  4)ERROR_FOR_DIVISION_BY_ZERO:该模式除0会错误,,如果未给出该模式,返回结果null;

);如果启用higt_not_precedence模式,则NOT优先级更高

  6)IGNORE_SPACE:函数名和括号之间有空格

  7)no_auto_create_user:禁止GRANT创建密码为空的用户;

  8)NO_AUTO_VALUE_ON_ZERO:影响插入0或null代表下一个自增长值;

directory;

  11)NO_ENGINE_SUBSTITUTION:如果需要的存储引擎被禁用或者未编译,跑出错误,用默认的替代.

unsigned类型相减返回signed类型;

而启用后,则不允许零日期插入,会抛出错误;

mysql会直接抛出错误;

  15)ONLY_FULL_GROUP_BY:对于group by的聚合操作,如果select的列不在group by中,是不合法的SQL

  18)REAL_AS_FLOAT:将REAL视为FLOAT的同义词而不是double的同义词;

  19)STRICT_ALL_TABLES:对所有引擎的表都启用严格模式

下面是组合选项:
  • REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE
  • oracle
  • TRADITIONAL
  • MSSQL
  • DB2
  • MYSQL323
  • MYSQL40
  • MAXDB
  • 日期和时间类型

    datetime 站8字节,即显示时间日期;

    Date占3字节;

    TIMESTAMP和datetime比较

    timestamp占用4个字节比较小;(建议使用)

    建表时 timestamp可以设置默认值,datetime列不行;

    更新表时,可以设置timestamp的日期类型的列自动更新为当前时间;

    YEAR:例如2020

    TIME:例如12:12:12

     

    日期函数

    now(),    current_timestamp(),  sysdate()

    --  current_timestamp() 和now() 相同;

    sysdate()函数返回的是执行到当前函数的时间,而now()返回的是执行sql语句的时间

    date_sub

    -- 加减 (interval后面可以接负数)

    select now()                            as 现在,

           date_add(now(), interval 1 day)  as 明天,

           date_sub(now(), interval 1 day)  as 昨天,

           date_sub(now(), interval -1 day) as 明天;

    -- 结果: 2020-05-30 16:05:53,2020-05-31 16:05:53,2020-05-29 16:05:53

    注意:不会走索引

    select date_format(now(), '%Y-%m-%d %H:%m:%s') as 年月日时分秒,

           date_format(now(), '%Y')                as 年

    ;

    -- 2020-05-30 16:05:50    ,2020

     

    四、星期数的问题 ;

    -- 周六 结果是5 , 返回值0-6,(0是Monday)

    weekday(now()) ;

    -- 周六 结果是7,返回值1-7,(1代表Sunday)

    dayofweek(now()) 

    -- Saturday

    dayname(now()) ;

    week(now()) ;

    -- 结果 : 21  (2020-01-01为第一周, 国外周日作为一个星期的开始)

     

    五、数字类型

    INT(4字节)<BIGINT(8字节)

    浮点型(非精确类型):FLOAT,DOUBLE PRECISION,

    高精度类型:DECIMAL,NUMERIC

     

    六、字符类型

    utf 8 字符集,如果需要存储表情,那么选择 utf8mb4 来进行存储,注意它与 utf8 编码的区别;

    1) CHAR和VARCHAR 

    CHAR定长(自动右扩充),VARCHAR变长;

    2) BINARY和VARBINARY

    类似上面的char和varchar,不过存储的是二进制的字符串;

    3) BLOB和TEXT

    BLOB是用来存储二进制大数据类型的;

    BOLB和TEXT类型创建索引时,必须制定索引前缀的长度,不能有默认值;

    排序时只是用前max_sort_length个字段;

    INnoDB只存储前20个字节,二完整数据则放在BLOB的行溢出页中,提高查询效率;

    MySql 技术内幕 (数据类型)

    ​​4) ENUM和SET类型

    都是集合类型,不过元素个数前者>后者;

     

    相关文章:

    • 2021-08-08
    • 2021-12-17
    • 2021-07-23
    • 2022-01-18
    • 2021-07-13
    • 2021-12-04
    • 2021-09-26
    • 2021-06-22
    猜你喜欢
    • 2021-07-29
    • 2021-11-18
    • 2021-06-12
    • 2021-05-17
    • 2021-08-08
    • 2022-01-10
    • 2021-05-30
    相关资源
    相似解决方案