MySQL数据类型--常用数据类型总结

OK,到现在为止,MySQL常用的数据类型我都已经整理完了。现在我们来总结一下。

在MySQL中创建表时,需要考虑为字段选择哪种数据类型是最合适的。只有选择了合适的数据类型,才能提高数据库的效率


  • 1,整数类型和浮点数类型
整数类型和浮点数类型最大的区别在于能否表达小数。整数类型不能表示小数,而浮点数类型可以表示小数。不同的数据类型的取值范围不同。

tinyint类型的取值范围是0~~255。如果字段的最大值不超过255,那么选择tinyint类型就足够了呢。

bigint类型的取值范围最大,最常用的整数类型是int类型,int类型最大能保存10位数字,最大值为2后面跟9个0

浮点数类型包括float类型和double类型,double类型的精度比float类型高。如果需要精确到小数点后10位以上,就应该选择double类型,而不应该选择float类型



  • 2,浮点数类型和定点数类型
对于浮点数和定点数,当插入的精度高于实际定义的精度时,系统会自动进行四舍五入处理。其目的是为了使该值的精度达到要求。浮点数进行四舍五入系统不会报警,定点数会出现警告。

在未指定精度的情况下,浮点数和定点数有其默认的精度,float类型和double类型默认会保存实际精度,这个精度和操作系统和硬件的精度有关。

decimal类型默认整数位是10,小数位为0,即默认为整数。所以一般在定义decimal的时候用decimal(M,D)格式,M参数称为精度,是数据的总长度,小数点不占位置。D参数成为标度,是指小数点后面的长度是D。

在mysql中,定点数精度比浮点数要高,而且,浮点数会出现误差。如果要对数据的精度要求比较高,应该选择定点数



  • 3,char类型和varchar类型

char类型的长度是固定的,而varchar类型的长度是在范围内可变的。因此,varchar类型占用的空间比char类型小。而且,varchar类型比char类型灵活。对于长度变化比较大的字符串类型,最好是选择varchar类型

虽然char类型占用的空间比较大,但是char类型的处理速度比varchar快。因此,对于长度变化不大和查询速度要求较高的字符串类型,最好选择char类型



  • 4,时间和日期类型

year类型只表示年份。如果只需要记录年份,选择year类型可以节约空间。

Time类型只表示时间,如果只需要记录时间,选择Time类型是最合适的。

date类型只表示日期,如果只需要记录日期,选择date类型是最合适的。

如果需要记录日期和时间,可以选择dateTime类型和timestamp类型。

dateTime类型表示的时间范围比timestamp类型大,因此,如果需要的时间范围比较大,选择dateTime类型比较合适

timestamp类型的时间是根据时区来显示的,如果需要显示的时间与时区对应,那就应该选择timestamp类型



  • 5,enum类型和set类型
enum类型最多可以有65535个成员,而set类型最多只能包含64个成员,两者的取值只能在成员列表中选取。enum类型只能从成员中选择一个,而set类型可以选择多个。

因此,对于多个值中选取一个的,可以选择enum类型。比如,‘性别’字段就可以定义成enum类型,因为只能在‘男’和‘女’中选取一个。

对于可以选取多个值的字段,可以选择set类型比如,‘爱好’字段就可以选择set类型,因为可能有多个爱好呢。



  • 6,text类型和blob类型

text类型与blob类型很类似。text类型存储只能存储字符数据,而blob类型可以用于存储二进制数据,如果要存储文章等纯文本的数据,应该选择text类型,如果需要存储图片等二进制的数据,应该选择blob类型

text类型包括tinytext,text,mediumtext和longtext。这4者最大的不同是内容的长度不同。tinytext类型允许的长度最小,longtext类型允许的长度最大。blob类型也是如此。



  • 几点注意的问题:

1,mysql中,char,varchar,text等字符串类型都可以存储路径。但是,‘\’在数据库是转义字符,如果路径中使用‘\’符号时,这个符号会被过滤。解决的办法是,路径中用‘/’或‘\\’来代替‘\’。

这样,MySQL就不会自动过滤掉路径中的分割字符,可以完整的表示路径。OK,现在我们来实际操作下数据库看下这种情况。

建表语句如下:
CREATE TABLE `linkinframe`.`test` (
  `id` INT NOT NULL,
  `a` VARCHAR(45) NULL,
  PRIMARY KEY (`id`));
现在我们往数据库插入几条数据:
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (1,'uu/kk/oo');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (2,'aa\\jj\\ww');
INSERT INTO `linkinframe`.`test` (`id`, `a`) VALUES (3,'\hh\ll\oo');
数据库显示如下:


2,在sql标准中,存在bool和boolean类型。MySQL为了支持sql标准,也是可以定义bool和boolean类型的。但是,bool和Boolean类型最后转换成的是tinyint(1)。也就是说,在MySQL中,boolean类型等于加tinyint(1)。因此,创建表的时候将一

个字段定义成bool和boolean类型,数据库中真实定义的是tinyint(1)。因此,创建表的时候将一个字段定义成bool和boolean类型,数据库中真实的定义是tinyint(1)

3,一般情况下,数据库中不直接存储图片和音频文件,而是存储图片和音频文件的路径,比如说JPG图片和MP3音乐。如果实在需要在MySQL数据库中存储图片和音频文件,就选择blob类型。因为,blob类型可以用来存储二进制类型的文件的。

4,整数类型,浮点数类型,日期和时间类型和字符串类型是数据库中使用最频繁的数据类型。我们在实际建表过程中,要考虑各种数据类型的特点,根据不同的需要选择相应的数据类型。


OK,到此为止,到此为止,关于mysql数据类型相关都已经整理完了。接下来我会认真的整理MySQL创建,删除,查看,修改数据库的基本方法,也就是DDL语句。先这样。

发布了284 篇原创文章 · 获赞 66 · 访问量 71万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章