关于mysql数据类型的一点所得

来源:互联网 发布:单片机 蓝牙 app 编辑:程序博客网 时间:2024/06/06 18:47

1.关于char和varchar数据类型的说明

关于mysql中的这两种数据类型,我觉得需要好好的记录整理一下,以备日后查看:
首先是关于char是一种固定长度类型,varchar是一种长度可变的类型。这里关于固定长度和可变长度,是说的存储上,并不是我们检索的结果上,这里很容易让人迷糊,可以举个例子中说明,如将字符串"test   "(后缀三个空格,总共7个字节)这样的一个字符串存储到数据库中,char(10)和varchar(10) 在存储的差异,char存储10个字节,varchar只 存储7个。这里有个万分需要注意的地方(虽然存储上是char存10个,varchar存7个,但是查询结果却是char类型的查询结果是“test”   varchar类型查询结果是“test   ”(后缀三个空格))。所以如果字符串后的空格是需要的话,使用char存储的时候需要进行特别处理了。

2.关于length和char_length的说明

关于这两个求字符串长度的函数,我觉个是用的比较多的,也是容易混的两个,当然还有bit_length函数是求字符串二进制长度的(其实是根据length求的结果再乘以8就是了)

这里重点说一下length和char_length两个函数的使用事项:

length求的是字符串的字节数,数字和英文字母是占一个字节,中文占三个字节,所以"test" 结果是4    “你好世界”结果是12

char_length求的是字符的长度,也就是有几个字符,一个汉字,一个字母,一个数字都是一个字符,所以“test”结果是4   “你好世界”结果也是4.

3.关于数值类型的显示长度和取值范围的说明

   首先,我觉得应该说明一下mysql中数值类型都有哪些,tinyint、smallint、mediumint、int(integer)、bigint 分别是8位、16位、24位、32位、64位,分别也决定了各自的取值范围 -2^(n-1) ~ (2^(n-1))-1  如int  是-2的31次方到2的31次方然后再-1
    这里所说的显示长度值得是int(4) int(10) 这里的4或者10 ,其实这个显示长度和取值范围没有什么关系。这里如果输入的值的长度超出了显示长度,是会正常显示的,如果不够显示长度也是正常显示,并没有填充空格啊??从查询结果上是这样的,没研究存储上是怎么样。日后查资料。

4.关于datetime和timestamp的说明

    mysql中关于时间的数据类型有year、date、time、datetime、timestamp,这里重点说明一下datetime和timestamp这两种类型。

不过这之前先简单了解一下:year(1901--2155) 一个字节存储需求   time三个字节存储需求  date 三个字节   datetime8个字节 timestamp4个字节。

   如果插入的数据不符合数据类型的,如插入一个日期是2015-04-32,那么就会变成000-00-00这样的形式、如果插入的year是2255同样也会变成0000这样的样子。

   这里区别一下datetime和timestamp

   简单的将就是timestamp是带着时区的,datetime是按照实际输入的格式存储,输入什么存什么,但是timestamp存储是以UTC格式进行存储带着时区,存储是对时区进行换算,检索时还要进行换算回来。

暂时先总结以上四点。


0 0
原创粉丝点击