Linux CentOS 8(MariaDB的数据类型)
Jan16公司为满足部门之间数据共享、减少数据冗余度和保持数据独立性等要求,需要对数据库中的数据类型拥有一定的了解。
数据类型是指数据库中表列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。
数据类型是数据库中很重要的理论要求,需要理解各数据类型概念和作用。
1.1 整数
整数类型包括:
数据类型 | 概述 |
---|---|
tinyint | 此数据类型表示落入-128到127的有符号范围内的小整数,以及0到255的无符号范围。 |
smallint | 此数据类型表示落入-128到127的有符号范围内的小整数,以及0到255的无符号范围。 |
mediumint | 此数据类型表示有符号范围-8388608到8388607中的整数,无符号范围0到16777215。 |
int(integer) | 此数据类型表示正常大小的整数。当标记为unsigned时,范围跨越0到4294967295.当有符号(默认设置)时,范围跨越-2147483648到2147483647.当列设置为ZEROFILL(无符号状态)时,其所有值都由零添加INT值中的M个数字。 |
boolean | 此数据类型将值0与“false”相关联,值1与“true”相关联。 |
bigint | 此数据类型表示有符号范围9223372036854775808 到9223372036854775807 内的整数,无符号范围0 到18446744073709551615 。 |
注:表中都是定义有符号的类型,加上 unsigned
,则定义为无符号的类型。
1.2 定点型
decimal(m,d)
和 numeric(m,d)
为同义词,用于存储点数,保存必须为确切精度的值。
m
取值为1~65,取0时为默认值,超出范围会报错,默认为10。
d
取值为0~30,d
要在小于等于m
的范围内,否则报错,默认为0。
1.3 浮点型
数据类型 | 概述 |
---|---|
float(real) | 单精度浮点数(float或real),占4字节,其中1位符号位,8位指数,23位尾数。 |
double | 双精度浮点数(double),占8字节,其中1位符号位,11位指数,52位尾数,只保证16位有效数字的准确性。 |
1.4 位型
bit
数据类型可用来保存字段值,bit(m)
类型允许存储m位值,m
指定每个值的位数,取值为1~64。省略m
时,默认值为1,bit
其实就是存入二进制的值,其中值表示0和1中的位值。零填充从左边自动发生全长。例,“10”变为“0010”。
1.5 字符串型
数据类型 | 概述 |
---|---|
char(n) | n表示字符的列长度,取值范围为0〜255,缺省值为1。不管实际value都会占用n个字符的空间。 |
varchar(n) | n表示字符的列长度,取值范围为0〜65535,缺省值为2。占用实际字符的空间+1的字符空间,并且实际空间+1小于等于n。 |
tinytext | 取值范围为0〜255,缺省值为1,在存储中,每个都使用一个字节长度的前缀,表示值中的字节数量。 |
text | 取值范围为0〜65535,缺省值为2,在存储中,每个都使用两个字节长度的前缀,表示值中的字节数量。 |
mediumtext | 取值范围为0〜16777215,缺省值为3,在存储中,每个都使用三个字节长度的前缀,表示值中的字节数量。 |
longtext | 取值范围为0〜4294967295,缺省值为4,在存储中,每个都使用四个字节长度的前缀,表示值中的字节数量。 |
1.6 二进制串类型
二进制串类型包含 binary
和 blob
两类。
binary类
数据类型 | 概述 |
---|---|
binary(n) | n为列长度(以字节为单位)。 |
varbinary(n) | 表示可变长度的二进制字节字符串,n为列长度。 |
注:binary
和 varbinary
类型与 char
和 varchar
类型类似,不同的是,它们存储的形式为二进制串,而不是字符串,所以他们没有字符集。
blob类
数据类型 | 概述 |
---|---|
blob | 最大长度为65535字节,在存储中,每个都使用两个字节长度的前缀,表示值中的字节数量。 |
tinyblob | 最大长度为255字节,在存储中,每个都使用一个字节长度的前缀,表示值中的字节数量。 |
mediumblob | 最大长度为16777215字节,在存储中,每个都使用三个字节长度的前缀,表示值中的字节数量。 |
longblob | 最大长度为4294967292字节,在存储中,每个都使用四个字节长度的前缀,表示值中的字节数量。 |
注:blob
是一个二进制对象,可以存储数据量很大的二进制数据,可以看作varbinary
的增大版,可以用来存储图片、视频等。
1.7 日期和时间类型
数据类型 | 概述 |
---|---|
date | 表示日期范围“1000-01-01”到“9999-12-31”,并使用“YYYY-MM-DD”日期格式。 |
time | 以“HH:MM:SS”格式检索和显示time值,范围为“-838:59:59’~838:59:59’ ” |
datetime | 表示日期范围“1000-01-01 00:00:00’ ”到“9999-12-31 23:59:59’ ”,并使用“YYYY-MM-DD HH:MM”SS’ ”(年-月-日 时:分:秒)日期格式。 |
timestamp | 表示日期范围“1970-01-01 00:00:01’ utc~2038-01-19 03:14:07’ utc”使用“YYYY-MM-DD HH:MM:DD”格式的时间戳。主要用于详细描述数据库修改的时间,能够自动存储记录修改时间,将它设为NULL,则默认为当前时间。 |
year year | 是一个单字节类型,用于表示年。以YYYY格式检索和显示year值,范围1901~2155。 |
1.8 其他类型
数据类型 | 概述 |
---|---|
enum | 为枚举类型,定义了一种枚举,最多包含65535个不同成员,且表示一个列表中只有一个值的字符串对象。 |
set | 为集合类型,指定一组预定义值中的零个或者多个值提供了一种方法,这组值最多包括64个成员。 |
数据类型 | 概述 |
---|---|
auto_increment | 能为新插入的行赋予一个唯一的整数标识符。 |
binary | 只用于char和varchar值。当定义该属性后,将以区分大小写的方式排序。 |
default | 表示在确保没有任何值可用的情况下,赋予某个常量值,且该值必须是常量。 |
index | 索引一个列会为该列创建一个安装该列排序的键数组,指向其相应的表中的行。 |
not null | 被定义了not null属性的列,将不允许插入null值,且必须输入该列的具体值。 |
null | 表示未知,不可用或将在以后添加的数据。 |
primary key | 用于确保指定行的唯一性,被指定的行,不能重复,不能为空。 |
unique | 被赋予unique属性的列将确保所有值都是不同的值,只有null可以重复。 |
zerofill | 可用于任何数值类型,用0填充所以剩余的字段空间。 |
identity | 对任何表都可创建包含系统所生成序号值的一个标识符,该序号值唯一标识表中的一列,可以为键值。 |
制作成员: 梁汉荣
排版: 裕新
初审: 杨佳佳
复审: 二月二