MySQL-数据类型
在本教程中,我们将学习MySQL中一些常用的数据类型。
关于数据类型
列的数据类型告诉我们有关该列中存储的数据类型的信息。
在本教程中,我们将讨论以下三种类型。
- 数字
- 字符串
- 日期和时间
数值类型
此类别下的数据类型保存数值数据。
- 整数数据类型
- 定点数据类型
- 浮点数据类型
整数数据类型
它们拥有精确的整数值,例如10、0,-100等。
我们可以按以下方式汇总数据类型的范围和大小。
我们还可以使用UNSIGNED来存储无符号值,例如0、10、20、100等。
没有负值。
|数据类型|大小(字节)|最小值(有符号)|最大值(有符号)|最小值(无符号)|最大值(无符号)| | --- | --- | --- | --- | --- | --- | | TINYINT | 1 | -128 | 127 | 0 | 255 | | SMALLINT | 2 | --32768 | 32767 | 0 | 65535 | | MEDIUMINT | 3 | -8388608 | 8388607 | 0 | 16777215 | | INT | 4 | -2147483648 | 2147483647 | 0 | 4294967295 | | BIGINT | 8 | -9223372036854775808 | 9223372036854775807 | 0 | 18446744073709551615 |
定点数据类型
我们使用定点数据类型来存储精确值并保留诸如地理数据或者货币数据之类的精确度。
为此,我们使用DECIMAL
和NUMERIC
数据类型。
语法:DECIMAL(M,N)
其中,M表示精度,即为该值存储的有效位数的总数。
N表示小数位数,即小数点后可以存储的位数总数。
示例:salary DECIMAL(10,2)
在上面的示例中,精度为10,小数位数为2,即为该值存储的总有效位数为10,小数点后的位数总数为2。
例如:10.15或者999.20等。
浮点数据类型
我们使用此数据类型存储带有小数部分的近似值。
对于单精度值,我们使用占用4个字节空间的FLOAT
。
对于双精度值,我们使用DOUBLE
占用8个字节的空间。
语法:FLOAT(M,N)
M代表可以存储的总位数。
N是小数点后的位数。
示例:velocity FLOAT(10,4)
这意味着我们可以存储总共10位数字,其中小数点后可以存储4位数字。
像:-10.1234或者999.4321等。
字符串类型
此类别中的数据类型用于保存字符串值。
- Char和Varchar数据类型
- 枚举数据类型
- Blob和文本数据类型
Char和Varchar数据类型
CHAR和VARCHAR数据类型用于存储字符串值。
CHAR
CHAR数据类型为我们提供了固定宽度的列大小。
语法:CHAR(N)
其中,N是我们可以在列中保存的字符总数。
N的范围为0到255。
大小也等于N,因此CHAR(10)表示它可以容纳10个字符,列大小为10个字节。
注意! CHAR(4)最多可容纳4个字符。
但是,如果输入的字符较少,则将在右边用空白填充并保存在该列中。
当检索到该值时,将删除尾随的右空格。
VARCHAR
VARCHAR数据类型为我们提供了可变宽度的列大小。
语法:VARCHAR(N)
其中,N是我们可以在列中保存的字符总数。
N的范围为0到65535。
如果N
如果N> 255,则列VARCHAR(N)的大小为2 + N字节。
因此,值另存为2个字节的前缀加上数据字节。
因此,前缀字节说明了保存在VARCHAR列中的数据的长度。
保存到列中以及从列中检索时,保留VARCHAR的尾随空格。
示例:如果为VARCHAR(100)分配了字符串值" Hello",则它将占用6个字节,字符串" Hello"将占5个字节,前缀字节将占1个字节。
枚举数据类型
" ENUM"是一个字符串对象,可以从允许值列表中获取值。
语法:ENUM('value1','value2',...)
值的最大数量:65535。
示例:一个用户帐户可以处于活动,不活动和已删除状态,我们可以使用ENUM来表示,如下所示:" account_status ENUM('ACTIVE','INACTIVE','DELETED');
Blob和文本数据类型
BLOB是一个二进制大对象,用于将数据保存为字节(二进制)字符串。
BLOB变体有4种类型,分别是" TINYBLOB"," BLOB"," MEDIUMBLOB"和" LONGBLOB"。
TEXT用于将数据保存为字符(非二进制)字符串。
TEXT变体有4种类型,即" TINYTEXT"," TEXT"," MEDIUMTEXT"和" LONGTEXT"。
类型 | 存储大小 |
---|---|
TINYBLOB,TINYTEXT | L + 1个字节,其中L <28 |
BLOB,文本 | L + 2个字节,其中L <216 |
MEDIUMBLOB,MEDIUMTEXT | L + 3个字节,其中L <224 |
LONGBLOB,LONGTEXT | L + 4个字节,其中L <232 |
其中,L表示给定字符串值的实际长度(以字节为单位)。
示例:如果列数据类型为BLOB,则其大小为L + 3。
额外的3个字节用于存储值的长度,L是给定字符串值的实际长度(以字节为单位)。
日期和时间类型
此类别的数据类型用于存储日期和时间值。
- 日期数据类型
- 日期时间数据类型
- 时间戳数据类型
日期数据类型
当我们要存储日期值时,我们使用DATE
数据类型。
语法:" YYYY-MM-DD",其中YYYY是1000-9999年,MM是1-12个月,DD是日期1-31。
因此," DATE"的范围是" 1000-01-01"到" 9999-12-31"。
日期时间数据类型
当我们要存储日期和时间值时,我们使用DATETIME
数据类型。
语法:" YYYY-MM-DD HH-MM-SS",其中YYYY是1000-9999年,MM是1-12个月,DD是日期1-31。
HH是小时00-23,MM是分钟00-59,SS是秒00-59。
因此," DATETIME"的范围是" 1000-01-01 00:00:00"到" 9999-12-31 23:59:59"。
时间戳数据类型
我们使用" TIMESTAMP"数据类型来存储具有日期和时间部分的值。
语法:" YYYY-MM-DD HH-MM-SS",其中,YYYY是1000-9999年,MM是1-12个月,DD是日期1-31。
HH是小时00-23,MM是分钟00-59,SS是秒00-59。
因此,TIMESTAMP的范围是UTC的" 1970-01-01 00:00:01"到UTC的" 2038-01-19 03:14:07"。