应用MySQL数据库存储数据时,不同的数据类型决定了 MySQL存储数据形式的不同。为此,MySQL数据库提供了多种数据类型,其中包含整数类型、浮点数类型、定点 数类型、日期和工夫类型、字符串类型、二进制…等等数据类型。MySQL装置请参考:http://anzhuang.runbulls.com/
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字节