MySQL数据类型与数据类型范围入门教程

作者:袖梨 2022-11-14


MySQL使用了很多不同的数据类型,分解成三大类:数字,日期和时间,和字符串类型。

数字数据类型:


MySQL使用所有标准的ANSI SQL数值数据类型,所以如果与MySQL不同的数据库系统这些定义会看起来也熟悉。下面的列表显示了常见的数值数据类型和它们的说明。

INT - 一个正常大小可以有符号或无符号的整数。如果带符号的,允许的范围是-2147483648到2147483647。如果没有符号,允许的范围是从0到4294967295。可以指定一个宽度达11位数字。

TINYINT -一个非常小可以有符号或无符号的整数。如果带符号的,允许的范围是从-128到127。如果没有符号,允许的范围是从0到255。可以指定一个4位数字的宽度。

SMALLINT - 一个小可以有符号或无符号的整数。如果带符号的,允许的范围是从-32768到32767。如果没有符号,允许的范围是从0到65535。可以指定一个宽度为5位数字。

MEDIUMINT - 一个中等大小的,可以有符号或无符号的整数。如果带符号的,允许的范围是-8388608到8388607。如果没有符号,允许的范围是从0到16777215。可以指定一个宽度达9位数。

BIGINT - 一个大的,可以有符号或无符号的整数。如果带符号的,允许的范围是-9223372036854775808到9223372036854775807。如果没有符号,允许的范围是从0到18446744073709551615。可以指定一个宽度达11位数字。

FLOAT(M,D) - 一个浮点数字,不能是无符号的。可以定义的显示长度(M)和小数(D)的数量。这不是必需的,将默认为10,2,其中2为小数位数和10是总人数的数字(包括小数)。小数精度可以到24位的持股量。

DOUBLE(M,D) -双精度浮点数字,不能是无符号的。可以定义的显示长度(M)和小数(D)的数量。这不是必需的,将默认为16.4,其中4个是小数位数。十进位至53位的双精度可以去。 REAL是双的代名词。

DECIMAL(M,D) - 一个解包浮点数字,不能是无符号的。每个十进制在解压缩小数,对应一个字节。定义的显示长度(M)和小数点后的位数(D)是必需的。 NUMERIC是DECIMAL的代名词。

日期和时间类型:


MySQL的日期和时间数据类型有:

DATE - 日期格式YYYY-MM-DD,1000-1-1和9999-12-31之间。例如1973年12月30日将存储为1973-12-30日。

DATETIME - 日期和时间的组合YYYY-MM-DD HH:MM:SS格式,在1000-1-1 00:00:00和9999-12-31 23:59:59。例如,1973年12月30号15:30:00将存储为1973-12-30 15:30:00.。

TIMESTAMP-1970年1月1日午夜,在2037年的某个时候之间的时间戳。这看起来像之前的DATETIME格式,不带连字符之间的数字,1973年12月30日下午3:30将被存储为19731230153000(YYYYMMDDHHMMSS)。

TIME - 存储HH:MM:SS格式的时间。

YEAR(M) - 储存年在2位或4位数字格式。如果长度指定为2(例如年(2)),年份可在1970到2069(70到69)。如果长度指定为4,年份可在1901到2155。默认长度为4。

字符串类型:


虽然数字和日期类型有些相似,将存储的大部分数据将在字符串格式。下面列出了在MySQL中常用的字符串数据类型。

CHAR(M) - 一个固定长度的字符串的长度介于1到255个字符(例如CHAR(5)),向右填充到指定的长度与空间存储。定义的长度不是必需的,但默认值是1。

VARCHAR(M) - 可变长度的字符串的长度介于1到255个字符,例如VARCHAR(25)。当创建一个VARCHAR字段必须定义一个长度。

BLOB 或 TEXT - 字段的最大长度为65535个字符。 BLOB是二进制大对象“,是用来存储大量的二进制数据,如图像或其他类型的文件。字段定义为文本也持有大量的数据,两者之间的区别是存储的数据进行排序和比较是区分大小写的BLOB,并在文本字段不区分大小写。不指定BLOB或TEXT的长度。

TINYBLOB 或 TINYTEXT -一个BLOB或TEXT列,最大长度为255个字符。不能指定TINYBLOB或TINYTEXT长度。

MEDIUMBLOB 或 MEDIUMTEXT -一个BLOB或TEXT列,最大长度为16777215个字符。不能指定MEDIUMBLOB或MEDIUMTEXT的长度。

LONGBLOB 或 LONGTEXT -一个BLOB或TEXT列,最大长度为4294967295个字符。不能指定LONGBLOB或LONGTEXT的长度。

ENUM - 枚举,这是一种奇特的术语列表。当定义一个枚举,要创建一个列表项目的值必须被选中(或它可以是NULL)。例如,如果希望字段包含“A”或“B”或“C”,则ENUM定义为ENUM('A','B','C'),只有那些值(NULL)所能填充该字段。

上面可能写得看不清楚,下面补充一文章

1.整型(xxxint)

MySQL数据类型 含义
tinyint(m) 1个字节表示(-128~127)
smallint(m) 2个字节表示(-32768~32767)
mediumint(m) 3个字节表示(-8388608~8388607)
int(m) 4个字节表示(-2147483648~2147483647)
bigint(m) 8个字节表示(+-9.22*10的18次方)


2.浮点型(float和double)
MySQL数据类型 含义
float(m,d) 单精度浮点型,8位精度(4字节),m是十进制数字的总个数,d是小数点后面的数字个数
double(m,d) 双精度浮点型,16位精度(8字节)
参数m只影响显示效果,不影响精度,d却不同,会影响到精度。比如设一个字段定义

3.定点数(decimal)
decimal(m,d) 定点类型浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。参数m是定点类型数字的最大个数(精度),范围为0~65,d小数点右侧数字的个数,范围为0~30,但不得超过m。对定点数的计算能精确到65位数字。

4.字符串(char,varchar,xxxtext)
MySQL数据类型 含义
char(n) 固定长度的字符串,最多255个字符
varchar(n) 固定长度的字符串,最多65535个字符
tinytext 可变长度字符串,最多255个字符
text 可变长度字符串,最多65535个字符
mediumtext 可变长度字符串,最多2的24次方-1个字符
longtext 可变长度字符串,最多2的32次方-1个字符


5.二进制数据(xxxBlob)
XXXBLOB和xxxtext是对应的,不过存储方式不同,xxxTEXT是以文本方式存储的,如果存储英文的话区分大小写,而xxxBlob是以二进制方式存储的,不区分大小写。xxxBlob存储的数据只能整体读出。xxxTEXT可以指定字符集,xxxblob不用指定字符集。

6.日期时间类型(date,time,datetime,timestamp)
MySQL数据类型 含义
date 日期'2008-12-2'
time 时间'12:25:36'
datetime 日期时间'2008-12-2 22:06:44'
timestamp 不固定

timestamp比较特殊,如果定义一个字段的类型为timestamp,这个字段的时间会在其他字段修改的时候自动刷新。所以这个数据类型的字段可以存放这条记录最后被修改的时间,而不是真正来的存放时间。

7.数据类型的属性
MySQL关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT xxx 默认值,如果插入记录的时候没有指定值,将取这个默认值
PRIMARY KEY 主键
AUTO_INCREMENT 递增,如果插入记录的时候没有指定值,则在上一条记录的值上加1,仅适用于整数类型
UNSIGNED 无符号
CHARACTER SET name 指定一个字符集

相关文章

精彩推荐