关于mysql:MySQL数据库的数据类型

39次阅读

共计 3490 个字符,预计需要花费 9 分钟才能阅读完成。

应用 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 字节

正文完
 0