刘刚刚的个人博客

mysql数据类型


MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。选择合适的数据字段的类型是数据库的优化重要的一步。

合适的数据类型可以提高数据库存储空间利用率,一定程度上提高数据查询效率.

1.整形

类型大小范围(有符号)范围(无符号)
TINYINT1 byte(-128,127)(0,255)
SMALLINT2 bytes(-32 768,32 767)(0,65 535)
MEDIUMINT3 bytes(-8 388 608,8 388 607)8百万(0,16 777 215)
INT或INTEGER4 bytes(-2 147 483 648,2 147 483 647)21亿(0,4 294 967 295)
BIGINT8 bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)

使用:

CREATE TABLE test(id INT,num TINYINT UNSIGNED)

2.浮点型

浮点数并不一定等于小数,浮点数是相对于定点数来说的,因为浮点数的存储机制,导致其精度较低,但表示的范围很广。使用时需要注意有效位数

定点数DECIMAL

image-20200913213254031

在定点数中,小数点的位置是固定的。一般用来存储精确度要求比较高的数字,例如:钱数

浮点数

image-20200913213600349

浮点数由符号位、阶码、尾数组成。

类型大小范围(有符号)范围(无符号)用途
FLOAT4 bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 有效位数为70,(1.175 494 351 E-38,3.402 823 466 E+38)单精度 浮点数值
DOUBLE8 bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度 浮点数值
DECIMALM位数字依赖于M和D的值,M范围为1〜65,D的范围是0~30。mysql中要求 D<= M依赖于M和D的值小数值

3.字符串

选择合适长度的类型可以减少磁盘IO.提高效率

类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据

在utf8中每个字使用3个bytes存储

utf8mb64中使用4个bytes进行存储

不常用的包括:

char可以改变大小例:char(20)如果列中的值不够20位,则会自动用空格补全.特点:浪费空间、读取速度

varchar :可以指定最大存储空间,实际添加数据的过程中,占用的大小会根据数据的长度确定.同时会预留1-2个字节

text: 数据占用空间不可以指定.在mysql中实际指挥存储前768字节在数据页中,剩下的会存储在数据表之外的地方.不会因为数据过多导致的数据表变大

4.枚举 集合

enum 枚举: 从列出来的数据当中选一个(性别)
set 集合: 从列出来的数据当中选多个(自动去重)

create table t6(
    id int,
    name varchar(10),
    money float(6,3),
    sex enum('男性','女性'),
    hobby set('读书','跑步','美食')    
    );

5. 时间

详见另外一篇 mysql必知必会文章的内容

我的名片

昵称:shuta

职业:后台开发(php)

邮箱:648949076@qq.com

站点信息

建站时间: 2020/2/19
网站程序: ANTD PRO VUE + TP6.0
晋ICP备18007778号