mysql杂谈

2023-06-15  本文已影响0人  温岭夹糕

目录

  1. 类型

1.类型

1.1mysql字符集问题(character set)和排序

charset指的是对unicode字符集的编码方式

show variables like 'character%';
show create database <databaseName>;

第二条命令看到的字符集是根据my.cnf的[default-character-set]设置的

//my.cnf
[client]
default-character-set=utf8mb4
[mysqld]
default-character-set=utf8mb4

创建数据库指定字符集

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_option] ...

create_option: [DEFAULT] {
    CHARACTER SET [=] charset_name
  | COLLATE [=] collation_name
}

collate称为排序,又称校对规则,都是定义对字符串的校对:

1.2 varchar类型的长度到底是多少

mysql ref对varchar的用法定义是

[NATIONAL] VARCHAR(M) 
[CHARACTER SET charset_name] 
[COLLATE collation_name]

M的范围是[0-65535],即最多占用65535个字节,其中varchar的存储规则:

所以更像GO语言的rune类型,即码点。

其他补充:

  1. char代表定长,会自动填充
  2. binary和blob代表存储二进制数据

1.3MySQL时间字段究竟使用INT还是DateTime型?

mysql中表示日期的类型有YEAR、TIME、DATE、DTAETIME、TIMESTAMP,其中

时间类型本质上也是使用int去存储的,所以如果从性能角度讲两者是没差别的,当存在大量查询和排序时加个索引就能解决。而且datetime语义化更好。建议更多使用datetime

上一篇下一篇

猜你喜欢

热点阅读