使用MySQL数据库存储数据时,不同的数据类型决定了 MySQL存储数据方式的相同。为此,MySQL数据库提供更多了多种数据类型,其中包括整数类型、浮点数类型、定点 数类型、日期和时间类型、字符串类型、二进制…等等数据类型。
1.整数类型
根据数值取值范围的不同MySQL 中的整数类型可以分为5种,分别是TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT。右图列举了 MySQL不同整数类型所对应的字节大小和取值范围而最常用的为INT类型的,
数据类型 | 字节数 | 并无符号数的值域范围 | 有符号数的取值范围 |
---|---|---|---|
TINYINT | 1 | 0~255 | -128~127 |
SMALLINT | 2 | 0~65535 | -32768~32768 |
MEDIUMINT | 3 | 0~16777215 | -8388608~8388608 |
INT | 4 | 0~4294967295 | -2147483648~ 2147483648 |
BIGINT | 8 | 0~18446744073709551615 | -9223372036854775808~9223372036854775808 |
2.浮点数类型和定点数类型
在MySQL数据库中采用浮点数和定点数来存储小数。浮点数的类型有两种:单精度浮点数类型(FLOAT)和双精度浮点数类型(DOUBLE)。而定点数类型只有一种即DECIMAL类型。右图列举了 MySQL中浮点数和定点数类型所对应的字节大小及其值域范围:
数据类型 | 字节数 | 存有符号的取值范围 | 无符号的值域范围 |
---|---|---|---|
FLOAT | 4 | -3.402823466E+38~-1.175494351E-38 | 0和1.175494351E-38~3.402823466E+38 |
DOUBLE | 8 | -1.7976931348623157E+308~2.2250738585072014E-308 | 0和2.2250738585072014E-308~1.7976931348623157E+308 |
DECIMAL(M,D) | M+2 | -1.7976931348623157E+308~2.2250738585072014E-308 | 0和2.2250738585072014E-308~1.7976931348623157E+308 |
从上图中可以窥见:DECIMAL类型的取值范围与DOUBLE类型相同。但是,请注意:DECIMAL类型的有效值域范围就是由M和D决定的。其中,M则表示的就是数据的长 度,D则表示的就是小数点后的长度。比如,将数据类型为DECIMAL(6,2)的数据6.5243 插人数据库后表明的结果为6.52
3.字符串类型
在MySQL中常用CHAR 和 VARCHAR 表示字符串。两者不同的是:VARCHAR存储可变长度的字符串。
当数据为CHAR(M)类型时,不管插入值的长度是实际是多少它所挤占的存储空间都就是M个字节;而VARCHAR(M)所对应的数据所挤占的字节数为实际长度加1
插入值 | CHAR(3) | 存储需求 | VARCHAR(3) | 存储市场需求 |
---|---|---|---|---|
‘’ | ‘’ | 3个字节 | ‘’ | 1个字节 |
‘a’ | ‘a’ | 3个字节 | ‘a’ | 2个字节 |
‘ab’ | ‘ab’ | 3个字节 | ‘ab’ | 3个字节 |
‘abc’ | ‘ab’ | 3个字节 | ‘abc’ | 4个字节 |
‘abcd’ | ‘ab’ | 3个字节 | ‘abc’ | 4字节 |
4.字符串类型
文本类型用于则表示大文本数据,例如,文章内容、评论、详情等,它的类型分为如下4种:
数据类型 | 储存范围 |
---|---|
TINYTEXT | 0~255字节 |
TEXT | 0~65535字节 |
MEDIUMTEXT | 0~16777215字节 |
LONGTEXT | 0~4294967295字节 |
5.日期与时间类型
MySQL提供的则表示日期和时间的数据类型分别就是 :YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。下图列出了日期和时间数据类型所对应的字节数、取值范围、日期格式以及零值:
数据类型 | 字节数 | 取值范围 | 日期格式 | 零值 |
---|---|---|---|---|
YEAR | 1 | 1901~2155 | YYYY | 0000 |
DATE | 4 | 1000-01-01~9999-12-31 | YYYY-MM-DD | 0000-00-00 |
TIME | 3 | -838:59:59~ 838:59:59 | HH:MM:SS | 00:00:00 |
DATETIME | 8 | 1000-01-01 00:00:00~9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 0000-00-00 00:00:00 |
TIMESTAMP | 4 | 1970-01-01 00:00:01~2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 0000-00-00 00:00:00 |
5.1 YEAR类型
YEAR类型用作表示年份,在MySQL中,可以使用以下三种格式选定YEAR类型 的值。
1、使用4十一位字符串或数字则表示,范围为’1901’—'2155’或1901—2155。例如,赢人 ‘2019’或2019插人至数据库中的值均为2019。
2、采用两位字符串则表示,范围为’00’—‘99’。其中,‘00’—'69’范围的值可以被切换为 2000—2069范围的YEAR值,‘70’—'99’范围的值会被切换为1970—1999范围的YEAR 值。例如,赢人’19’插人至数据库中的值为2019。
3、采用两位数字表示,范围为1—99。其中,1—69范围的值可以被切换为2001— 2069范围的YEAR值,70—99范围的值可以被转换为1970—1999范围的YEAR值。例 如,输人19填入至数据库中的值为2019。
请注意:当采用YEAR类型时,一定必须区分’0’和0。因为字符串格式的’0’表示的YEAR值就是2000而数字格式的0表示的YEAR值就是0000。
5.2 TIME类型
TIME类型用于则表示时间值,它的表明形式通常为HH:MM:SS,其中,HH则表示小时, MM则表示分后,SS则表示秒。在MySQL中,可以使用以下3种格式指定TIME类型的值。
1、以’D HH:MM:SS’字符串格式则表示。其中,D则表示日可取0—34之间的值, 插人数据时,小时的值等同于(DX24+HH)。例如,输入’2 11:30:50’插人数据库中的日期为59:30:50。
2、以’HHMMSS’字符串格式或者HHMMSS数字格式则表示。 比如,输人’115454’或115454,填入数据库中的日期为11:54:54
3、采用CURRENT_TIME或NOW()输人当前系统时间。
5.3 DATETIME类型
DATETIME类型用于则表示日期和时间,它的表明形式为’YYYY-MM-DD HH: MM:SS’,其中,YYYY则表示年,MM表示月,DD表示日,HH则表示小时,MM则表示分,SS 则表示秒。在MySQL中,可以使用以下4种格式指定DATETIME类型的值。
以’YYYY-MM-DD HH:MM:SS’或者’YYYYMMDDHHMMSS’字符串格式则表示的日期和时间,值域范围为’1000-01-01 00:00:00’—‘9999-12-3 23:59:59’。比如,赢人’2019-01-22 09:01:23’或 ‘20140122_0_90123’插人数据库中的 DATETIME 值都为 2019-01-22 09:01:23。
1、以’YY-MM-DD HH:MM:SS’或者’YYMMDDHHMMSS’字符串格式表示的日期和时间,其中YY则表示年,值域范围为’00’—‘99’。与DATE类型中的YY相同,‘00’— '69’范围的值会被切换为2000—2069范围的值,‘70’—'99’范围的值会被切换为1970—1999范围的值。
2、以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式则表示的日期 和时间。例如,插入20190122090123或者190122090123,插人数据库中的DATETIME值都 为 2019-01-22 09:01:23。
3、使用NOW来输人当前系统的日期和时间。
5.4 TIMESTAMP类型
TIMESTAMP类型用作表示日期和时间,它的显示形式与DATETIME相同但值域范围比DATETIME小。在此,了解几种TIMESTAMP类型与DATATIME类型相同的形式:
1、使用CURRENT_TIMESTAMP输人系统当前日期和时间。
2、输人NULL时系统会输人系统当前日期和时间。
3、并无任何输人时系统可以输入系统当前日期和时间。
6.二进制类型
在MySQL中常用BLOB存储二进制类型的数据,比如:图片、PDF文档等。BLOB类型分成如下四种:
数据类型 | 储存范围 |
---|---|
TINYBLOB | 0~255字节 |
BLOB | 0~65535字节 |
MEDIUMBLOB | 0~16777215字节 |
LONGBLOB | 0~4294967295字节 |