mysql 如果空值默认字符 mysql默认null还是空串

您所在的位置:网站首页 mysql默认null还是空串 mysql 如果空值默认字符 mysql默认null还是空串

mysql 如果空值默认字符 mysql默认null还是空串

2023-12-13 14:55| 来源: 网络整理| 查看: 265

1、数据类型选取的基本原则

MySQL支持多种数据类型,为了尽可能提高MySQL性能,需要选取合适的数据类型,通常来说,可以遵循以下原则:

选取更小的数据类型:使用可以满足数据存储需求的更小的数据类型,可以节约存储空间,减少对磁盘、内存、CPU缓存资源的占用。

尽量避免NULL:除非真的需要存储NULL值,否则应该将列都设置为NOT NULL。对允许为NULL的列,其索引会更加复杂。

2、字符串类型

varchar与char是MySQL中最基本的字符串类型。它们的具体实现与存储引擎相关,具体如下:

2.1、varchar

最常见,用于存储变长字符串,它比定长类型字符串更节省空间,存储的字符串越短,占用的空间越小。但有一种特殊情况,如果MySQL表使用row_format=fixed创建的话,每行都会使用定长存储。

由于varchar是变长的,因此额外需要1或2字节来存储字符串的长度:如果字符串长度小于等于255字节,只需要1字节来存储长度,否则需要2字节存储长度。所以,一个varchar(10)的列需要11个字节的存储空间,一个varchar(1000)的列需要1002个字节的存储空间。

varchar节约了空间,通常情况下对提升性能也有帮助。但是,在update时,可能会导致行的内容比原来更长,就需要一些额外的工作,从而导致性能的降低。

适合使用varchar的场景:

字符串的最大长度远大于字符创的平均长度列中内容很少更新使用了UTF-8等复杂的字符集,每个字符都使用了不同的字节数进行存储

此外,需要注意的是,在5.0+版本中,MySQL在存储和查询varchar类型数据时,会保留字符串末尾空格。而在4.1或之前的版本中,该空格会被抹掉。

2.2、char

char类型用于存储定长字符串,MySQL会为char类型的列分配固定长度的空间。 存储char类型数据时,字符串末尾的空格会被抹掉(个人理解:MySQL无法区分该空格是字符串实际值中的空格,还是用于填充空间的空格)。如果字符串的长度未达到为其分配的固定长度,后面的空间会使用空格填充。

适合使用char的场景:

字符串全都很短所有字符串的长度都大致相同

对于非常短的字符串,比如1字节长度的字符串,使用char类型比varchar类型更能节省空间,因为varchar还需要额外的1个字节记录长度。

mysql 如果空值默认字符 mysql默认null还是空串_数据类型

3、日期和时间类型

 MySQL中有多种数据类型可以用来保存日志和时间,比如year和date。但是,最常用的还是datetime和timestamp,这两者能够存储的最小时间粒度为秒,这也是MySQL支持的能够存储的最小时间粒度。

3.1、datetime

能够存储的范围大,从1001年到9999年,精度为秒。它把日期和时间封装到格式为YYYYMMDDHHMMSS的整数中。与时区无关,占用8个字节(大于4个字节可表示的最大值)。

3.2、timestamp

保存了从1970年1月1日0点0分以来的秒数,使用4个字节,只能表示1970年到2038年范围内的时间。timestamp的转换为时间显示时,根据时区会有所有不同。如值为0的timestamp,在美国东部时区显示为“1969-12-31 19:00”,与格林尼治时间相差5小时。

timestamp默认就是NOT NULL的。与datetime不同的是,如果插入一行数据时,在没有指定第一个timestamp列的内容时,MySQL会将这列的值设置为当前时间。

由于占用空间小,通常建议使用timestamp,而不是datetime。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3