首页 > 编程知识 正文

varchar与char的转换,mysqlvarchar长度

时间:2023-05-03 19:31:55 阅读:171316 作者:420

一. int与tinyint的区别

大小:

tinyint在mysql中占用一个字节。

1 bytes=8 bit,1字节可表示的最大数据长度为2的8次方:11111111=256

在计算机上为- 128至127

int占用了4个字节。 即2的32次方=4 294 967 296

在计算机上-2147483646到2147483647

bigint占用4个字节,即2的64次方

另外,tinyint(1)与java的布尔相对应

二. varchar和char的区别

char是固定长度的类型,varchar是可变长度的类型。 不同之处在于,在char(m )类型的数据列中,如果每个值占用m个字节,且某个长度小于m,则MySQL会用空格填充其右侧。 (搜索操作中填充的空白字符将被删除(varchar ) m ) ) )。

用于确定MySQL是否需要列类型转换的规则

1、在一个数据表中,如果各数据列的长度是固定的,则各数据行的长度也是固定的。

2、只要数据表中一个数据列的长度是可变的,则每个数据行的长度是可变的。

3、如果某个数据表的数据行长度可变,为了节省存储空间,MySQL会将此数据表中固定长度类型的数据列转换为相应的可变长度类型。 例外:少于4个字符的char数据列不会转换为varchar类型

在mysql中,char和varchar都表示字符串类型。 但是,数据的存储方法和获取方法不同。

在表结构定义中声明char和varchar类型时,必须指定字符串的长度。 也就是说,该列中可以存储的字符数(字符而不是字节)。 例如,char )和varchar )可以存储10个字符。

声明为char的列的长度是固定的,char的长度可以在0到255之间选择。 这意味着char最多可以存储255个字符。 如果列是utf8编码,则列占用的字节数=字符数*3。 在gbk编码中,列占用的字节数=字符数*2。

声明为varchar的列的长度是可变的,mysql5.0.3之前的varchar长度范围为0-255,mysql5.0.3之后的varchar长度范围为0-65535字节。 以varchar类型存储数据需要1-2字节。 如果长度超过255个字节,则需要2个字节。每个字符最多占用2个字节,且最大长度不能超过32766个字符。 如果此列的编码为utf8,则每个字符最多占用3个字节,最大字符长度为21845。

总结:

char和varchar的最大区别在于,一个是固定长度,另一个是可变长度。由于是可变长度,所以在实际的字符串中存储记录了字符串长度的字节。 如果分配给char或varchar列的值超过列的最大长度,该值将被截断。

varchar(m )和char )均表示字符数。 varchar的最大长度为65535字节,对应的最大jqdfd中存储的字符数因编码而异。 char最多可存储255个字符,最大jqdfd字节数因编码而异。

三. Date、DateTime、TimeStamp和Time的解释和区分

timestamp和datetime的区别

a ) DATETIME的默认值为空; TIMESTAMP字段默认为当前时间(CURRENT_TIMESTAMP ),而不是not null。 如果不进行特殊处理且update语句未指定列更新值,则缺省情况下将在当前时间进行更新。

这一区别在于,因为经常使用timestamp,所以我将解释为什么平时可以在不管理此字段的情况下自动更新它,因为这里使用的是datetime,没有自动更新当前时间的机制,所以需要在更高级别的级别手动更新此字段

b ) DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节。 因此,TIMESTAMP比DATETIME的空间利用率更高。

这一差异说明了为什么使用timestamp类型很多

c )两者的保存方式不同,对于TIMESTAMP,将客户端插入的时间从当前时区转换为世界标准时间(UTC )进行保存。 查询将转换为客户端的当前时区并返回。 另一方面,关于DATETIME,不进行任何变更,基本上直接进行输入和输出。

d )两者可保存的时间范围不同

timestamp可保存的时间范围为’1970-01-0100336000336001.0000000’到’2038-01-190:14336007.999999’;

datetime可保存的时间范围为’1000-01-0100336000336000.0000000’到’9999-12-312336059336059.999999’。

为什么CURRENT_TIMESTAMP可用于datetime类型

在mysql 5.6之前的版本中,CURRENT_TIMESTAMP仅可用于timestamp类型。

从5.6版开始,CURRENT_TIMESTAMP还可用于datetime类型

通过检查select version ()数据库,可以确定是5.6.29版

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。