mysql数据类型
首先我们要了解,在mysql中数据类型有哪几种呢?
数据类型大的分类分为:
数值类型、文本或者二进制、时间和日期、string类这四类。
每个下面都有什么具体的类型呢?我们用图来看。
在表中红色标识为常用的类型,未被标识的,相对而言是用的没有红色频繁。
对于tinyint、smallint、int理解
对于这三个类型我们就类比一下,在32位操作系统中,c语言中char、short、int。这三个类型,用法基本是想通过的。所以我们不过多介绍。
要注意下面几个类型因为和我们平时有一些差别。我们逐一介绍:
bit数据类型
我们通常定义一个类型,如 A bit(8);
这个表示A的类型为bit具体多少个比特位,就是后面给定的数,但是我们要是插入的时候可能没有注意,但是当插入完成后,查看数据的时候会很惊奇的发现,和原来插入的数据不对。不要慌,在bit数据中插入后,里面是以ASCII码显示的。
float数据类型
它的形式如:
float[(m, d)] [unsigned]
这里我们就需要注意一下,这里的m表示的是float总共有几个数,d表示的是小数点后面的位数。
怎么理解呢?
比如:88.88 存储类型应该是float(4,2) .
88.88总共有4个数字,所以这里的d就是表示这个数字。小数后有两为,也就是保留两位有效数字,所以m就是2.
decimal数据类型
它的数据原型如
decimal[(m,d)][unsigend]
这个就类比上面的float数据类型,表示和用法都是一样的,但是为什会有两个数据类型来表示呢?
我们就来看看它们两个不同点。
float与decimal的区别
他们最主要的区别是d这个参数上,怎么理解呢?我们用float存储一个小数位超过7位左右(这个取决于mysql版本)就会有精度丢失。所以我们如果要存储高精度的小数我们就可以选用decimal。那么decimal能表示多小呢?d表示的是小数后的位数,decimal中d的可以为30,也就是说最小可以表示小数后30为。m最大为65。
字符串类型
对于字符串类型有两种,char、varchar
char类型
char类型是一个固定的长度,它可表示的最大长度为255个字符。注意是字符为单位。
什么叫一个固定长度的类型呢?就比如当你在定义一个属性A char(250)时候,如果你只用了5个字符,那么245个字符空间就会被浪费掉。
varchar类型
varchar是我们在字符类型中相对用的比较多的类型,因为它有一个好处就是它是一个变长的类型,就如你定义属性B varchar(64),但是你用了30个字节,这时候系统就会给出30多个字节的空间,因为这个其中,因为能实现变长,所以要多开辟一些空间进行可变长度的控制。相对来说节约空间。
还有一个注意的点就是,varchar的最大存储量0 ~ 65535,也就是n,但是这个与字符编码有关,如果用的gbk编码最大存储容量就是就是65535/2。就是它的最大存储容量。
日期类型
对于日期类型我们需要知道三个。
datetime类型
表示的格式是:yyyy-mm-dd HH:ii:ss 占有8个字节
date类型
表示格式:yyyy-mm-dd 占3个字节
datestamp类型
这是表示的格式与datetime是一样的,但是他表示的是从1970-1-1 0:0:1的一个时间戳。
这个在用的时候我们可以定义类型后在插入数据时候,不写会自动的添加插入那条数据的时间。
枚举和set
枚举类型我们在c语言中也有学过,在数据库中,枚举也是一一列举。
对于set,也是将信息列出来,但是他们有什么区别?
这里我们简单理解。
枚举出的,都是单一选项,怎么说呢?就比如,男女,我们枚举出来一条数据只能选一种男或者女,不能同时选。
而set是用于复选的情况,比如一个人的爱好,可能很多就可以一次写多个。
以上为小结。如有错误,还望指正,谢谢!