本机真实测了4种文本:英文1字节/字符,中文3字节/字符,emoji真实4字节/字符。往老式utf8(mb3)列插同样的emoji:严格模式报错拒绝,宽松模式真实静默存成了问号。
本机用FLOAT存0.1和0.2,SUM真实是0.30000000447034836;换成DECIMAL(10,2),SUM真实精确等于0.30。1000行0.01累加:FLOAT真实变成9.999999776482582,DECIMAL真实还是精确的10.00。
本机往TIMESTAMP和DATETIME各存一条12:00:00,切换session time_zone分别到+08:00和-05:00再读:TIMESTAMP真实分别显示成20:00:00和07:00:00,DATETIME真实一动不动还是12:00:00。
本机真实测出TIMESTAMP的硬上限:2038-01-19 03:14:07 UTC插入成功,UNIX_TIMESTAMP真实精确等于2147483647;再往后插一秒真实立刻报错。DATETIME同一台机器上真实轻松存下2100年和9999年。
本机真实建了一个age BETWEEN 0 AND 150的CHECK约束:插入-5真实报错,插入200真实报错,连UPDATE成-1也真实被拦下来——三次真实都是同一个错误码3819。
本机建了一张表,三列的默认值分别是DEFAULT (UUID())、DEFAULT (NOW())、DEFAULT (RAND()),真实插入三行空值,每一行的uid真实各不相同、rand_val真实各不相同。
本机真实测了6组比较:0 = 'abc'真实返回true,'' = 0真实返回true,10 = '10abc'真实返回true——静默转换真实都留下了一条Truncated incorrect DOUBLE value警告。
本机真实验证NULL=NULL返回NULL(不是true),NULL<=>NULL才真实返回1;5 IN (1,2,NULL)真实返回NULL而不是false——NOT IN列表混进一个NULL,整个WHERE子句真实会把所有行都过滤掉。
本机一张5行的表,score列真实有并列值:用ROWS累计和真实是逐行递增;换成RANGE,并列的行真实都算出相同的累计值——RANGE把并列的行当成了同一个逻辑分组一起计算。
本机用一张5层组织架构表,从一个Engineer出发递归向上找汇报链,真实一次查询就走完四层。真实又把递归深度限制调到100去递归1000次,MySQL真实在第101次迭代精确报错。
本机拿一段真实的JSON数组跑JSON_TABLE:加上NESTED PATH之后,真实把tags数组拆开变成了单独的行——效果和一次真实的一对多JOIN一模一样。
本机对4条真实文本建FULLTEXT索引,自然语言模式搜索真实按命中词数给出不同的相关度分数,同时命中两个词的行分数真实精确是只命中一个词的2倍。